summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTING.md86
-rw-r--r--application-deploy-plugin/src/main/java/com/yahoo/cloud/config/deploy/plugin/mojo/ApplicationDeployMojo.java1
-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.java2
-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.java1
-rw-r--r--application-model/src/main/java/com/yahoo/vespa/applicationmodel/ConfigId.java1
-rw-r--r--application-model/src/main/java/com/yahoo/vespa/applicationmodel/HostName.java1
-rw-r--r--application-model/src/main/java/com/yahoo/vespa/applicationmodel/ServiceCluster.java2
-rw-r--r--application-model/src/main/java/com/yahoo/vespa/applicationmodel/ServiceClusterKey.java1
-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/ServiceType.java1
-rw-r--r--application-model/src/main/java/com/yahoo/vespa/applicationmodel/TenantId.java2
-rw-r--r--application-preprocessor/src/main/java/com/yahoo/application/preprocessor/ApplicationPreprocessor.java5
-rw-r--r--application/pom.xml12
-rw-r--r--application/src/main/java/com/yahoo/application/Application.java5
-rw-r--r--application/src/main/java/com/yahoo/application/ApplicationBuilder.java4
-rw-r--r--application/src/main/java/com/yahoo/application/Networking.java6
-rw-r--r--application/src/main/java/com/yahoo/application/container/ApplicationException.java3
-rw-r--r--application/src/main/java/com/yahoo/application/container/DocumentProcessing.java3
-rw-r--r--application/src/main/java/com/yahoo/application/container/JDisc.java5
-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.java5
-rw-r--r--application/src/main/java/com/yahoo/application/container/handler/Headers.java9
-rw-r--r--application/src/main/java/com/yahoo/application/container/handler/Response.java5
-rw-r--r--application/src/main/java/com/yahoo/application/content/ContentCluster.java3
-rw-r--r--application/src/test/java/com/yahoo/application/ApplicationFacade.java1
-rw-r--r--application/src/test/java/com/yahoo/application/container/JDiscContainerDocprocTest.java1
-rw-r--r--application/src/test/java/com/yahoo/application/container/JDiscContainerProcessingTest.java2
-rw-r--r--application/src/test/java/com/yahoo/application/container/MockClient.java3
-rw-r--r--application/src/test/java/com/yahoo/application/container/MockServer.java3
-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/handlers/DelayedThrowingInWriteRequestHandler.java4
-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/HeaderEchoRequestHandler.java4
-rw-r--r--application/src/test/java/com/yahoo/application/container/handlers/MockHttpHandler.java3
-rw-r--r--application/src/test/java/com/yahoo/application/container/handlers/ThrowingInWriteRequestHandler.java4
-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/renderers/MockRenderer.java3
-rw-r--r--application/src/test/java/com/yahoo/application/container/searchers/MockSearcher.java1
-rw-r--r--chain/src/main/java/com/yahoo/component/chain/Chain.java2
-rw-r--r--chain/src/main/java/com/yahoo/component/chain/ChainedComponent.java2
-rw-r--r--chain/src/main/java/com/yahoo/component/chain/ChainsConfigurer.java1
-rw-r--r--chain/src/main/java/com/yahoo/component/chain/Phase.java4
-rw-r--r--chain/src/main/java/com/yahoo/component/chain/dependencies/After.java6
-rw-r--r--chain/src/main/java/com/yahoo/component/chain/dependencies/Before.java6
-rw-r--r--chain/src/main/java/com/yahoo/component/chain/dependencies/Dependencies.java2
-rw-r--r--chain/src/main/java/com/yahoo/component/chain/dependencies/Provides.java6
-rw-r--r--chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/ChainBuilder.java4
-rw-r--r--chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/ComponentNameProvider.java2
-rw-r--r--chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/ComponentNode.java4
-rw-r--r--chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/ConflictingNodeTypeException.java2
-rw-r--r--chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/CycleDependenciesException.java4
-rw-r--r--chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/NameProvider.java4
-rw-r--r--chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/Node.java2
-rw-r--r--chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/OrderedReadyNodes.java7
-rw-r--r--chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/PhaseNameProvider.java4
-rw-r--r--chain/src/main/java/com/yahoo/component/chain/model/ChainSpecification.java3
-rw-r--r--chain/src/main/java/com/yahoo/component/chain/model/ChainedComponentModel.java4
-rw-r--r--chain/src/main/java/com/yahoo/component/chain/model/ChainsModel.java2
-rw-r--r--chain/src/main/java/com/yahoo/component/chain/model/ChainsModelBuilder.java2
-rw-r--r--chain/src/main/java/com/yahoo/component/chain/model/ComponentAdaptor.java2
-rw-r--r--chain/src/main/java/com/yahoo/component/chain/model/Resolver.java4
-rw-r--r--chain/src/test/java/com/yahoo/component/chain/dependencies/ordering/ChainBuilderTest.java3
-rw-r--r--chain/src/test/java/com/yahoo/component/chain/dependencies/ordering/OrderedReadyNodesTest.java5
-rw-r--r--chain/src/test/java/com/yahoo/component/chain/model/ChainsModelBuilderTest.java2
-rw-r--r--clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterController.java1
-rw-r--r--clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterControllerClusterConfigurer.java1
-rw-r--r--clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/DummyZooKeeperProvider.java3
-rw-r--r--clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StandaloneZooKeeperProvider.java5
-rw-r--r--clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StateRestApiV2Handler.java1
-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/apps/clustercontroller/ZooKeeperProvider.java3
-rw-r--r--clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterControllerClusterConfigurerTest.java1
-rw-r--r--clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterControllerTest.java1
-rw-r--r--clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StateRestApiV2HandlerTest.java1
-rw-r--r--clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StatusHandlerTest.java1
-rw-r--r--clustercontroller-apputil/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/ApacheAsyncHttpClient.java4
-rw-r--r--clustercontroller-apputil/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/ApacheHttpInstance.java2
-rw-r--r--clustercontroller-apputil/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscHttpRequestHandler.java3
-rw-r--r--clustercontroller-apputil/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscMetricWrapper.java2
-rw-r--r--clustercontroller-apputil/src/test/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscMetricWrapperTest.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/DeploymentSpec.java44
-rw-r--r--config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecTest.java7
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/ConfigServerContainerModelBuilder.java3
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java6
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/tenant/Tenants.java6
-rw-r--r--container-dev/pom.xml22
-rw-r--r--container-search/pom.xml3
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java1
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/Hit.java14
-rw-r--r--pom.xml11
-rw-r--r--searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp12
-rw-r--r--searchcore/src/tests/proton/matching/matching_test.cpp6
-rw-r--r--searchcore/src/tests/proton/reference/gid_to_lid_change_handler/gid_to_lid_change_handler_test.cpp157
-rw-r--r--searchcore/src/tests/proton/reference/gid_to_lid_change_listener/gid_to_lid_change_listener_test.cpp10
-rw-r--r--searchcore/src/tests/proton/reference/gid_to_lid_change_registrator/gid_to_lid_change_registrator_test.cpp3
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/match_thread.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_handler.cpp110
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_handler.h24
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_listener.cpp14
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_listener.h3
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/i_gid_to_lid_change_handler.h9
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/i_gid_to_lid_change_listener.h3
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.cpp16
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.h4
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp18
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h4
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/mock_gid_to_lid_change_handler.h4
-rw-r--r--searchlib/src/tests/attribute/reference_attribute/reference_attribute_test.cpp27
-rw-r--r--searchlib/src/tests/hitcollector/hitcollector_test.cpp10
-rw-r--r--searchlib/src/vespa/searchlib/attribute/reference_attribute.cpp15
-rw-r--r--searchlib/src/vespa/searchlib/attribute/reference_attribute.h3
-rw-r--r--searchlib/src/vespa/searchlib/attribute/reference_mappings.cpp16
-rw-r--r--searchlib/src/vespa/searchlib/attribute/reference_mappings.h3
-rw-r--r--searchlib/src/vespa/searchlib/common/hitrank.h3
-rw-r--r--searchlib/src/vespa/searchlib/common/rankedhit.h4
-rw-r--r--searchlib/src/vespa/searchlib/common/resultset.cpp6
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/hitcollector.cpp4
-rw-r--r--vespajlib/src/main/java/com/yahoo/collections/ByteArrayComparator.java10
-rw-r--r--vespamalloc/src/tests/allocfree/CMakeLists.txt2
-rwxr-xr-xvespamalloc/src/tests/allocfree/allocfree_test.sh2
-rw-r--r--vespamalloc/src/tests/doubledelete/CMakeLists.txt2
-rwxr-xr-xvespamalloc/src/tests/doubledelete/doubledelete_test.sh2
-rw-r--r--vespamalloc/src/tests/overwrite/CMakeLists.txt2
-rwxr-xr-xvespamalloc/src/tests/overwrite/overwrite_test.sh8
-rw-r--r--vespamalloc/src/tests/stacktrace/CMakeLists.txt2
-rw-r--r--vespamalloc/src/tests/thread/CMakeLists.txt2
-rwxr-xr-xvespamalloc/src/tests/thread/thread_test.sh2
-rw-r--r--vespamalloc/src/vespamalloc/CMakeLists.txt8
135 files changed, 586 insertions, 401 deletions
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index ddc316e5b9c..487d7fb8522 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,60 +1,42 @@
# Contributing to Vespa
-We appreciate contributions to Vespa!
-Below is a quick how-to.
-
-
-## Reporting issues
-Reporting a problem is a valuable contribution.
-Use [GitHub issues](https://github.com/vespa-engine/vespa/issues) to report bugs.
-Issues are evaluated daily.
-If you read this, you are probably a developer who knows how to write good bug reports -
-make it easy to for others to reproduce the problem (include a test case!),
-include the Vespa version,
-and make it easy for others to understand the importance of the problem.
-
-
-## Check the ToDo list
-Future features are kept on the [ToDo list](TODO.md) -
-minor fixes better reported and tracked in [issues](https://github.com/vespa-engine/vespa/issues).
-
+Contributions to [Vespa](http://github.com/vespa-engine/vespa)
+and the [Vespa documentation](http://github.com/vespa-engine/documentation)
+are welcome.
+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 Travis build](https://travis-ci.org/vespa-engine/vespa)
+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.
+
+All pull requests are reviewed by a member of the
+[Vespa committers](https://github.com/orgs/vespa-engine/teams/vespa/members) team, regardless
+of who made it. If you want to become a committer, making some quality contributions is the way to start.
## Versioning
-Vespa uses semantic versioning,
-read [this guide](http://docs.vespa.ai/documentation/vespa-versions.html) to understand
-deprecations and changes to APIs and stored data across releases.
-Vespa releases more often than weekly, and the team does not write release notes or a changelog -
-instead, track issues labeled _Feature_.
+Vespa uses semantic versioning - see
+[vespa versions](http://docs.vespa.ai/documentation/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
+(but can be marked deprecated).
+## 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.
-## Build custom plugins
-Vespa has great support for custom plugins -
-you will often find that the best way to implement your application is by writing a plugin -
-refer to the [APIs](http://docs.vespa.ai/documentation/api.html).
-
-
-## Where to start contributing
-Most features plug into the [Vespa Container](docs.vespa.ai/documentation/jdisc/index.html) -
-this is the most likely place to write enhancements.
-Discuss with the community if others have similar feature requests - make the feature generic.
+There is also a [ToDo list](TODO.md) for larger things which nobody are working on yet.
### Getting started
See [README](README.md) for how to build and test Vespa.
-<!-- Do we have a link to code conventions - or just use below? -->
-Java coding guidelines:
-* 4 spaces indent <!-- Line width? -->
-* Use Java coding standards
-* No wildcard imports
-
-### Pull requests
-The Vespa Team evaluates pull requests as fast as we can.
-File an issue that you can refer to in the pull request -
-The issue can be valid even though a pull request will not be merged.
-Also add `Closes #XXX` or `Fixes #XXX` in commits - this will auto-close the issue.
-The Vespa Team work on the master branch, and does not have branches for other major versions -
-the current major version is the only active.
-Submit unit tests with the changes and [update documentation](https://github.com/vespa-engine/documentation).
-<!-- Do we need a Signed-off-by: Joe Smith <joe.smith@email.com> -->
-
-
-## Community
-List here - Slack channel?
+
+Vespa is large and getting an overview of the code can be a challenge.
+It may help to read 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. \ No newline at end of file
diff --git a/application-deploy-plugin/src/main/java/com/yahoo/cloud/config/deploy/plugin/mojo/ApplicationDeployMojo.java b/application-deploy-plugin/src/main/java/com/yahoo/cloud/config/deploy/plugin/mojo/ApplicationDeployMojo.java
index c001a935f5e..dc72f99eafd 100644
--- a/application-deploy-plugin/src/main/java/com/yahoo/cloud/config/deploy/plugin/mojo/ApplicationDeployMojo.java
+++ b/application-deploy-plugin/src/main/java/com/yahoo/cloud/config/deploy/plugin/mojo/ApplicationDeployMojo.java
@@ -17,7 +17,6 @@ import org.json.*;
/**
* @author hmusum
- * @since 5.1.22
*/
@org.apache.maven.plugins.annotations.Mojo(name = "deploy", defaultPhase = LifecyclePhase.GENERATE_SOURCES)
public class ApplicationDeployMojo extends AbstractMojo {
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 aa8f551d5b8..d2796f600c6 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
@@ -10,6 +10,7 @@ import java.util.Set;
* @author bjorncs
*/
public class ApplicationInstance<STATUS> {
+
private final TenantId tenantId;
private final ApplicationInstanceId applicationInstanceId;
private final Set<ServiceCluster<STATUS>> serviceClusters;
@@ -63,4 +64,5 @@ public class ApplicationInstance<STATUS> {
", serviceClusters=" + serviceClusters +
'}';
}
+
}
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 b468b3dbd8c..df19f6cf275 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
@@ -10,6 +10,7 @@ import java.util.Objects;
*/
// TODO: Remove this and use ApplicationName/InstanceName instead (if you need it for the JSON stuff move it to that layer and don't let it leak)
public class ApplicationInstanceId {
+
private final String id;
public ApplicationInstanceId(String id) {
@@ -41,4 +42,5 @@ public class ApplicationInstanceId {
public int hashCode() {
return Objects.hash(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 d86bcb66014..e761e14caa4 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
@@ -11,6 +11,7 @@ import java.util.Objects;
*/
// TODO: Remove this and use ApplicationId instead (if you need it for the JSON stuff move it to that layer and don't let it leak)
public class ApplicationInstanceReference {
+
private final TenantId tenantId;
private final ApplicationInstanceId applicationInstanceId;
@@ -54,4 +55,5 @@ public class ApplicationInstanceReference {
public int hashCode() {
return Objects.hash(tenantId, applicationInstanceId);
}
+
}
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 91b326b1787..da5ea7f975d 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
@@ -41,4 +41,5 @@ public class ClusterId {
public int hashCode() {
return Objects.hash(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 c4eb531de73..3a9db7b84c0 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
@@ -40,4 +40,5 @@ public class ConfigId {
public int hashCode() {
return Objects.hash(id);
}
+
}
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 b5cb1518f3a..66e79917ccf 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
@@ -46,4 +46,5 @@ public class HostName implements Comparable<HostName> {
public int compareTo(HostName o) {
return id.compareTo(o.id);
}
+
}
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 ee9ed11f9a4..84d1b44bbf2 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
@@ -12,6 +12,7 @@ import java.util.Set;
* @author bjorncs
*/
public class ServiceCluster<STATUS> {
+
private final ClusterId clusterId;
private final ServiceType serviceType;
private final Set<ServiceInstance<STATUS>> serviceInstances;
@@ -60,4 +61,5 @@ public class ServiceCluster<STATUS> {
public int hashCode() {
return Objects.hash(clusterId, serviceType, serviceInstances);
}
+
}
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 09208fab82c..843cbdd775b 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
@@ -50,4 +50,5 @@ public class ServiceClusterKey {
public int hashCode() {
return Objects.hash(clusterId, serviceType);
}
+
}
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 73e09476abc..cb3e6f5e077 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
@@ -9,6 +9,7 @@ import java.util.Objects;
* @author bjorncs
*/
public class ServiceInstance<STATUS> {
+
private final ConfigId configId;
private final HostName hostName;
private final STATUS serviceStatus;
@@ -57,4 +58,5 @@ public class ServiceInstance<STATUS> {
public int hashCode() {
return Objects.hash(configId, hostName, serviceStatus);
}
+
}
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 cf867a893e6..784ff9d1e38 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
@@ -41,4 +41,5 @@ public class ServiceType {
public int hashCode() {
return Objects.hash(id);
}
+
}
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 31a34dc9d1b..ba9d6251569 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
@@ -10,6 +10,7 @@ import java.util.Objects;
*/
// TODO: Remove this and use TenantName instead (if you need it for the JSON stuff move it to that layer and don't let it leak)
public class TenantId {
+
private final String id;
public TenantId(String id) {
@@ -41,4 +42,5 @@ public class TenantId {
public int hashCode() {
return Objects.hash(id);
}
+
}
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 5689b6ab1bc..e879acef3bb 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
@@ -18,10 +18,10 @@ import java.util.Optional;
/**
* Main entry for preprocessing an application package.
*
- * @author lulf
- * @since 5.25
+ * @author Ulf Lilleengen
*/
public class ApplicationPreprocessor {
+
private final File applicationDir;
private final Optional<File> outputDir;
private final Optional<Environment> environment;
@@ -65,4 +65,5 @@ public class ApplicationPreprocessor {
System.exit(1);
}
}
+
}
diff --git a/application/pom.xml b/application/pom.xml
index 2d9096e49f1..3fd9e8054e7 100644
--- a/application/pom.xml
+++ b/application/pom.xml
@@ -75,18 +75,6 @@
<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.
- These dependencies are explicitly excluded (or set to non-compile scope) in the container-dev module. -->
- <dependency>
- <groupId>org.antlr</groupId>
- <artifactId>antlr-runtime</artifactId>
- </dependency>
- <dependency>
- <groupId>org.antlr</groupId>
- <artifactId>antlr4-runtime</artifactId>
- </dependency>
</dependencies>
<build>
diff --git a/application/src/main/java/com/yahoo/application/Application.java b/application/src/main/java/com/yahoo/application/Application.java
index bb29ff05fb8..88140873b7b 100644
--- a/application/src/main/java/com/yahoo/application/Application.java
+++ b/application/src/main/java/com/yahoo/application/Application.java
@@ -35,10 +35,10 @@ import java.util.*;
/**
* Contains one or more containers built from services.xml.
* Other services present in the services.xml file might be mocked in future versions.
- * <p>
+ *
* Currently, only a single top level JDisc Container is allowed. Other clusters are ignored.
*
- * @author tonytv
+ * @author Tony Vaagenes
*/
@Beta
public final class Application implements AutoCloseable {
@@ -666,4 +666,5 @@ public final class Application implements AutoCloseable {
}
}
}
+
}
diff --git a/application/src/main/java/com/yahoo/application/ApplicationBuilder.java b/application/src/main/java/com/yahoo/application/ApplicationBuilder.java
index 1d288759d23..9d7cf2c8673 100644
--- a/application/src/main/java/com/yahoo/application/ApplicationBuilder.java
+++ b/application/src/main/java/com/yahoo/application/ApplicationBuilder.java
@@ -15,10 +15,11 @@ import static java.nio.file.Files.createTempDirectory;
/**
* Builds an application package on disk and returns a path to the result.
*
- * @author tonytv
+ * @author Tony Vaagenes
*/
@Beta
public class ApplicationBuilder {
+
private Path applicationDir = createTempDirectory("application");
private Networking networking = Networking.disable;
@@ -93,4 +94,5 @@ public class ApplicationBuilder {
Path getPath() {
return applicationDir;
}
+
}
diff --git a/application/src/main/java/com/yahoo/application/Networking.java b/application/src/main/java/com/yahoo/application/Networking.java
index b23d2e58456..8dd77c6b0f6 100644
--- a/application/src/main/java/com/yahoo/application/Networking.java
+++ b/application/src/main/java/com/yahoo/application/Networking.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.
package com.yahoo.application;
-import com.google.common.annotations.Beta;
-
/**
- * @author tonytv
+ * @author Tony Vaagenes
*/
public enum Networking {
+
enable,
disable
+
}
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 d3e4100cfef..424c66313a7 100644
--- a/application/src/main/java/com/yahoo/application/container/ApplicationException.java
+++ b/application/src/main/java/com/yahoo/application/container/ApplicationException.java
@@ -5,10 +5,11 @@ package com.yahoo.application.container;
* Wraps an Exception in a RuntimeException, for user convenience.
*
* @author gjoranv
- * @since 5.1.15
*/
class ApplicationException extends RuntimeException {
+
ApplicationException(Exception e) {
super(e);
}
+
}
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 2cf46c43d06..8e9180f00c7 100644
--- a/application/src/main/java/com/yahoo/application/container/DocumentProcessing.java
+++ b/application/src/main/java/com/yahoo/application/container/DocumentProcessing.java
@@ -20,10 +20,11 @@ import java.util.Map;
/**
* For doing document processing with {@link JDisc}.
*
- * @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a>
+ * @author Einar M R Rosenvinge
*/
@Beta
public final class DocumentProcessing {
+
private final DocumentProcessingHandler handler;
private final Map<String, DocumentType> documentTypes;
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 6cf98072232..ed0c29a3917 100644
--- a/application/src/main/java/com/yahoo/application/container/JDisc.java
+++ b/application/src/main/java/com/yahoo/application/container/JDisc.java
@@ -28,10 +28,9 @@ import java.nio.file.Path;
/**
* A JDisc Container configured from XML.
*
- * @author tonytv
- * @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a>
+ * @author Tony Vaagenes
+ * @author Einar M R Rosenvinge
* @author gjoranv
- * @since 5.1.15
*/
@Beta
public final class JDisc implements AutoCloseable {
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 5fc9abce8fe..f0ee3cdd1b9 100644
--- a/application/src/main/java/com/yahoo/application/container/Processing.java
+++ b/application/src/main/java/com/yahoo/application/container/Processing.java
@@ -17,7 +17,7 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
/**
- * @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a>
+ * @author Einar M R Rosenvinge
* @author gjoranv
*/
@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 14ba6eb394e..f1505e4429a 100644
--- a/application/src/main/java/com/yahoo/application/container/ProcessingBase.java
+++ b/application/src/main/java/com/yahoo/application/container/ProcessingBase.java
@@ -19,7 +19,6 @@ import java.util.concurrent.Executors;
/**
* @author gjoranv
- * @since 5.1.15
*/
@Beta
public abstract class ProcessingBase<
@@ -27,6 +26,7 @@ public abstract class ProcessingBase<
RESPONSE extends Response,
PROCESSOR extends Processor>
{
+
/**
* Returns a registry of configured chains.
*
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 ba241c70b5b..9503ce4fb50 100644
--- a/application/src/main/java/com/yahoo/application/container/Search.java
+++ b/application/src/main/java/com/yahoo/application/container/Search.java
@@ -18,7 +18,7 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
/**
- * @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a>
+ * @author Einar M R Rosenvinge
* @author gjoranv
*/
@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 1d64d2df2a9..c5ca67d4428 100644
--- a/application/src/main/java/com/yahoo/application/container/SynchronousRequestResponseHandler.java
+++ b/application/src/main/java/com/yahoo/application/container/SynchronousRequestResponseHandler.java
@@ -20,7 +20,7 @@ import java.util.Map;
import java.util.concurrent.CountDownLatch;
/**
- * @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a>
+ * @author Einar M R Rosenvinge
*/
@ThreadSafe
@Beta
@@ -156,6 +156,7 @@ final class SynchronousRequestResponseHandler {
}
private static class BlockingCompletionHandler implements CompletionHandler {
+
private volatile Throwable throwable;
private CountDownLatch doneLatch = new CountDownLatch(1);
@@ -184,5 +185,7 @@ final class SynchronousRequestResponseHandler {
}
}
}
+
}
+
}
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 8c49d36c078..cb4ebc3d8b9 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
@@ -15,8 +15,8 @@ import java.util.Set;
*
* @see Request
* @see Response
- * @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a>
- * @author <a href="mailto:simon@yahoo-inc.com">Simon Thoresen</a>
+ * @author Einar M R Rosenvinge
+ * @author Simon Thoresen
*/
@NotThreadSafe
@Beta
@@ -99,10 +99,6 @@ public class Headers implements Map<String, List<String>> {
}
- /*
- CONVENIENCE METHODS:
- */
-
/**
* <p>Convenience method for checking whether or not a named header contains a specific value. If the named header
* is not set, or if the given value is not contained within that header's value list, this method returns
@@ -223,4 +219,5 @@ public class Headers implements Map<String, List<String>> {
public List<Entry<String, String>> entries() {
return h.entries();
}
+
}
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 6502cfe6da2..35d42e3e147 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
@@ -17,13 +17,13 @@ import java.util.regex.Pattern;
/**
* A response for use with {@link com.yahoo.application.container.JDisc#handleRequest(Request)}.
*
- * @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a>
- * @since 5.1.15
+ * @author Einar M R Rosenvinge
* @see Request
*/
@Immutable
@Beta
public class Response {
+
private final static Pattern charsetPattern = Pattern.compile("charset=([^\\s\\;]+)", Pattern.CASE_INSENSITIVE);
private final int status;
private final Headers headers = new Headers();
@@ -122,4 +122,5 @@ public class Response {
}
return Utf8.getCharset();
}
+
}
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 f68e329c12f..93c83f3b323 100644
--- a/application/src/main/java/com/yahoo/application/content/ContentCluster.java
+++ b/application/src/main/java/com/yahoo/application/content/ContentCluster.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.
package com.yahoo.application.content;
+import com.google.common.annotations.Beta;
+
import java.nio.file.Path;
import java.util.Collections;
import java.util.List;
@@ -8,6 +10,7 @@ import java.util.List;
/**
* @author bratseth
*/
+@Beta
public class ContentCluster {
/**
diff --git a/application/src/test/java/com/yahoo/application/ApplicationFacade.java b/application/src/test/java/com/yahoo/application/ApplicationFacade.java
index 65f36b0804f..744ebb138c9 100644
--- a/application/src/test/java/com/yahoo/application/ApplicationFacade.java
+++ b/application/src/test/java/com/yahoo/application/ApplicationFacade.java
@@ -158,4 +158,5 @@ public class ApplicationFacade implements AutoCloseable {
public void close() {
application.close();
}
+
}
diff --git a/application/src/test/java/com/yahoo/application/container/JDiscContainerDocprocTest.java b/application/src/test/java/com/yahoo/application/container/JDiscContainerDocprocTest.java
index 2ce11335894..2a363916fa3 100644
--- a/application/src/test/java/com/yahoo/application/container/JDiscContainerDocprocTest.java
+++ b/application/src/test/java/com/yahoo/application/container/JDiscContainerDocprocTest.java
@@ -150,4 +150,5 @@ public class JDiscContainerDocprocTest {
}
}
+
}
diff --git a/application/src/test/java/com/yahoo/application/container/JDiscContainerProcessingTest.java b/application/src/test/java/com/yahoo/application/container/JDiscContainerProcessingTest.java
index 134d7d64f20..4c8c7f1ce06 100644
--- a/application/src/test/java/com/yahoo/application/container/JDiscContainerProcessingTest.java
+++ b/application/src/test/java/com/yahoo/application/container/JDiscContainerProcessingTest.java
@@ -17,7 +17,7 @@ import static org.hamcrest.Matchers.containsString;
import static org.junit.Assert.assertThat;
/**
- * @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a>
+ * @author Einar M R Rosenvinge
*/
public class JDiscContainerProcessingTest {
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 5479f4db58e..6909b1059ff 100644
--- a/application/src/test/java/com/yahoo/application/container/MockClient.java
+++ b/application/src/test/java/com/yahoo/application/container/MockClient.java
@@ -11,10 +11,10 @@ import com.yahoo.jdisc.service.AbstractClientProvider;
import java.util.concurrent.atomic.AtomicInteger;
/**
- *
* @author Christian Andersen
*/
public class MockClient extends AbstractClientProvider {
+
private final AtomicInteger counter = new AtomicInteger();
@Override
@@ -40,4 +40,5 @@ public class MockClient extends AbstractClientProvider {
// Ignored
}
};
+
}
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 d8d7d927f7d..cdb320fd69e 100644
--- a/application/src/test/java/com/yahoo/application/container/MockServer.java
+++ b/application/src/test/java/com/yahoo/application/container/MockServer.java
@@ -5,10 +5,10 @@ import com.yahoo.jdisc.service.AbstractServerProvider;
import com.yahoo.jdisc.service.CurrentContainer;
/**
- *
* @author Christian Andersen
*/
public class MockServer extends AbstractServerProvider {
+
private boolean started = false;
public MockServer(CurrentContainer container) {
@@ -28,4 +28,5 @@ public class MockServer extends AbstractServerProvider {
public boolean isStarted() {
return started;
}
+
}
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 57e69e4d1b4..ca221fa5199 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
@@ -11,7 +11,7 @@ import com.yahoo.document.datatypes.StringFieldValue;
import java.util.concurrent.atomic.AtomicInteger;
/**
- * @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a>
+ * @author Einar M R Rosenvinge
*/
public class Rot13DocumentProcessor extends DocumentProcessor {
private static final String FIELD_NAME = "title";
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 2638bcfdfef..d99fc0c2b9a 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
@@ -13,8 +13,8 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
-* @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a>
-*/
+ * @author Einar M R Rosenvinge
+ */
public class DelayedThrowingInWriteRequestHandler extends AbstractRequestHandler {
private ExecutorService responseExecutor = Executors.newSingleThreadExecutor();
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 01cebc3a3e9..054a63fef66 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
@@ -2,7 +2,7 @@
package com.yahoo.application.container.handlers;
/**
- * @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a>
+ * @author Einar M R Rosenvinge
*/
public class DelayedWriteException extends RuntimeException {
}
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 7749902f25a..c47d0afdd02 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
@@ -12,8 +12,8 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
-* @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a>
-*/
+ * @author Einar M R Rosenvinge
+ */
public class HeaderEchoRequestHandler extends AbstractRequestHandler {
private ExecutorService responseExecutor = Executors.newSingleThreadExecutor();
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 3e2d5eab559..643205e9c57 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
@@ -11,10 +11,10 @@ import java.io.PrintStream;
import java.util.concurrent.Executor;
/**
- *
* @author Christian Andersen
*/
public class MockHttpHandler extends ThreadedHttpRequestHandler {
+
public MockHttpHandler(Executor executor) {
super(executor);
}
@@ -30,4 +30,5 @@ public class MockHttpHandler extends ThreadedHttpRequestHandler {
}
};
}
+
}
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 535dcca16dc..b1f0480adc7 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
@@ -11,9 +11,10 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
-* @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a>
+* @author Einar M R Rosenvinge
*/
public class ThrowingInWriteRequestHandler extends AbstractRequestHandler {
+
private ExecutorService responseExecutor = Executors.newSingleThreadExecutor();
@Override
@@ -50,4 +51,5 @@ public class ThrowingInWriteRequestHandler extends AbstractRequestHandler {
handler.completed();
}
}
+
}
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 3ec0eb63a48..22ce6652c87 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
@@ -2,7 +2,7 @@
package com.yahoo.application.container.handlers;
/**
- * @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a>
+ * @author Einar M R Rosenvinge
*/
public class WriteException extends RuntimeException {
}
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 8191fe4a2ee..99bb6c7b067 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
@@ -8,10 +8,10 @@ import java.io.IOException;
import java.io.Writer;
/**
- *
* @author Christian Andersen
*/
public class MockRenderer extends Renderer {
+
public MockRenderer() {
}
@@ -29,4 +29,5 @@ public class MockRenderer extends Renderer {
protected void render(Writer writer, Result result) throws IOException {
writer.write("<mock hits=\"" + result.hits().size() + "\" />");
}
+
}
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 867f3e52015..34913a1beb5 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
@@ -9,7 +9,6 @@ import com.yahoo.search.result.HitGroup;
import com.yahoo.search.searchchain.Execution;
/**
- *
* @author Christian Andersen
*/
public class MockSearcher extends Searcher {
diff --git a/chain/src/main/java/com/yahoo/component/chain/Chain.java b/chain/src/main/java/com/yahoo/component/chain/Chain.java
index 48ed39ba5da..1c628f3dfa4 100644
--- a/chain/src/main/java/com/yahoo/component/chain/Chain.java
+++ b/chain/src/main/java/com/yahoo/component/chain/Chain.java
@@ -13,7 +13,7 @@ import java.util.List;
/**
* An immutable ordered list of components
*
- * @author tonytv
+ * @author Tony Vaagenes
*/
public class Chain<COMPONENT extends ChainedComponent> {
diff --git a/chain/src/main/java/com/yahoo/component/chain/ChainedComponent.java b/chain/src/main/java/com/yahoo/component/chain/ChainedComponent.java
index c381cc6d591..7e0eb8b72ec 100644
--- a/chain/src/main/java/com/yahoo/component/chain/ChainedComponent.java
+++ b/chain/src/main/java/com/yahoo/component/chain/ChainedComponent.java
@@ -19,7 +19,7 @@ import java.util.List;
/**
* Component with dependencies.
*
- * @author tonytv
+ * @author Tony Vaagenes
*/
public abstract class ChainedComponent extends AbstractComponent {
diff --git a/chain/src/main/java/com/yahoo/component/chain/ChainsConfigurer.java b/chain/src/main/java/com/yahoo/component/chain/ChainsConfigurer.java
index c73dc7c16f2..969c1c7d66a 100644
--- a/chain/src/main/java/com/yahoo/component/chain/ChainsConfigurer.java
+++ b/chain/src/main/java/com/yahoo/component/chain/ChainsConfigurer.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.
package com.yahoo.component.chain;
-import com.yahoo.component.AbstractComponent;
import com.yahoo.component.ComponentSpecification;
import com.yahoo.component.chain.model.ChainSpecification;
import com.yahoo.component.chain.model.ChainedComponentModel;
diff --git a/chain/src/main/java/com/yahoo/component/chain/Phase.java b/chain/src/main/java/com/yahoo/component/chain/Phase.java
index a291f471737..4148bdc6258 100644
--- a/chain/src/main/java/com/yahoo/component/chain/Phase.java
+++ b/chain/src/main/java/com/yahoo/component/chain/Phase.java
@@ -10,10 +10,11 @@ import java.util.TreeSet;
/**
* Used for many to many constraints on searcher ordering.
*
- * @author tonytv
+ * @author Tony Vaagenes
*/
@Immutable
public class Phase {
+
public final Dependencies dependencies;
public Phase(String name, Set<String> before, Set<String> after) {
@@ -49,4 +50,5 @@ public class Phase {
Dependencies union = dependencies.union(phase.dependencies);
return new Phase(getName(), union.before(), union.after());
}
+
}
diff --git a/chain/src/main/java/com/yahoo/component/chain/dependencies/After.java b/chain/src/main/java/com/yahoo/component/chain/dependencies/After.java
index f510e8f4c8b..be10c82d2e1 100644
--- a/chain/src/main/java/com/yahoo/component/chain/dependencies/After.java
+++ b/chain/src/main/java/com/yahoo/component/chain/dependencies/After.java
@@ -10,11 +10,13 @@ import java.lang.annotation.*;
* See {@link com.yahoo.component.chain.dependencies.ordering.ChainBuilder}
* for dependency handling information.
*
- * @author tonytv
+ * @author Tony Vaagenes
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Inherited
public @interface After {
- public abstract String[] value() default {};
+
+ String[] value() default {};
+
}
diff --git a/chain/src/main/java/com/yahoo/component/chain/dependencies/Before.java b/chain/src/main/java/com/yahoo/component/chain/dependencies/Before.java
index 01ad8f6e563..4542140c574 100644
--- a/chain/src/main/java/com/yahoo/component/chain/dependencies/Before.java
+++ b/chain/src/main/java/com/yahoo/component/chain/dependencies/Before.java
@@ -10,11 +10,13 @@ import java.lang.annotation.*;
* See {@link com.yahoo.component.chain.dependencies.ordering.ChainBuilder}
* for dependency handling information.
*
- * @author tonytv
+ * @author Tony Vaagenes
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Inherited
public @interface Before {
- public abstract String[] value() default {};
+
+ String[] value() default {};
+
}
diff --git a/chain/src/main/java/com/yahoo/component/chain/dependencies/Dependencies.java b/chain/src/main/java/com/yahoo/component/chain/dependencies/Dependencies.java
index a817bbb5116..46ea3518656 100644
--- a/chain/src/main/java/com/yahoo/component/chain/dependencies/Dependencies.java
+++ b/chain/src/main/java/com/yahoo/component/chain/dependencies/Dependencies.java
@@ -9,7 +9,7 @@ import net.jcip.annotations.Immutable;
/**
* Constraints for ordering ChainedComponents in chains.
*
- * @author tonytv
+ * @author Tony Vaagenes
*/
@Immutable
public class Dependencies {
diff --git a/chain/src/main/java/com/yahoo/component/chain/dependencies/Provides.java b/chain/src/main/java/com/yahoo/component/chain/dependencies/Provides.java
index 23becf6b4a7..b014681c469 100644
--- a/chain/src/main/java/com/yahoo/component/chain/dependencies/Provides.java
+++ b/chain/src/main/java/com/yahoo/component/chain/dependencies/Provides.java
@@ -8,11 +8,13 @@ import java.lang.annotation.*;
* Other components can then mark themselves as "before" and "after" the string provided here,
* to impose constraints on ordering.
*
- * @author tonytv
+ * @author Tony Vaagenes
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Inherited
public @interface Provides {
- public abstract String[] value() default {};
+
+ String[] value() default {};
+
}
diff --git a/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/ChainBuilder.java b/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/ChainBuilder.java
index 637cacf2bb6..beafe7d2b98 100644
--- a/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/ChainBuilder.java
+++ b/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/ChainBuilder.java
@@ -31,9 +31,10 @@ import com.yahoo.component.chain.Phase;
* A warning will be logged if multiple components of different types provides the
* same name. A component can not provide the same name as a phase.
*
- * @author tonytv
+ * @author Tony Vaagenes
*/
public class ChainBuilder<T extends ChainedComponent> {
+
private final ComponentId id;
private int numComponents = 0;
private int priority = 1;
@@ -166,4 +167,5 @@ public class ChainBuilder<T extends ChainedComponent> {
}
return readyNodes;
}
+
}
diff --git a/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/ComponentNameProvider.java b/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/ComponentNameProvider.java
index 4c1eeff3c61..b9e8f56d15c 100644
--- a/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/ComponentNameProvider.java
+++ b/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/ComponentNameProvider.java
@@ -11,7 +11,7 @@ import com.yahoo.component.chain.ChainedComponent;
/**
* A set of components providing a given name.
*
- * @author tonytv
+ * @author Tony Vaagenes
*/
class ComponentNameProvider extends NameProvider {
diff --git a/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/ComponentNode.java b/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/ComponentNode.java
index e6a8b982ad8..2bc81542d52 100644
--- a/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/ComponentNode.java
+++ b/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/ComponentNode.java
@@ -7,9 +7,10 @@ import com.yahoo.component.chain.ChainedComponent;
* A node representing a given component.
*
* @see Node
- * @author tonytv
+ * @author Tony Vaagenes
*/
class ComponentNode<T extends ChainedComponent> extends Node {
+
private T component;
public ComponentNode(T component, int priority) {
@@ -31,5 +32,6 @@ class ComponentNode<T extends ChainedComponent> extends Node {
int classPriority() {
return 2;
}
+
}
diff --git a/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/ConflictingNodeTypeException.java b/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/ConflictingNodeTypeException.java
index a233f0cd79f..edf4a119e5c 100644
--- a/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/ConflictingNodeTypeException.java
+++ b/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/ConflictingNodeTypeException.java
@@ -4,7 +4,7 @@ package com.yahoo.component.chain.dependencies.ordering;
/**
* Thrown if a searcher provides the same name as a phase.
*
- * @author tonytv
+ * @author Tony Vaagenes
*/
@SuppressWarnings("serial")
public class ConflictingNodeTypeException extends RuntimeException {
diff --git a/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/CycleDependenciesException.java b/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/CycleDependenciesException.java
index fd05ab20b02..40a78030c41 100644
--- a/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/CycleDependenciesException.java
+++ b/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/CycleDependenciesException.java
@@ -10,10 +10,11 @@ import java.util.Set;
* representation of the cycle is available to help solve the problem (<a
* href="http://graphviz.org/">GraphViz</a>).
*
- * @author tonytv
+ * @author Tony Vaagenes
*/
@SuppressWarnings("serial")
public class CycleDependenciesException extends RuntimeException {
+
public Map<String, NameProvider> cycleNodes;
CycleDependenciesException(Map<String, NameProvider> cycleNodes) {
@@ -41,5 +42,4 @@ public class CycleDependenciesException extends RuntimeException {
return createDotString(cycleNodes);
}
-
}
diff --git a/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/NameProvider.java b/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/NameProvider.java
index 526e65146d9..773b6d07035 100644
--- a/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/NameProvider.java
+++ b/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/NameProvider.java
@@ -4,9 +4,10 @@ package com.yahoo.component.chain.dependencies.ordering;
/**
* A node containing nodes providing a given name.
*
- * @author tonytv
+ * @author Tony Vaagenes
*/
abstract class NameProvider extends Node {
+
final String name;
public NameProvider(String name, int priority) {
@@ -24,6 +25,7 @@ abstract class NameProvider extends Node {
protected String dotName() {
return name;
}
+
}
diff --git a/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/Node.java b/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/Node.java
index cb5b6a1cbff..da652fde614 100644
--- a/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/Node.java
+++ b/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/Node.java
@@ -17,7 +17,7 @@ import java.util.Set;
*
* Where name designates a NameProvider( either a phase or a set of searchers).
*
- * @author tonytv
+ * @author Tony Vaagenes
*/
abstract class Node {
//How this node should be prioritized if its compared with a node of the same class, see class priority.
diff --git a/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/OrderedReadyNodes.java b/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/OrderedReadyNodes.java
index a9650fe751b..7af863a37c3 100644
--- a/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/OrderedReadyNodes.java
+++ b/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/OrderedReadyNodes.java
@@ -8,9 +8,10 @@ import java.util.PriorityQueue;
/**
* Ensures that Searchers are ordered deterministically.
*
- * @author tonytv
+ * @author Tony Vaagenes
*/
class OrderedReadyNodes {
+
private class PriorityComparator implements Comparator<Node> {
@Override
public int compare(Node lhs, Node rhs) {
@@ -22,8 +23,7 @@ class OrderedReadyNodes {
}
}
- final private PriorityQueue<Node> nodes =
- new PriorityQueue<>(10, new PriorityComparator());
+ final private PriorityQueue<Node> nodes = new PriorityQueue<>(10, new PriorityComparator());
public void add(Node node) {
nodes.add(node);
@@ -36,4 +36,5 @@ class OrderedReadyNodes {
public boolean isEmpty() {
return nodes.isEmpty();
}
+
}
diff --git a/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/PhaseNameProvider.java b/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/PhaseNameProvider.java
index a44cbad4b2f..f99a9191150 100644
--- a/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/PhaseNameProvider.java
+++ b/chain/src/main/java/com/yahoo/component/chain/dependencies/ordering/PhaseNameProvider.java
@@ -4,9 +4,10 @@ package com.yahoo.component.chain.dependencies.ordering;
/**
* A phase providing a given name.
*
- * @author tonytv
+ * @author Tony Vaagenes
*/
class PhaseNameProvider extends NameProvider {
+
public PhaseNameProvider(String name, int priority) {
super(name,priority);
}
@@ -25,4 +26,5 @@ class PhaseNameProvider extends NameProvider {
int classPriority() {
return 0;
}
+
}
diff --git a/chain/src/main/java/com/yahoo/component/chain/model/ChainSpecification.java b/chain/src/main/java/com/yahoo/component/chain/model/ChainSpecification.java
index 2f6a03cbb87..eac76afa275 100644
--- a/chain/src/main/java/com/yahoo/component/chain/model/ChainSpecification.java
+++ b/chain/src/main/java/com/yahoo/component/chain/model/ChainSpecification.java
@@ -12,10 +12,11 @@ import java.util.*;
/**
* Specifies how the components should be selected to create a chain.
*
- * @author tonytv
+ * @author Tony Vaagenes
*/
@Immutable
public class ChainSpecification {
+
public static class Inheritance {
public final Set<ComponentSpecification> chainSpecifications;
public final Set<ComponentSpecification> excludedComponents;
diff --git a/chain/src/main/java/com/yahoo/component/chain/model/ChainedComponentModel.java b/chain/src/main/java/com/yahoo/component/chain/model/ChainedComponentModel.java
index bc728f0fdd1..cce51824942 100644
--- a/chain/src/main/java/com/yahoo/component/chain/model/ChainedComponentModel.java
+++ b/chain/src/main/java/com/yahoo/component/chain/model/ChainedComponentModel.java
@@ -9,8 +9,8 @@ import net.jcip.annotations.Immutable;
/**
* Describes how a chained component should be created.
*
- * @author <a href="mailto:arnebef@yahoo-inc.com">Arne Bergene Fossaa</a>
- * @author tonytv
+ * @author Arne Bergene Fossaa
+ * @author Tony Vaagenes
*/
@Immutable
public class ChainedComponentModel extends ComponentModel {
diff --git a/chain/src/main/java/com/yahoo/component/chain/model/ChainsModel.java b/chain/src/main/java/com/yahoo/component/chain/model/ChainsModel.java
index be0b124c383..08cb6b7ccfd 100644
--- a/chain/src/main/java/com/yahoo/component/chain/model/ChainsModel.java
+++ b/chain/src/main/java/com/yahoo/component/chain/model/ChainsModel.java
@@ -12,7 +12,7 @@ import com.yahoo.component.provider.ComponentRegistry;
/**
* A model of how the chains and components should be created.
*
- * @author tonytv
+ * @author Tony Vaagenes
*/
public class ChainsModel {
diff --git a/chain/src/main/java/com/yahoo/component/chain/model/ChainsModelBuilder.java b/chain/src/main/java/com/yahoo/component/chain/model/ChainsModelBuilder.java
index f7c771c1e60..5f9f2daa177 100644
--- a/chain/src/main/java/com/yahoo/component/chain/model/ChainsModelBuilder.java
+++ b/chain/src/main/java/com/yahoo/component/chain/model/ChainsModelBuilder.java
@@ -14,7 +14,7 @@ import com.yahoo.container.core.ChainsConfig;
/**
* Builds a chains model from config.
*
- * @author tonytv
+ * @author Tony Vaagenes
*/
public class ChainsModelBuilder {
diff --git a/chain/src/main/java/com/yahoo/component/chain/model/ComponentAdaptor.java b/chain/src/main/java/com/yahoo/component/chain/model/ComponentAdaptor.java
index 142af91f0fd..2961768a7de 100644
--- a/chain/src/main/java/com/yahoo/component/chain/model/ComponentAdaptor.java
+++ b/chain/src/main/java/com/yahoo/component/chain/model/ComponentAdaptor.java
@@ -7,7 +7,7 @@ import com.yahoo.component.ComponentId;
/**
* For using non-component model classes with ComponentRegistry.
*
- * @author tonytv
+ * @author Tony Vaagenes
*/
public final class ComponentAdaptor<T> extends AbstractComponent {
diff --git a/chain/src/main/java/com/yahoo/component/chain/model/Resolver.java b/chain/src/main/java/com/yahoo/component/chain/model/Resolver.java
index 5f6b3ce7905..15acff0db0b 100644
--- a/chain/src/main/java/com/yahoo/component/chain/model/Resolver.java
+++ b/chain/src/main/java/com/yahoo/component/chain/model/Resolver.java
@@ -6,8 +6,10 @@ import com.yahoo.component.ComponentSpecification;
/**
* Maps component specifications to matching instances.
*
- * @author tonytv
+ * @author Tony Vaagenes
*/
public interface Resolver<T> {
+
T resolve(ComponentSpecification componentSpecification);
+
}
diff --git a/chain/src/test/java/com/yahoo/component/chain/dependencies/ordering/ChainBuilderTest.java b/chain/src/test/java/com/yahoo/component/chain/dependencies/ordering/ChainBuilderTest.java
index 9d302174a47..7e74a732893 100644
--- a/chain/src/test/java/com/yahoo/component/chain/dependencies/ordering/ChainBuilderTest.java
+++ b/chain/src/test/java/com/yahoo/component/chain/dependencies/ordering/ChainBuilderTest.java
@@ -22,8 +22,7 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
/**
- * @author tonytv
- * @since 5.1.10
+ * @author Tony Vaagenes
*/
@SuppressWarnings({"rawtypes", "unchecked"})
public class ChainBuilderTest {
diff --git a/chain/src/test/java/com/yahoo/component/chain/dependencies/ordering/OrderedReadyNodesTest.java b/chain/src/test/java/com/yahoo/component/chain/dependencies/ordering/OrderedReadyNodesTest.java
index 8dde4ac3ea5..77729a99012 100644
--- a/chain/src/test/java/com/yahoo/component/chain/dependencies/ordering/OrderedReadyNodesTest.java
+++ b/chain/src/test/java/com/yahoo/component/chain/dependencies/ordering/OrderedReadyNodesTest.java
@@ -16,10 +16,12 @@ import com.yahoo.component.ComponentId;
/**
* Test for OrderedReadyNodes.
- * @author tonytv
+ *
+ * @author Tony Vaagenes
*/
@SuppressWarnings("rawtypes")
public class OrderedReadyNodesTest {
+
class ComponentA extends ChainedComponent {
public ComponentA(ComponentId id) {
super(id);
@@ -101,4 +103,5 @@ public class OrderedReadyNodesTest {
private Node pop() {
return readyNodes.pop();
}
+
}
diff --git a/chain/src/test/java/com/yahoo/component/chain/model/ChainsModelBuilderTest.java b/chain/src/test/java/com/yahoo/component/chain/model/ChainsModelBuilderTest.java
index a946d568704..2a22b5afbf7 100644
--- a/chain/src/test/java/com/yahoo/component/chain/model/ChainsModelBuilderTest.java
+++ b/chain/src/test/java/com/yahoo/component/chain/model/ChainsModelBuilderTest.java
@@ -17,7 +17,6 @@ import static org.junit.Assert.assertTrue;
/**
* @author gjoranv
- * @since 5.1.10
*/
public class ChainsModelBuilderTest {
@@ -69,4 +68,5 @@ public class ChainsModelBuilderTest {
getComponentsByName(Set<ComponentSpecification> componentSpecifications) {
return ChainSpecification.componentsByName(componentSpecifications);
}
+
}
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 06f3ecbf5e3..4bc09898361 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
@@ -104,4 +104,5 @@ public class ClusterController extends AbstractComponent
void shutdownController(FleetController controller) throws Exception {
controller.shutdown();
}
+
}
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 98c09bdd61a..0936f9d781a 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
@@ -98,4 +98,5 @@ public class ClusterControllerClusterConfigurer {
}
}
}
+
}
diff --git a/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/DummyZooKeeperProvider.java b/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/DummyZooKeeperProvider.java
index 320020ef6d4..f961297643e 100644
--- a/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/DummyZooKeeperProvider.java
+++ b/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/DummyZooKeeperProvider.java
@@ -4,8 +4,7 @@ package com.yahoo.vespa.clustercontroller.apps.clustercontroller;
/**
* A dummy zookeeper provider when we do not run our own zookeeper instance.
*
- * @author lulf
- * @since 5.26
+ * @author Ulf Lilleengen
*/
public class DummyZooKeeperProvider implements ZooKeeperProvider {
}
diff --git a/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StandaloneZooKeeperProvider.java b/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StandaloneZooKeeperProvider.java
index 1cc8155657f..cbb1eb41eac 100644
--- a/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StandaloneZooKeeperProvider.java
+++ b/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StandaloneZooKeeperProvider.java
@@ -6,10 +6,11 @@ import com.yahoo.vespa.zookeeper.ZooKeeperServer;
/**
* ZooKeeper provider that ensures we are running our own instance of zookeeper.
*
- * @author lulf
- * @since 5.26
+ * @author Ulf Lilleengen
*/
public class StandaloneZooKeeperProvider implements ZooKeeperProvider {
+
public StandaloneZooKeeperProvider(ZooKeeperServer server) {
}
+
}
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 cb0132c18d6..431fc797df6 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
@@ -62,4 +62,5 @@ public class StateRestApiV2Handler extends JDiscHttpRequestHandler {
}
return set;
}
+
}
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 16ac6bfcbe7..ae7c32e0f95 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
@@ -8,6 +8,7 @@ import com.yahoo.vespa.clustercontroller.apputil.communication.http.JDiscHttpReq
import java.util.concurrent.Executor;
public class StatusHandler extends JDiscHttpRequestHandler {
+
private final com.yahoo.vespa.clustercontroller.core.status.StatusHandler statusHandler;
@Inject
@@ -19,4 +20,5 @@ public class StatusHandler extends JDiscHttpRequestHandler {
super(handler, executor, accessLog);
this.statusHandler = handler;
}
+
}
diff --git a/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ZooKeeperProvider.java b/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ZooKeeperProvider.java
index 68baa5f0480..bb18bcc65d6 100644
--- a/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ZooKeeperProvider.java
+++ b/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ZooKeeperProvider.java
@@ -4,8 +4,7 @@ package com.yahoo.vespa.clustercontroller.apps.clustercontroller;
/**
* Abstraction we can depend on providing us with a zookeeper server being up.
*
- * @author lulf
- * @since 5.25
+ * @author Ulf Lilleengen
*/
public interface ZooKeeperProvider {
}
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 3316f05ce60..f437e6aa67d 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
@@ -79,4 +79,5 @@ public class ClusterControllerClusterConfigurerTest extends TestCase {
assertEquals("Must set zookeeper server with multiple fleetcontrollers", e.getMessage());
}
}
+
}
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 f026aa3f0ef..fcef483e7d7 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
@@ -13,6 +13,7 @@ import junit.framework.TestCase;
import java.util.Map;
public class ClusterControllerTest extends TestCase {
+
private FleetControllerOptions options = new FleetControllerOptions("storage");
private Metric metric = new Metric() {
@Override
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 25d6e1846da..524aba1398b 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
@@ -48,4 +48,5 @@ public class StateRestApiV2HandlerTest extends TestCase {
assertEquals(expected, mapping);
}
+
}
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 a904f46c2ae..66cb477e793 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
@@ -16,4 +16,5 @@ public class StatusHandlerTest extends TestCase {
StatusHandler handler = new StatusHandler(controller, executor, AccessLog.voidAccessLog());
executor.shutdown();
}
+
}
diff --git a/clustercontroller-apputil/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/ApacheAsyncHttpClient.java b/clustercontroller-apputil/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/ApacheAsyncHttpClient.java
index 89127b99d7c..11d746ef3ce 100644
--- a/clustercontroller-apputil/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/ApacheAsyncHttpClient.java
+++ b/clustercontroller-apputil/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/ApacheAsyncHttpClient.java
@@ -21,10 +21,13 @@ import java.util.logging.Logger;
* This class gets around these issues by creating one instance per unique setting, and ensuring only one request use a given instance at a time.
*/
public class ApacheAsyncHttpClient implements AsyncHttpClient<HttpResult> {
+
private static final Logger log = Logger.getLogger(ApacheAsyncHttpClient.class.getName());
+
public interface SyncHttpClientFactory {
SyncHttpClient createInstance(String proxyHost, int proxyPort, long timeoutMs);
}
+
public static class Settings {
String proxyHost;
int proxyPort;
@@ -176,4 +179,5 @@ public class ApacheAsyncHttpClient implements AsyncHttpClient<HttpResult> {
apacheInstances.clear();
}
}
+
}
diff --git a/clustercontroller-apputil/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/ApacheHttpInstance.java b/clustercontroller-apputil/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/ApacheHttpInstance.java
index 02195701243..3eafd2ae1d5 100644
--- a/clustercontroller-apputil/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/ApacheHttpInstance.java
+++ b/clustercontroller-apputil/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/ApacheHttpInstance.java
@@ -30,6 +30,7 @@ import org.apache.http.params.HttpParams;
* Synchronous http client using Apache commons.
*/
public class ApacheHttpInstance implements SyncHttpClient {
+
private static final Logger log = Logger.getLogger(ApacheHttpInstance.class.getName());
DefaultHttpClient client;
@@ -128,4 +129,5 @@ public class ApacheHttpInstance implements SyncHttpClient {
public void close() {
client.getConnectionManager().shutdown();
}
+
}
diff --git a/clustercontroller-apputil/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscHttpRequestHandler.java b/clustercontroller-apputil/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscHttpRequestHandler.java
index aa44845561e..1069bd79b4f 100644
--- a/clustercontroller-apputil/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscHttpRequestHandler.java
+++ b/clustercontroller-apputil/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscHttpRequestHandler.java
@@ -19,7 +19,7 @@ import java.util.logging.Logger;
/**
* Note. This class is tested through apache http instance test, using this as other endpoint.
- * @author humbe
+ * @author Haakon Humberset
* @author Harald Musum
* @author Vegard Sjonfjell
*/
@@ -124,4 +124,5 @@ public class JDiscHttpRequestHandler extends LoggingRequestHandler {
}
return headers;
}
+
}
diff --git a/clustercontroller-apputil/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscMetricWrapper.java b/clustercontroller-apputil/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscMetricWrapper.java
index 0f203dac3bf..559eaee4821 100644
--- a/clustercontroller-apputil/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscMetricWrapper.java
+++ b/clustercontroller-apputil/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscMetricWrapper.java
@@ -7,6 +7,7 @@ import com.yahoo.vespa.clustercontroller.utils.util.MetricReporter;
import java.util.logging.Logger;
public class JDiscMetricWrapper implements MetricReporter {
+
private final Object lock = new Object();
private Metric m;
@@ -47,4 +48,5 @@ public class JDiscMetricWrapper implements MetricReporter {
return new ContextWrapper(m.createContext(stringMap));
}
}
+
}
diff --git a/clustercontroller-apputil/src/test/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscMetricWrapperTest.java b/clustercontroller-apputil/src/test/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscMetricWrapperTest.java
index 278f6a9e1fa..13abfa0ecd5 100644
--- a/clustercontroller-apputil/src/test/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscMetricWrapperTest.java
+++ b/clustercontroller-apputil/src/test/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscMetricWrapperTest.java
@@ -10,6 +10,7 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class JDiscMetricWrapperTest {
+
class MetricImpl implements Metric {
int calls = 0;
@Override
@@ -41,4 +42,5 @@ public class JDiscMetricWrapperTest {
assertEquals(5, impl2.calls);
}
+
}
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 ba68404b7ca..72f19ed64b5 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
@@ -73,32 +73,23 @@ public class DeploymentSpec {
}
/** Throw an IllegalArgumentException if any production zone is declared multiple times */
- private static void validateZones(List<Step> steps) {
- // Collect both non-parallel and parallel zones
- List<DeclaredZone> zones = new ArrayList<>();
- steps.stream()
- .filter(step -> step instanceof DeclaredZone)
- .map(DeclaredZone.class::cast)
- .forEach(zones::add);
- steps.stream()
- .filter(step -> step instanceof ParallelZones)
- .map(ParallelZones.class::cast)
- .flatMap(parallelZones -> parallelZones.zones().stream())
- .forEach(zones::add);
-
-
- // Detect duplicates
- Set<DeclaredZone> unique = new HashSet<>();
- List<RegionName> duplicates = zones.stream()
- .filter(z -> z.environment() == Environment.prod && !unique.add(z))
- .map(z -> z.region().get())
- .collect(Collectors.toList());
- if (!duplicates.isEmpty()) {
- throw new IllegalArgumentException("All declared regions must be unique, but found these " +
- "duplicated regions: " + duplicates);
- }
+ private void validateZones(List<Step> steps) {
+ Set<DeclaredZone> zones = new HashSet<>();
+
+ steps.stream().filter(step -> step instanceof DeclaredZone)
+ .map(DeclaredZone.class::cast)
+ .forEach(zone -> ensureUnique(zone, zones));
+ steps.stream().filter(step -> step instanceof ParallelZones)
+ .map(ParallelZones.class::cast)
+ .flatMap(parallelZones -> parallelZones.zones().stream())
+ .forEach(zone -> ensureUnique(zone, zones));
}
+ private void ensureUnique(DeclaredZone zone, Set<DeclaredZone> zones) {
+ if ( ! zones.add(zone))
+ throw new IllegalArgumentException(zone + " is listed twice in deployment.xml");
+ }
+
/** Adds missing required steps and reorders steps to a permissible order */
private static List<Step> completeSteps(List<Step> steps) {
// Ensure no duplicate deployments to the same zone
@@ -399,6 +390,11 @@ public class DeploymentSpec {
if ( ! this.region.equals(other.region())) return false;
return true;
}
+
+ @Override
+ public String toString() {
+ return environment + ( region.isPresent() ? "." + region.get() : "");
+ }
}
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 2b503125e33..95f9963d6f4 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
@@ -265,10 +265,6 @@ public class DeploymentSpecTest {
" <region active='true'>us-central-1</region>\n" +
" <region active='true'>us-east-3</region>\n" +
" </parallel>\n" +
- " <parallel>\n" +
- " <region active='true'>eu-west-1</region>\n" +
- " <region active='true'>us-central-1</region>\n" +
- " </parallel>\n" +
" </prod>\n" +
"</deployment>"
);
@@ -276,8 +272,7 @@ public class DeploymentSpecTest {
DeploymentSpec.fromXml(r);
fail("Expected exception");
} catch (IllegalArgumentException e) {
- assertEquals("All declared regions must be unique, but found these duplicated regions: " +
- "[us-west-1, us-central-1]", e.getMessage());
+ assertEquals("prod.us-west-1 is listed twice in deployment.xml", e.getMessage());
}
}
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 6d4945f23ad..38e417aca9e 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
@@ -45,7 +45,7 @@ public abstract class AbstractService extends AbstractConfigProducer<AbstractCon
/** The optional PRELOAD libraries for this Service. */
// Please keep non-null, as passed to command line in service startup
- private String preload = Defaults.getDefaults().underVespaHome("lib64/vespa/malloc/libvespamalloc.so");
+ private String preload = Defaults.getDefaults().underVespaHome("lib64/vespa/malloc/libvespamallocd.so");
// If larger or equal to 0 it mean that explicit mmaps shall not be included in coredump.
private long mmapNoCoreLimit = -1l;
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 414cc56b1e3..c9cc51af867 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
@@ -19,8 +19,7 @@ import java.util.List;
/**
* Builds the config model for the standalone config server.
*
- * @author lulf
- * @since 5.16
+ * @author Ulf Lilleengen
*/
public class ConfigServerContainerModelBuilder extends ContainerModelBuilder {
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 63d5d37598b..98f599769c0 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
@@ -110,9 +110,9 @@ public class ModelProvisioningTest {
assertThat(model.getContainerClusters().get("mydisc").getContainers().get(0).getJvmArgs(), is(""));
assertThat(model.getContainerClusters().get("mydisc").getContainers().get(1).getJvmArgs(), is(""));
assertThat(model.getContainerClusters().get("mydisc").getContainers().get(2).getJvmArgs(), is(""));
- assertThat(model.getContainerClusters().get("mydisc").getContainers().get(0).getPreLoad(), is(getDefaults().underVespaHome("lib64/vespa/malloc/libvespamalloc.so")));
- assertThat(model.getContainerClusters().get("mydisc").getContainers().get(1).getPreLoad(), is(getDefaults().underVespaHome("lib64/vespa/malloc/libvespamalloc.so")));
- assertThat(model.getContainerClusters().get("mydisc").getContainers().get(2).getPreLoad(), is(getDefaults().underVespaHome("lib64/vespa/malloc/libvespamalloc.so")));
+ assertThat(model.getContainerClusters().get("mydisc").getContainers().get(0).getPreLoad(), is(getDefaults().underVespaHome("lib64/vespa/malloc/libvespamallocd.so")));
+ assertThat(model.getContainerClusters().get("mydisc").getContainers().get(1).getPreLoad(), is(getDefaults().underVespaHome("lib64/vespa/malloc/libvespamallocd.so")));
+ assertThat(model.getContainerClusters().get("mydisc").getContainers().get(2).getPreLoad(), is(getDefaults().underVespaHome("lib64/vespa/malloc/libvespamallocd.so")));
assertThat(model.getContainerClusters().get("mydisc").getMemoryPercentage(), is(Optional.empty()));
assertThat(model.getContainerClusters().get("mydisc2").getContainers().get(0).getJvmArgs(), is("-verbosegc"));
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/Tenants.java b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/Tenants.java
index 377b3997e43..70be29fa80d 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/Tenants.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/Tenants.java
@@ -51,14 +51,12 @@ import java.util.logging.Logger;
* @author Vegard Havdal
* @author Ulf Lilleengen
*/
-//TODO Rename to TenantRepository
+// TODO: Rename to TenantRepository
public class Tenants implements ConnectionStateListener, PathChildrenCacheListener {
public static final TenantName HOSTED_VESPA_TENANT = TenantName.from("hosted-vespa");
private static final TenantName DEFAULT_TENANT = TenantName.defaultName();
- private static final List<TenantName> SYSTEM_TENANT_NAMES = Arrays.asList(
- DEFAULT_TENANT,
- HOSTED_VESPA_TENANT);
+ private static final List<TenantName> SYSTEM_TENANT_NAMES = Arrays.asList(DEFAULT_TENANT, HOSTED_VESPA_TENANT);
private static final Path tenantsPath = Path.fromString("/config/v2/tenants/");
private static final Path vespaPath = Path.fromString("/vespa");
diff --git a/container-dev/pom.xml b/container-dev/pom.xml
index e858ba1c50b..7ac2eb03016 100644
--- a/container-dev/pom.xml
+++ b/container-dev/pom.xml
@@ -112,33 +112,11 @@
<groupId>com.yahoo.vespa</groupId>
<artifactId>container-search-and-docproc</artifactId>
<version>${project.version}</version>
- <exclusions>
- <exclusion>
- <groupId>org.antlr</groupId>
- <artifactId>antlr4-runtime</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>com.yahoo.vespa</groupId>
<artifactId>config-bundle</artifactId>
<version>${project.version}</version>
</dependency>
-
- <!-- Dependencies below are added explicitly to exclude transitive deps that are not provided runtime by the container,
- and hence make them invisible to user projects' build classpath.
- Excluded artifacts should be added explicitly to the application module to make then visible in users' test classpath. -->
- <dependency>
- <groupId>com.yahoo.vespa</groupId>
- <artifactId>predicate-search-core</artifactId>
- <version>${project.version}</version>
- <exclusions>
- <exclusion>
- <groupId>org.antlr</groupId>
- <artifactId>antlr-runtime</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
-
</dependencies>
</project>
diff --git a/container-search/pom.xml b/container-search/pom.xml
index f622567acde..837629c44b9 100644
--- a/container-search/pom.xml
+++ b/container-search/pom.xml
@@ -143,6 +143,7 @@
<dependency>
<groupId>org.antlr</groupId>
<artifactId>antlr4-runtime</artifactId>
+ <version>4.5</version>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
@@ -210,7 +211,7 @@
<plugin> <!-- For the YQL query language -->
<groupId>org.antlr</groupId>
<artifactId>antlr4-maven-plugin</artifactId>
- <version>${antlr4.version}</version>
+ <version>4.5</version>
<executions>
<execution>
<configuration>
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 999846d1755..2eec7109722 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
@@ -271,12 +271,14 @@ public class FastHit extends Hit {
public void addSummary(Docsum docsum) {
LazyDocsumValue lazyDocsumValue = new LazyDocsumValue(docsum);
+ reserve(docsum.getDefinition().getFieldCount());
for (DocsumField field : docsum.getDefinition().getFields()) {
setDocsumFieldIfNotPresent(field.getName(), lazyDocsumValue);
}
}
void addSummary(DocsumDefinition docsumDef, Inspector value) {
+ reserve(docsumDef.getFieldCount());
for (DocsumField field : docsumDef.getFields()) {
String fieldName = field.getName();
if (value.type() == Type.STRING &&
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 b03c0cb752f..6b4d3594087 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
@@ -227,6 +227,7 @@ public class Dispatcher extends AbstractComponent {
}
private void fill(FastHit hit, Inspector summary) {
+ hit.reserve(summary.fieldCount());
summary.traverse((String name, Inspector value) -> {
hit.setField(name, nativeTypeOf(value));
});
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 815006edbf5..0bfbecfd9ab 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
@@ -101,8 +101,12 @@ public class Hit extends ListenableFreezableClass implements Data, Comparable<Hi
public static final String SDDOCNAME_FIELD = "sddocname";
private Map<String,Object> getFieldMap() {
+ return getFieldMap(16);
+ }
+ private Map<String,Object> getFieldMap(int minSize) {
if (fields == null) {
- fields = new LinkedHashMap<>(16);
+ // Compensate for loadfactor and then some, rounded up....
+ fields = new LinkedHashMap<>(2*minSize);
}
return fields;
}
@@ -448,6 +452,14 @@ public class Hit extends ListenableFreezableClass implements Data, Comparable<Hi
public final Map<String,Object> fields() { return getUnmodifiableFieldMap(); }
/**
+ * Will preallocate in order to avoid resizing.
+ * @param minSize
+ */
+ public void reserve(int minSize) {
+ getFieldMap(minSize);
+ }
+
+ /**
* Fields
* @return An iterator for traversing the fields
* @since 5.1.3
diff --git a/pom.xml b/pom.xml
index d345d5eb8d2..dd7042bf911 100644
--- a/pom.xml
+++ b/pom.xml
@@ -56,7 +56,7 @@
<plugin>
<groupId>org.antlr</groupId>
<artifactId>antlr3-maven-plugin</artifactId>
- <version>${antlr.version}</version>
+ <version>3.5.2</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
@@ -574,12 +574,7 @@
<dependency>
<groupId>org.antlr</groupId>
<artifactId>antlr-runtime</artifactId>
- <version>${antlr.version}</version>
- </dependency>
- <dependency>
- <groupId>org.antlr</groupId>
- <artifactId>antlr4-runtime</artifactId>
- <version>${antlr4.version}</version>
+ <version>3.5.2</version>
</dependency>
<dependency>
<groupId>org.apache.aries.spifly</groupId>
@@ -894,8 +889,6 @@
<properties>
<javax.ws.rs-api.version>2.0.1</javax.ws.rs-api.version> <!-- must be kept in sync with version used by current jersey2.version -->
- <antlr.version>3.5.2</antlr.version>
- <antlr4.version>4.5</antlr4.version>
<aries.spifly.version>1.0.8</aries.spifly.version>
<aries.util.version>1.0.0</aries.util.version>
<asm-debug-all.version>5.0.3</asm-debug-all.version>
diff --git a/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp b/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp
index 4970ad867ce..2ed60f3c078 100644
--- a/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp
@@ -198,13 +198,23 @@ public:
{
}
- virtual void notifyGidToLidChange(document::GlobalId gid, uint32_t lid) override {
+ virtual void notifyPut(document::GlobalId gid, uint32_t lid, SerialNum) override {
_changeGid = gid;
_changeLid = lid;
_gidToLid[gid] = lid;
++_changes;
}
+ virtual void notifyRemove(document::GlobalId gid, SerialNum) override {
+ _changeGid = gid;
+ _changeLid = 0;
+ _gidToLid[gid] = 0;
+ ++_changes;
+ }
+
+ virtual void notifyRemoveDone(document::GlobalId, SerialNum) override {
+ }
+
void assertChanges(document::GlobalId expGid, uint32_t expLid, uint32_t expChanges) {
EXPECT_EQUAL(expGid, _changeGid);
EXPECT_EQUAL(expLid, _changeLid);
diff --git a/searchcore/src/tests/proton/matching/matching_test.cpp b/searchcore/src/tests/proton/matching/matching_test.cpp
index deadafcad8f..679108ba872 100644
--- a/searchcore/src/tests/proton/matching/matching_test.cpp
+++ b/searchcore/src/tests/proton/matching/matching_test.cpp
@@ -494,11 +494,11 @@ TEST("require that sortspec can be used (multi-threaded)") {
SearchReply::UP reply = world.performSearch(request, threads);
ASSERT_EQUAL(9u, reply->hits.size());
EXPECT_EQUAL(document::DocumentId("doc::100").getGlobalId(), reply->hits[0].gid);
- EXPECT_EQUAL(0.0, reply->hits[0].metric);
+ EXPECT_EQUAL(default_rank_value, reply->hits[0].metric);
EXPECT_EQUAL(document::DocumentId("doc::200").getGlobalId(), reply->hits[1].gid);
- EXPECT_EQUAL(0.0, reply->hits[1].metric);
+ EXPECT_EQUAL(default_rank_value, reply->hits[1].metric);
EXPECT_EQUAL(document::DocumentId("doc::300").getGlobalId(), reply->hits[2].gid);
- EXPECT_EQUAL(0.0, reply->hits[2].metric);
+ EXPECT_EQUAL(default_rank_value, reply->hits[2].metric);
}
}
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 eb2052ef32f..1c5287f15e5 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
@@ -14,6 +14,7 @@ LOG_SETUP("gid_to_lid_change_handler_test");
using document::GlobalId;
using document::DocumentId;
using search::makeLambdaTask;
+using search::SerialNum;
namespace proton {
@@ -30,7 +31,8 @@ vespalib::string doc1("id:test:music::1");
class ListenerStats {
using lock_guard = std::lock_guard<std::mutex>;
std::mutex _lock;
- uint32_t _changes;
+ uint32_t _putChanges;
+ uint32_t _removeChanges;
uint32_t _createdListeners;
uint32_t _registeredListeners;
uint32_t _destroyedListeners;
@@ -38,7 +40,8 @@ class ListenerStats {
public:
ListenerStats()
: _lock(),
- _changes(0u),
+ _putChanges(0u),
+ _removeChanges(0u),
_createdListeners(0u),
_registeredListeners(0u),
_destroyedListeners(0u)
@@ -50,9 +53,13 @@ public:
EXPECT_EQUAL(_createdListeners, _destroyedListeners);
}
- void notifyGidToLidChange() {
+ void notifyPut() {
lock_guard guard(_lock);
- ++_changes;
+ ++_putChanges;
+ }
+ void notifyRemove() {
+ lock_guard guard(_lock);
+ ++_removeChanges;
}
void markCreatedListener() { lock_guard guard(_lock); ++_createdListeners; }
void markRegisteredListener() { lock_guard guard(_lock); ++_registeredListeners; }
@@ -62,15 +69,18 @@ public:
uint32_t getRegisteredListeners() const { return _registeredListeners; }
uint32_t getDestroyedListeners() const { return _destroyedListeners; }
- void assertCounts(uint32_t expCreatedListeners,
- uint32_t expRegisteredListeners,
- uint32_t expDestroyedListeners,
- uint32_t expChanges)
+ void assertListeners(uint32_t expCreatedListeners,
+ uint32_t expRegisteredListeners,
+ uint32_t expDestroyedListeners)
{
EXPECT_EQUAL(expCreatedListeners, getCreatedListeners());
EXPECT_EQUAL(expRegisteredListeners, getRegisteredListeners());
EXPECT_EQUAL(expDestroyedListeners, getDestroyedListeners());
- EXPECT_EQUAL(expChanges, _changes);
+ }
+ void assertChanges(uint32_t expPutChanges, uint32_t expRemoveChanges)
+ {
+ EXPECT_EQUAL(expPutChanges, _putChanges);
+ EXPECT_EQUAL(expRemoveChanges, _removeChanges);
}
};
@@ -91,7 +101,8 @@ public:
_stats.markCreatedListener();
}
virtual ~MyListener() { _stats.markDestroyedListener(); }
- virtual void notifyGidToLidChange(GlobalId, uint32_t) override { _stats.notifyGidToLidChange(); }
+ virtual void notifyPut(GlobalId, uint32_t) override { _stats.notifyPut(); }
+ virtual void notifyRemove(GlobalId) override { _stats.notifyRemove(); }
virtual void notifyRegistered() override { _stats.markRegisteredListener(); }
virtual const vespalib::string &getName() const override { return _name; }
virtual const vespalib::string &getDocTypeName() const override { return _docTypeName; }
@@ -99,16 +110,12 @@ public:
struct Fixture
{
- vespalib::ThreadStackExecutor _masterExecutor;
- ExecutorThreadService _master;
std::vector<std::shared_ptr<ListenerStats>> _statss;
std::shared_ptr<GidToLidChangeHandler> _handler;
Fixture()
- : _masterExecutor(1, 128 * 1024),
- _master(_masterExecutor),
- _statss(),
- _handler(std::make_shared<GidToLidChangeHandler>(&_master))
+ : _statss(),
+ _handler(std::make_shared<GidToLidChangeHandler>())
{
}
@@ -119,8 +126,7 @@ struct Fixture
void close()
{
- _master.execute(makeLambdaTask([this]() { _handler->close(); }));
- _master.sync();
+ _handler->close();
}
ListenerStats &addStats() {
@@ -130,18 +136,23 @@ struct Fixture
void addListener(std::unique_ptr<IGidToLidChangeListener> listener) {
_handler->addListener(std::move(listener));
- _master.sync();
}
- void notifyGidToLidChange(GlobalId gid, uint32_t lid) {
- _master.execute(makeLambdaTask([this, gid, lid]() { _handler->notifyGidToLidChange(gid, lid); }));
- _master.sync();
+ void notifyPut(GlobalId gid, uint32_t lid, SerialNum serialNum) {
+ _handler->notifyPut(gid, lid, serialNum);
+ }
+
+ void notifyRemove(GlobalId gid, SerialNum serialNum) {
+ _handler->notifyRemove(gid, serialNum);
+ }
+
+ void notifyRemoveDone(GlobalId gid, SerialNum serialNum) {
+ _handler->notifyRemoveDone(gid, serialNum);
}
void removeListeners(const vespalib::string &docTypeName,
const std::set<vespalib::string> &keepNames) {
_handler->removeListeners(docTypeName, keepNames);
- _master.sync();
}
};
@@ -150,13 +161,13 @@ TEST_F("Test that we can register a listener", Fixture)
{
auto &stats = f.addStats();
auto listener = std::make_unique<MyListener>(stats, "test", "testdoc");
- TEST_DO(stats.assertCounts(1, 0, 0, 0));
+ TEST_DO(stats.assertListeners(1, 0, 0));
f.addListener(std::move(listener));
- TEST_DO(stats.assertCounts(1, 1, 0, 0));
- f.notifyGidToLidChange(toGid(doc1), 10);
- TEST_DO(stats.assertCounts(1, 1, 0, 1));
+ TEST_DO(stats.assertListeners(1, 1, 0));
+ f.notifyPut(toGid(doc1), 10, 10);
+ TEST_DO(stats.assertChanges(1, 0));
f.removeListeners("testdoc", {});
- TEST_DO(stats.assertCounts(1, 1, 1, 1));
+ TEST_DO(stats.assertListeners(1, 1, 1));
}
TEST_F("Test that we can register multiple listeners", Fixture)
@@ -167,48 +178,86 @@ TEST_F("Test that we can register multiple listeners", Fixture)
auto listener1 = std::make_unique<MyListener>(stats1, "test1", "testdoc");
auto listener2 = std::make_unique<MyListener>(stats2, "test2", "testdoc");
auto listener3 = std::make_unique<MyListener>(stats3, "test3", "testdoc2");
- TEST_DO(stats1.assertCounts(1, 0, 0, 0));
- TEST_DO(stats2.assertCounts(1, 0, 0, 0));
- TEST_DO(stats3.assertCounts(1, 0, 0, 0));
+ TEST_DO(stats1.assertListeners(1, 0, 0));
+ TEST_DO(stats2.assertListeners(1, 0, 0));
+ TEST_DO(stats3.assertListeners(1, 0, 0));
f.addListener(std::move(listener1));
f.addListener(std::move(listener2));
f.addListener(std::move(listener3));
- TEST_DO(stats1.assertCounts(1, 1, 0, 0));
- TEST_DO(stats2.assertCounts(1, 1, 0, 0));
- TEST_DO(stats3.assertCounts(1, 1, 0, 0));
- f.notifyGidToLidChange(toGid(doc1), 10);
- TEST_DO(stats1.assertCounts(1, 1, 0, 1));
- TEST_DO(stats2.assertCounts(1, 1, 0, 1));
- TEST_DO(stats3.assertCounts(1, 1, 0, 1));
+ TEST_DO(stats1.assertListeners(1, 1, 0));
+ TEST_DO(stats2.assertListeners(1, 1, 0));
+ TEST_DO(stats3.assertListeners(1, 1, 0));
+ f.notifyPut(toGid(doc1), 10, 10);
+ TEST_DO(stats1.assertChanges(1, 0));
+ TEST_DO(stats2.assertChanges(1, 0));
+ TEST_DO(stats3.assertChanges(1, 0));
f.removeListeners("testdoc", {"test1"});
- TEST_DO(stats1.assertCounts(1, 1, 0, 1));
- TEST_DO(stats2.assertCounts(1, 1, 1, 1));
- TEST_DO(stats3.assertCounts(1, 1, 0, 1));
+ TEST_DO(stats1.assertListeners(1, 1, 0));
+ TEST_DO(stats2.assertListeners(1, 1, 1));
+ TEST_DO(stats3.assertListeners(1, 1, 0));
f.removeListeners("testdoc", {});
- TEST_DO(stats1.assertCounts(1, 1, 1, 1));
- TEST_DO(stats2.assertCounts(1, 1, 1, 1));
- TEST_DO(stats3.assertCounts(1, 1, 0, 1));
+ TEST_DO(stats1.assertListeners(1, 1, 1));
+ TEST_DO(stats2.assertListeners(1, 1, 1));
+ TEST_DO(stats3.assertListeners(1, 1, 0));
f.removeListeners("testdoc2", {"test3"});
- TEST_DO(stats1.assertCounts(1, 1, 1, 1));
- TEST_DO(stats2.assertCounts(1, 1, 1, 1));
- TEST_DO(stats3.assertCounts(1, 1, 0, 1));
+ TEST_DO(stats1.assertListeners(1, 1, 1));
+ TEST_DO(stats2.assertListeners(1, 1, 1));
+ TEST_DO(stats3.assertListeners(1, 1, 0));
f.removeListeners("testdoc2", {"foo"});
- TEST_DO(stats1.assertCounts(1, 1, 1, 1));
- TEST_DO(stats2.assertCounts(1, 1, 1, 1));
- TEST_DO(stats3.assertCounts(1, 1, 1, 1));
+ TEST_DO(stats1.assertListeners(1, 1, 1));
+ TEST_DO(stats2.assertListeners(1, 1, 1));
+ TEST_DO(stats3.assertListeners(1, 1, 1));
}
TEST_F("Test that we keep old listener when registering duplicate", Fixture)
{
auto &stats = f.addStats();
auto listener = std::make_unique<MyListener>(stats, "test1", "testdoc");
- TEST_DO(stats.assertCounts(1, 0, 0, 0));
+ TEST_DO(stats.assertListeners(1, 0, 0));
f.addListener(std::move(listener));
- TEST_DO(stats.assertCounts(1, 1, 0, 0));
+ TEST_DO(stats.assertListeners(1, 1, 0));
listener = std::make_unique<MyListener>(stats, "test1", "testdoc");
- TEST_DO(stats.assertCounts(2, 1, 0, 0));
+ TEST_DO(stats.assertListeners(2, 1, 0));
+ f.addListener(std::move(listener));
+ TEST_DO(stats.assertListeners(2, 1, 1));
+}
+
+TEST_F("Test that put is ignored if we have a pending remove", Fixture)
+{
+ auto &stats = f.addStats();
+ auto listener = std::make_unique<MyListener>(stats, "test", "testdoc");
f.addListener(std::move(listener));
- TEST_DO(stats.assertCounts(2, 1, 1, 0));
+ f.notifyRemove(toGid(doc1), 20);
+ TEST_DO(stats.assertChanges(0, 1));
+ f.notifyPut(toGid(doc1), 10, 10);
+ TEST_DO(stats.assertChanges(0, 1));
+ f.notifyRemoveDone(toGid(doc1), 20);
+ TEST_DO(stats.assertChanges(0, 1));
+ f.notifyPut(toGid(doc1), 11, 30);
+ TEST_DO(stats.assertChanges(1, 1));
+ f.removeListeners("testdoc", {});
+}
+
+TEST_F("Test that pending removes are merged", Fixture)
+{
+ auto &stats = f.addStats();
+ auto listener = std::make_unique<MyListener>(stats, "test", "testdoc");
+ f.addListener(std::move(listener));
+ f.notifyRemove(toGid(doc1), 20);
+ TEST_DO(stats.assertChanges(0, 1));
+ f.notifyRemove(toGid(doc1), 40);
+ TEST_DO(stats.assertChanges(0, 1));
+ f.notifyPut(toGid(doc1), 10, 10);
+ TEST_DO(stats.assertChanges(0, 1));
+ f.notifyRemoveDone(toGid(doc1), 20);
+ TEST_DO(stats.assertChanges(0, 1));
+ f.notifyPut(toGid(doc1), 11, 30);
+ TEST_DO(stats.assertChanges(0, 1));
+ f.notifyRemoveDone(toGid(doc1), 40);
+ TEST_DO(stats.assertChanges(0, 1));
+ f.notifyPut(toGid(doc1), 12, 50);
+ TEST_DO(stats.assertChanges(1, 1));
+ f.removeListeners("testdoc", {});
}
}
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 780a6d79ad6..08787e41438 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
@@ -117,8 +117,8 @@ struct Fixture
_listener = std::make_unique<GidToLidChangeListener>(_writer, _attr, _refCount, "test", "testdoc");
}
- void notifyGidToLidChange(const GlobalId &gid, uint32_t referencedDoc) {
- _listener->notifyGidToLidChange(gid, referencedDoc);
+ void notifyPut(const GlobalId &gid, uint32_t referencedDoc) {
+ _listener->notifyPut(gid, referencedDoc);
}
void notifyListenerRegistered() {
@@ -137,9 +137,9 @@ TEST_F("Test that we can use gid to lid change listener", Fixture)
TEST_DO(f.assertRefLid(0, 2));
TEST_DO(f.assertRefLid(0, 3));
f.allocListener();
- f.notifyGidToLidChange(toGid(doc1), 10);
- f.notifyGidToLidChange(toGid(doc2), 20);
- f.notifyGidToLidChange(toGid(doc3), 30);
+ f.notifyPut(toGid(doc1), 10);
+ f.notifyPut(toGid(doc2), 20);
+ f.notifyPut(toGid(doc3), 30);
TEST_DO(f.assertRefLid(10, 1));
TEST_DO(f.assertRefLid(20, 2));
TEST_DO(f.assertRefLid(10, 3));
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 e97f117e481..a5231647158 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
@@ -24,7 +24,8 @@ public:
{
}
virtual ~MyListener() { }
- virtual void notifyGidToLidChange(document::GlobalId, uint32_t) override { }
+ virtual void notifyPut(document::GlobalId, uint32_t) override { }
+ virtual void notifyRemove(document::GlobalId) override { }
virtual void notifyRegistered() override { }
virtual const vespalib::string &getName() const override { return _name; }
virtual const vespalib::string &getDocTypeName() const override { return _docTypeName; }
diff --git a/searchcore/src/vespa/searchcore/proton/matching/match_thread.h b/searchcore/src/vespa/searchcore/proton/matching/match_thread.h
index cd01c330931..2d056d0e761 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/match_thread.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/match_thread.h
@@ -53,7 +53,7 @@ private:
Context(double rankDropLimit, MatchTools &matchTools, RankProgram & ranking, HitCollector & hits,
uint32_t num_threads) __attribute__((noinline));
void rankHit(uint32_t docId);
- void addHit(uint32_t docId) { _hits.addHit(docId, 0.0); }
+ void addHit(uint32_t docId) { _hits.addHit(docId, search::default_rank_value); }
bool isBelowLimit() const { return matches < _matches_limit; }
bool isAtLimit() const { return matches == _matches_limit; }
bool atSoftDoom() const { return _softDoom.doom(); }
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 e7b347c4c80..d7b2c16867a 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
@@ -6,63 +6,98 @@
#include <vespa/searchcorespi/index/i_thread_service.h>
#include <vespa/document/base/globalid.h>
#include <cassert>
+#include <vespa/vespalib/stllike/hash_map.hpp>
using search::makeLambdaTask;
namespace proton {
-GidToLidChangeHandler::GidToLidChangeHandler(searchcorespi::index::IThreadService *master)
+GidToLidChangeHandler::GidToLidChangeHandler()
: _lock(),
_listeners(),
- _master(master)
+ _closed(false),
+ _pendingRemove()
+
{
}
GidToLidChangeHandler::~GidToLidChangeHandler()
{
- assert(_master == nullptr);
+ assert(_closed);
assert(_listeners.empty());
+ assert(_pendingRemove.empty());
}
void
-GidToLidChangeHandler::notifyGidToLidChange(document::GlobalId gid, uint32_t lid)
+GidToLidChangeHandler::notifyPut(GlobalId gid, uint32_t lid)
{
for (const auto &listener : _listeners) {
- listener->notifyGidToLidChange(gid, lid);
+ listener->notifyPut(gid, lid);
}
}
void
-GidToLidChangeHandler::close()
+GidToLidChangeHandler::notifyRemove(GlobalId gid)
+{
+ for (const auto &listener : _listeners) {
+ listener->notifyRemove(gid);
+ }
+}
+
+void
+GidToLidChangeHandler::notifyPut(GlobalId gid, uint32_t lid, SerialNum serialNum)
{
lock_guard guard(_lock);
- if (_master != nullptr) {
- assert(_master->isCurrentThread());
- _master = nullptr;
- _listeners.clear();
+ auto itr = _pendingRemove.find(gid);
+ if (itr != _pendingRemove.end()) {
+ assert(itr->second > serialNum);
+ return; // Document has already been removed later on
}
+ notifyPut(gid, lid);
}
void
-GidToLidChangeHandler::addListener(std::unique_ptr<IGidToLidChangeListener> listener)
+GidToLidChangeHandler::notifyRemove(GlobalId gid, SerialNum serialNum)
{
lock_guard guard(_lock);
- if (_master) {
- auto self(shared_from_this());
- _master->execute(makeLambdaTask([self,listener(std::move(listener))]() mutable { self->performAddListener(std::move(listener)); }));
+ auto insRes = _pendingRemove.insert(std::make_pair(gid, serialNum));
+ if (!insRes.second) {
+ assert(insRes.first->second < serialNum);
+ insRes.first->second = serialNum;
} else {
- assert(_listeners.empty());
+ notifyRemove(gid);
}
}
+void
+GidToLidChangeHandler::notifyRemoveDone(GlobalId gid, SerialNum serialNum)
+{
+ lock_guard guard(_lock);
+ auto itr = _pendingRemove.find(gid);
+ assert(itr != _pendingRemove.end() && itr->second >= serialNum);
+ if (itr->second == serialNum) {
+ _pendingRemove.erase(itr);
+ }
+}
void
-GidToLidChangeHandler::performAddListener(std::unique_ptr<IGidToLidChangeListener> listener)
+GidToLidChangeHandler::close()
+{
+ Listeners deferredDelete;
+ {
+ lock_guard guard(_lock);
+ _closed = true;
+ _listeners.swap(deferredDelete);
+ }
+}
+
+void
+GidToLidChangeHandler::addListener(std::unique_ptr<IGidToLidChangeListener> listener)
{
lock_guard guard(_lock);
- if (_master) {
+ if (!_closed) {
const vespalib::string &docTypeName = listener->getDocTypeName();
const vespalib::string &name = listener->getName();
for (const auto &oldlistener : _listeners) {
@@ -77,19 +112,6 @@ GidToLidChangeHandler::performAddListener(std::unique_ptr<IGidToLidChangeListene
}
}
-void
-GidToLidChangeHandler::removeListeners(const vespalib::string &docTypeName,
- const std::set<vespalib::string> &keepNames)
-{
- lock_guard guard(_lock);
- if (_master) {
- auto self(shared_from_this());
- _master->execute(makeLambdaTask([self,docTypeName,keepNames]() mutable { self->performRemoveListener(docTypeName, keepNames); }));
- } else {
- assert(_listeners.empty());
- }
-}
-
namespace {
bool shouldRemoveListener(const IGidToLidChangeListener &listener,
@@ -103,21 +125,25 @@ bool shouldRemoveListener(const IGidToLidChangeListener &listener,
}
void
-GidToLidChangeHandler::performRemoveListener(const vespalib::string &docTypeName,
- const std::set<vespalib::string> &keepNames)
+GidToLidChangeHandler::removeListeners(const vespalib::string &docTypeName,
+ const std::set<vespalib::string> &keepNames)
{
- lock_guard guard(_lock);
- if (_master) {
- auto itr = _listeners.begin();
- while (itr != _listeners.end()) {
- if (shouldRemoveListener(**itr, docTypeName, keepNames)) {
- itr = _listeners.erase(itr);
- } else {
- ++itr;
+ Listeners deferredDelete;
+ {
+ lock_guard guard(_lock);
+ if (!_closed) {
+ auto itr = _listeners.begin();
+ while (itr != _listeners.end()) {
+ if (shouldRemoveListener(**itr, docTypeName, keepNames)) {
+ deferredDelete.emplace_back(std::move(*itr));
+ itr = _listeners.erase(itr);
+ } else {
+ ++itr;
+ }
}
+ } else {
+ assert(_listeners.empty());
}
- } else {
- assert(_listeners.empty());
}
}
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 2197490b65e..736a34aba76 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
@@ -5,6 +5,8 @@
#include "i_gid_to_lid_change_handler.h"
#include <vector>
#include <mutex>
+#include <vespa/vespalib/stllike/hash_map.h>
+#include <vespa/document/base/globalid.h>
namespace searchcorespi { namespace index { class IThreadService; } }
@@ -19,25 +21,27 @@ class GidToLidChangeHandler : public std::enable_shared_from_this<GidToLidChange
public IGidToLidChangeHandler
{
using lock_guard = std::lock_guard<std::mutex>;
+ using Listeners = std::vector<std::unique_ptr<IGidToLidChangeListener>>;
std::mutex _lock;
- std::vector<std::unique_ptr<IGidToLidChangeListener>> _listeners;
- searchcorespi::index::IThreadService *_master;
+ Listeners _listeners;
+ bool _closed;
+ vespalib::hash_map<GlobalId, SerialNum, GlobalId::hash> _pendingRemove;
- void performAddListener(std::unique_ptr<IGidToLidChangeListener> listener);
- void performRemoveListener(const vespalib::string &docTypeName,
- const std::set<vespalib::string> &keepNames);
+ void notifyPut(GlobalId gid, uint32_t lid);
+ void notifyRemove(GlobalId gid);
public:
- GidToLidChangeHandler(searchcorespi::index::IThreadService *master);
+ GidToLidChangeHandler();
virtual ~GidToLidChangeHandler();
/**
- * Notify gid to lid mapping change. Called by master executor.
+ * Notify gid to lid mapping change.
*/
- virtual void notifyGidToLidChange(document::GlobalId gid, uint32_t lid) override;
+ virtual void notifyPut(GlobalId gid, uint32_t lid, SerialNum serialNum) override;
+ virtual void notifyRemove(GlobalId gid, SerialNum serialNum) override;
+ virtual void notifyRemoveDone(GlobalId gid, SerialNum serialNum) override;
/**
- * Close handler, further notifications are blocked. Called by master
- * executor.
+ * Close handler, further notifications are blocked.
*/
void close();
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 5aba8bf3150..6a368997770 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
@@ -26,12 +26,22 @@ GidToLidChangeListener::~GidToLidChangeListener()
}
void
-GidToLidChangeListener::notifyGidToLidChange(document::GlobalId gid, uint32_t lid)
+GidToLidChangeListener::notifyPut(document::GlobalId gid, uint32_t lid)
{
std::promise<bool> promise;
std::future<bool> future = promise.get_future();
_attributeFieldWriter.executeLambda(_executorId,
- [this, &promise, gid, lid]() { _attr->notifyGidToLidChange(gid, lid); promise.set_value(true); });
+ [this, &promise, gid, lid]() { _attr->notifyReferencedPut(gid, lid); promise.set_value(true); });
+ (void) future.get();
+}
+
+void
+GidToLidChangeListener::notifyRemove(document::GlobalId gid)
+{
+ std::promise<bool> promise;
+ std::future<bool> future = promise.get_future();
+ _attributeFieldWriter.executeLambda(_executorId,
+ [this, &promise, gid]() { _attr->notifyReferencedRemove(gid); promise.set_value(true); });
(void) future.get();
}
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 8a3a7d00cec..35ff913d7af 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
@@ -30,7 +30,8 @@ public:
const vespalib::string &name,
const vespalib::string &docTypeName);
virtual ~GidToLidChangeListener();
- virtual void notifyGidToLidChange(document::GlobalId gid, uint32_t lid) override;
+ virtual void notifyPut(document::GlobalId gid, uint32_t lid) override;
+ virtual void notifyRemove(document::GlobalId gid) override;
virtual void notifyRegistered() override;
virtual const vespalib::string &getName() const override;
virtual const vespalib::string &getDocTypeName() const override;
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 73ff140e2c6..a3b1db59abd 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
@@ -5,6 +5,7 @@
#include <set>
#include <memory>
#include <vespa/vespalib/stllike/string.h>
+#include <vespa/searchlib/common/serialnum.h>
namespace document { class GlobalId; }
@@ -19,14 +20,18 @@ class IGidToLidChangeListener;
class IGidToLidChangeHandler
{
public:
+ using SerialNum = search::SerialNum;
+ using GlobalId = document::GlobalId;
+
virtual ~IGidToLidChangeHandler() { }
virtual void addListener(std::unique_ptr<IGidToLidChangeListener> listener) = 0;
virtual void removeListeners(const vespalib::string &docTypeName,
const std::set<vespalib::string> &keepNames) = 0;
- virtual void notifyGidToLidChange(document::GlobalId gid, uint32_t lid) = 0;
-
+ virtual void notifyPut(GlobalId gid, uint32_t lid, SerialNum serialNum) = 0;
+ virtual void notifyRemove(GlobalId gid, SerialNum serialNum) = 0;
+ virtual void notifyRemoveDone(GlobalId gid, SerialNum serialNum) = 0;
};
} // namespace proton
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 317f378bedc..d02979e168f 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
@@ -17,7 +17,8 @@ class IGidToLidChangeListener
{
public:
virtual ~IGidToLidChangeListener() { }
- virtual void notifyGidToLidChange(document::GlobalId gid, uint32_t lid) = 0;
+ virtual void notifyPut(document::GlobalId gid, uint32_t lid) = 0;
+ virtual void notifyRemove(document::GlobalId gid) = 0;
virtual void notifyRegistered() = 0;
virtual const vespalib::string &getName() const = 0;
virtual const vespalib::string &getDocTypeName() const = 0;
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 3a3264336c8..913956c509f 100644
--- a/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.cpp
@@ -262,9 +262,21 @@ SearchableFeedView::forceCommit(SerialNum serialNum, OnForceCommitDoneType onCom
}
void
-SearchableFeedView::notifyGidToLidChange(const document::GlobalId &gid, uint32_t lid)
+SearchableFeedView::notifyPutGidToLidChange(const document::GlobalId &gid, uint32_t lid, SerialNum serialNum)
{
- _gidToLidChangeHandler->notifyGidToLidChange(gid, lid);
+ _gidToLidChangeHandler->notifyPut(gid, lid, serialNum);
+}
+
+void
+SearchableFeedView::notifyRemoveGidToLidChange(const document::GlobalId &gid, SerialNum serialNum)
+{
+ _gidToLidChangeHandler->notifyRemove(gid, serialNum);
+}
+
+void
+SearchableFeedView::notifyRemoveDoneGidToLidChange(const document::GlobalId &gid, SerialNum serialNum)
+{
+ _gidToLidChangeHandler->notifyRemoveDone(gid, serialNum);
}
} // namespace proton
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 c0d9bfcfbc6..4b536d0adde 100644
--- a/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.h
+++ b/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.h
@@ -86,7 +86,9 @@ private:
void performIndexForceCommit(SerialNum serialNum, OnForceCommitDoneType onCommitDone);
void forceCommit(SerialNum serialNum, OnForceCommitDoneType onCommitDone) override;
- virtual void notifyGidToLidChange(const document::GlobalId &gid, uint32_t lid) override;
+ virtual void notifyPutGidToLidChange(const document::GlobalId &gid, uint32_t lid, SerialNum serialNum) override;
+ virtual void notifyRemoveGidToLidChange(const document::GlobalId &gid, SerialNum serialNum) override;
+ virtual void notifyRemoveDoneGidToLidChange(const document::GlobalId &gid, SerialNum serialNum) override;
public:
SearchableFeedView(const StoreOnlyFeedView::Context &storeOnlyCtx, const PersistentParams &params,
diff --git a/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp b/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp
index 8eb36435ed5..e9e0120dac1 100644
--- a/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp
@@ -49,7 +49,7 @@ SearchableDocSubDB::SearchableDocSubDB(const Config &cfg, const Context &ctx)
getSubDbName(), ctx._fastUpdCtx._storeOnlyCtx._owner.getDistributionKey()),
_numSearcherThreads(cfg._numSearcherThreads),
_warmupExecutor(ctx._warmupExecutor),
- _gidToLidChangeHandler(std::make_shared<GidToLidChangeHandler>(&_writeService.master()))
+ _gidToLidChangeHandler(std::make_shared<GidToLidChangeHandler>())
{ }
SearchableDocSubDB::~SearchableDocSubDB()
diff --git a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp
index da3e09bea41..3e7e3d6ddfa 100644
--- a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp
@@ -611,16 +611,17 @@ StoreOnlyFeedView::adjustMetaStore(const DocumentOperation &op, const DocumentId
op.getLid() != op.getPrevLid())
{
moveMetaData(_metaStore, docId, op);
- notifyGidToLidChange(docId.getGlobalId(), op.getLid());
+ notifyPutGidToLidChange(docId.getGlobalId(), op.getLid(), serialNum);
} else {
putMetaData(_metaStore, docId, op, _params._subDbType == SubDbType::REMOVED);
if (op.getDbDocumentId() != op.getPrevDbDocumentId()) {
- notifyGidToLidChange(docId.getGlobalId(), op.getLid());
+ notifyPutGidToLidChange(docId.getGlobalId(), op.getLid(), serialNum);
}
}
} else if (op.getValidPrevDbdId(_params._subDbId)) {
removeMetaData(_metaStore, docId, op, _params._subDbType == SubDbType::REMOVED);
- notifyGidToLidChange(docId.getGlobalId(), 0u);
+ notifyRemoveGidToLidChange(docId.getGlobalId(), serialNum);
+ notifyRemoveDoneGidToLidChange(docId.getGlobalId(), serialNum);
}
_metaStore.commit(serialNum, serialNum);
}
@@ -651,7 +652,8 @@ StoreOnlyFeedView::removeDocuments(const RemoveDocumentsOperation &op, bool remo
std::vector<document::GlobalId> gidsToRemove(getGidsToRemove(_metaStore, lidsToRemove));
_metaStore.removeBatch(lidsToRemove, ctx->getDocIdLimit());
for (const auto &gid : gidsToRemove) {
- notifyGidToLidChange(gid, 0u);
+ notifyRemoveGidToLidChange(gid, serialNum);
+ notifyRemoveDoneGidToLidChange(gid, serialNum);
}
_metaStore.commit(serialNum, serialNum);
explicitReuseLids = _lidReuseDelayer.delayReuse(lidsToRemove);
@@ -806,6 +808,12 @@ StoreOnlyFeedView::getDocumentMetaStorePtr() const
}
void
-StoreOnlyFeedView::notifyGidToLidChange(const document::GlobalId &, uint32_t ) {}
+StoreOnlyFeedView::notifyPutGidToLidChange(const document::GlobalId &, uint32_t, SerialNum) {}
+
+void
+StoreOnlyFeedView::notifyRemoveGidToLidChange(const document::GlobalId &, SerialNum) {}
+
+void
+StoreOnlyFeedView::notifyRemoveDoneGidToLidChange(const document::GlobalId &, SerialNum) {}
} // namespace proton
diff --git a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h
index 982acf200a7..ec3003fb5d6 100644
--- a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h
+++ b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h
@@ -179,7 +179,9 @@ private:
// Ack token early if visibility delay is nonzero
void considerEarlyAck(FeedTokenUP &token, FeedOperation::Type opType);
- virtual void notifyGidToLidChange(const document::GlobalId &gid, uint32_t lid);
+ virtual void notifyPutGidToLidChange(const document::GlobalId &gid, uint32_t lid, SerialNum serialNum);
+ virtual void notifyRemoveGidToLidChange(const document::GlobalId &gid, SerialNum serialNum);
+ virtual void notifyRemoveDoneGidToLidChange(const document::GlobalId &gid, SerialNum serialNum);
void makeUpdatedDocument(SerialNum serialNum, Lid lid, DocumentUpdate::SP upd,
OnOperationDoneType onWriteDone,PromisedDoc promisedDoc, PromisedStream promisedStream);
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 2aa613461ef..41efb55e61c 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
@@ -44,7 +44,9 @@ public:
_removes.emplace_back(docTypeName, keepNames);
}
- virtual void notifyGidToLidChange(document::GlobalId, uint32_t) override { }
+ virtual void notifyPut(document::GlobalId, uint32_t, SerialNum) override { }
+ virtual void notifyRemove(document::GlobalId, SerialNum) override { }
+ virtual void notifyRemoveDone(document::GlobalId, SerialNum) override { }
void assertAdds(const std::vector<AddEntry> &expAdds)
{
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 7e2e8904170..1b1bc1f8796 100644
--- a/searchlib/src/tests/attribute/reference_attribute/reference_attribute_test.cpp
+++ b/searchlib/src/tests/attribute/reference_attribute/reference_attribute_test.cpp
@@ -182,8 +182,11 @@ struct Fixture
iter, oldStatus.getUsed(), newStatus.getUsed());
}
- void notifyGidToLidChange(const GlobalId &gid, uint32_t referencedDoc) {
- _attr->notifyGidToLidChange(gid, referencedDoc);
+ void notifyReferencedPut(const GlobalId &gid, uint32_t referencedDoc) {
+ _attr->notifyReferencedPut(gid, referencedDoc);
+ }
+ void notifyReferencedRemove(const GlobalId &gid) {
+ _attr->notifyReferencedRemove(gid);
}
void populateReferencedLids() {
_attr->populateReferencedLids();
@@ -300,7 +303,7 @@ TEST_F("require that update() uses gid-mapper to set referenced lid", Fixture)
TEST_DO(f.assertRefLid(5, 0));
}
-TEST_F("require that notifyGidToLidChange() updates lid-2-lid mapping", Fixture)
+TEST_F("require that notifyReferencedPut() updates lid-2-lid mapping", Fixture)
{
f.ensureDocIdLimit(4);
f.set(1, toGid(doc1));
@@ -310,9 +313,9 @@ TEST_F("require that notifyGidToLidChange() updates lid-2-lid mapping", Fixture)
TEST_DO(f.assertRefLid(1, 0));
TEST_DO(f.assertRefLid(2, 0));
TEST_DO(f.assertRefLid(3, 0));
- f.notifyGidToLidChange(toGid(doc1), 10);
- f.notifyGidToLidChange(toGid(doc2), 20);
- f.notifyGidToLidChange(toGid(doc3), 30);
+ f.notifyReferencedPut(toGid(doc1), 10);
+ f.notifyReferencedPut(toGid(doc2), 20);
+ f.notifyReferencedPut(toGid(doc3), 30);
TEST_DO(f.assertRefLid(1, 10));
TEST_DO(f.assertRefLid(2, 20));
TEST_DO(f.assertRefLid(3, 10));
@@ -369,18 +372,18 @@ TEST_F("require that populateReferencedLids() uses gid-mapper to update lid-2-li
EXPECT_TRUE(vespalib::unlink("test.udat"));
}
-TEST_F("Require that notifyGidToLidChange changes reverse mapping", Fixture)
+TEST_F("Require that notifyReferencedPut and notifyReferencedRemove changes reverse mapping", Fixture)
{
TEST_DO(preparePopulateReferencedLids(f));
TEST_DO(f.assertLids(10, { }));
TEST_DO(f.assertLids(11, { }));
- f.notifyGidToLidChange(toGid(doc1), 10);
+ f.notifyReferencedPut(toGid(doc1), 10);
TEST_DO(f.assertLids(10, { 1, 3}));
TEST_DO(f.assertLids(11, { }));
- f.notifyGidToLidChange(toGid(doc1), 11);
+ f.notifyReferencedPut(toGid(doc1), 11);
TEST_DO(f.assertLids(10, { }));
TEST_DO(f.assertLids(11, { 1, 3}));
- f.notifyGidToLidChange(toGid(doc1), 0);
+ f.notifyReferencedRemove(toGid(doc1));
TEST_DO(f.assertLids(10, { }));
TEST_DO(f.assertLids(11, { }));
}
@@ -406,8 +409,8 @@ TEST_F("Require that reverse mapping recovers from temporary out of order glitch
TEST_DO(f.assertRefLid(2, 17));
TEST_DO(f.assertRefLid(3, 10));
// Notify reference attribute about gid to lid mapping changes
- f.notifyGidToLidChange(toGid(doc1), 0);
- f.notifyGidToLidChange(toGid(doc3), 10);
+ f.notifyReferencedRemove(toGid(doc1));
+ f.notifyReferencedPut(toGid(doc3), 10);
TEST_DO(f.assertRefLid(1, 0));
TEST_DO(f.assertRefLid(2, 17));
TEST_DO(f.assertRefLid(3, 10));
diff --git a/searchlib/src/tests/hitcollector/hitcollector_test.cpp b/searchlib/src/tests/hitcollector/hitcollector_test.cpp
index b38f5cdb168..3f49c6969a0 100644
--- a/searchlib/src/tests/hitcollector/hitcollector_test.cpp
+++ b/searchlib/src/tests/hitcollector/hitcollector_test.cpp
@@ -30,7 +30,7 @@ struct PredefinedScorer : public HitCollector::DocumentScorer
ScoreMap _scores;
PredefinedScorer(const ScoreMap &scores) : _scores(scores) {}
virtual feature_t score(uint32_t docId) override {
- feature_t retval = 0.0;
+ feature_t retval = default_rank_value;
auto itr = _scores.find(docId);
if (itr != _scores.end()) {
retval = itr->second;
@@ -436,7 +436,7 @@ TEST_F("require that result set is merged correctly with first phase ranking",
expRh.push_back(RankedHit());
expRh.back()._docId = i;
// only the maxHitsSize best hits gets a score
- expRh.back()._rankValue = (i < f.numDocs - f.maxHitsSize) ? 0 : i + 1000;
+ expRh.back()._rankValue = (i < f.numDocs - f.maxHitsSize) ? default_rank_value : i + 1000;
}
std::unique_ptr<ResultSet> rs = f.hc.getResultSet();
TEST_DO(checkResult(*rs.get(), expRh));
@@ -448,7 +448,7 @@ addExpectedHitForMergeTest(const MergeResultSetFixture &f, std::vector<RankedHit
expRh.push_back(RankedHit());
expRh.back()._docId = docId;
if (docId < f.numDocs - f.maxHitsSize) { // only the maxHitsSize best hits gets a score
- expRh.back()._rankValue = 0;
+ expRh.back()._rankValue = default_rank_value;
} else if (docId < f.numDocs - f.maxHeapSize) { // only first phase ranking
expRh.back()._rankValue = docId + 500; // adjusted with - 500
} else { // second phase ranking on the maxHeapSize best hits
@@ -497,7 +497,7 @@ TEST("require that hits can be added out of order when passing array limit") {
for (uint32_t i = 0; i < numHits; ++i) {
expRh.push_back(RankedHit());
expRh.back()._docId = i;
- expRh.back()._rankValue = (i < 50) ? 0 : (i + 100);
+ expRh.back()._rankValue = (i < 50) ? default_rank_value : (i + 100);
}
// add results in reverse order
for (uint32_t i = numHits; i-- > 0; ) {
@@ -516,7 +516,7 @@ TEST("require that hits can be added out of order only after passing array limit
for (uint32_t i = 0; i < numHits; ++i) {
expRh.push_back(RankedHit());
expRh.back()._docId = i;
- expRh.back()._rankValue = (i < 50) ? 0 : (i + 100);
+ expRh.back()._rankValue = (i < 50) ? default_rank_value : (i + 100);
}
// add results in reverse order
const uint32_t numInOrder = numHits - 30;
diff --git a/searchlib/src/vespa/searchlib/attribute/reference_attribute.cpp b/searchlib/src/vespa/searchlib/attribute/reference_attribute.cpp
index 7e17ba3a808..2cb05b14503 100644
--- a/searchlib/src/vespa/searchlib/attribute/reference_attribute.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/reference_attribute.cpp
@@ -320,12 +320,23 @@ ReferenceAttribute::setGidToLidMapperFactory(std::shared_ptr<IGidToLidMapperFact
}
void
-ReferenceAttribute::notifyGidToLidChange(const GlobalId &gid, DocId referencedLid)
+ReferenceAttribute::notifyReferencedPut(const GlobalId &gid, DocId referencedLid)
{
EntryRef ref = _store.find(gid);
if (ref.valid()) {
const auto &entry = _store.get(ref);
- _referenceMappings.notifyGidToLidChange(entry, referencedLid);
+ _referenceMappings.notifyReferencedPut(entry, referencedLid);
+ commit();
+ }
+}
+
+void
+ReferenceAttribute::notifyReferencedRemove(const GlobalId &gid)
+{
+ EntryRef ref = _store.find(gid);
+ if (ref.valid()) {
+ const auto &entry = _store.get(ref);
+ _referenceMappings.notifyReferencedRemove(entry);
commit();
}
}
diff --git a/searchlib/src/vespa/searchlib/attribute/reference_attribute.h b/searchlib/src/vespa/searchlib/attribute/reference_attribute.h
index 4ee277b8733..ce7c908db99 100644
--- a/searchlib/src/vespa/searchlib/attribute/reference_attribute.h
+++ b/searchlib/src/vespa/searchlib/attribute/reference_attribute.h
@@ -78,7 +78,8 @@ public:
ReverseMappingRefs getReverseMappingRefs() const { return _referenceMappings.getReverseMappingRefs(); }
const ReverseMapping &getReverseMapping() const { return _referenceMappings.getReverseMapping(); }
- void notifyGidToLidChange(const GlobalId &gid, DocId referencedLid);
+ void notifyReferencedPut(const GlobalId &gid, DocId referencedLid);
+ void notifyReferencedRemove(const GlobalId &gid);
void populateReferencedLids();
virtual void clearDocs(DocId lidLow, DocId lidLimit) override;
virtual void onShrinkLidSpace() override;
diff --git a/searchlib/src/vespa/searchlib/attribute/reference_mappings.cpp b/searchlib/src/vespa/searchlib/attribute/reference_mappings.cpp
index 4edd9d45e60..f2462cdc40d 100644
--- a/searchlib/src/vespa/searchlib/attribute/reference_mappings.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/reference_mappings.cpp
@@ -93,7 +93,7 @@ ReferenceMappings::buildReverseMapping(const Reference &entry, const std::vector
}
void
-ReferenceMappings::notifyGidToLidChange(const Reference &entry, uint32_t referencedLid)
+ReferenceMappings::notifyReferencedPut(const Reference &entry, uint32_t referencedLid)
{
uint32_t oldReferencedLid = entry.lid();
if (oldReferencedLid != referencedLid) {
@@ -107,6 +107,20 @@ ReferenceMappings::notifyGidToLidChange(const Reference &entry, uint32_t referen
}
void
+ReferenceMappings::notifyReferencedRemove(const Reference &entry)
+{
+ uint32_t oldReferencedLid = entry.lid();
+ if (oldReferencedLid != 0) {
+ if (oldReferencedLid < _reverseMappingIndices.size()) {
+ _reverseMappingIndices[oldReferencedLid] = EntryRef();
+ }
+ entry.setLid(0);
+ }
+ syncReverseMappingIndices(entry);
+ syncForwardMapping(entry);
+}
+
+void
ReferenceMappings::onAddDocs(uint32_t docIdLimit)
{
_referencedLids.reserve(docIdLimit);
diff --git a/searchlib/src/vespa/searchlib/attribute/reference_mappings.h b/searchlib/src/vespa/searchlib/attribute/reference_mappings.h
index 3190e1b5a83..73754d9cb13 100644
--- a/searchlib/src/vespa/searchlib/attribute/reference_mappings.h
+++ b/searchlib/src/vespa/searchlib/attribute/reference_mappings.h
@@ -57,7 +57,8 @@ public:
void transferHoldLists(generation_t generation) { _reverseMapping.transferHoldLists(generation); }
// Handle mapping changes
- void notifyGidToLidChange(const Reference &entry, uint32_t referencedLid);
+ void notifyReferencedPut(const Reference &entry, uint32_t referencedLid);
+ void notifyReferencedRemove(const Reference &entry);
void removeReverseMapping(const Reference &entry, uint32_t lid);
void addReverseMapping(const Reference &entry, uint32_t lid);
void syncMappings(const Reference &entry);
diff --git a/searchlib/src/vespa/searchlib/common/hitrank.h b/searchlib/src/vespa/searchlib/common/hitrank.h
index abc714660cf..9f40cf9277c 100644
--- a/searchlib/src/vespa/searchlib/common/hitrank.h
+++ b/searchlib/src/vespa/searchlib/common/hitrank.h
@@ -2,10 +2,13 @@
#pragma once
+#include <cmath>
+
namespace search {
typedef double HitRank;
typedef double SignedHitRank;
+constexpr HitRank default_rank_value = -HUGE_VAL;
} // namespace search
diff --git a/searchlib/src/vespa/searchlib/common/rankedhit.h b/searchlib/src/vespa/searchlib/common/rankedhit.h
index bd66f884a08..d56fa92442f 100644
--- a/searchlib/src/vespa/searchlib/common/rankedhit.h
+++ b/searchlib/src/vespa/searchlib/common/rankedhit.h
@@ -11,8 +11,8 @@
namespace search {
struct RankedHit {
- RankedHit() : _docId(0), _rankValue(0) { }
- RankedHit(unsigned int docId, HitRank rank=0.0) : _docId(docId), _rankValue(rank) { }
+ RankedHit() : _docId(0), _rankValue(default_rank_value) { }
+ RankedHit(unsigned int docId, HitRank rank = default_rank_value) : _docId(docId), _rankValue(rank) { }
unsigned int getDocId() const { return _docId & 0x7fffffff; }
bool hasMore() const { return _docId & 0x80000000; }
HitRank getRank() const { return _rankValue; }
diff --git a/searchlib/src/vespa/searchlib/common/resultset.cpp b/searchlib/src/vespa/searchlib/common/resultset.cpp
index 69f3b13d709..5ad89bf49d7 100644
--- a/searchlib/src/vespa/searchlib/common/resultset.cpp
+++ b/searchlib/src/vespa/searchlib/common/resultset.cpp
@@ -111,7 +111,7 @@ ResultSet::mergeWithBitOverflow()
// bitvector hits before array hits
while (bidx < firstArrayHit) {
tgtA->_docId = bidx;
- tgtA->_rankValue = 0;
+ tgtA->_rankValue = default_rank_value;
tgtA++;
bidx = bitVector->getNextTrueBit(bidx + 1);
}
@@ -123,7 +123,7 @@ ResultSet::mergeWithBitOverflow()
tgtA->_rankValue = oldA->_rankValue;
oldA++;
} else {
- tgtA->_rankValue = 0;
+ tgtA->_rankValue = default_rank_value;
}
tgtA++;
bidx = bitVector->getNextTrueBit(bidx + 1);
@@ -134,7 +134,7 @@ ResultSet::mergeWithBitOverflow()
// bitvector hits after array hits
while (tgtA < tgtAEnd) {
tgtA->_docId = bidx;
- tgtA->_rankValue = 0;
+ tgtA->_rankValue = default_rank_value;
tgtA++;
bidx = bitVector->getNextTrueBit(bidx + 1);
}
diff --git a/searchlib/src/vespa/searchlib/queryeval/hitcollector.cpp b/searchlib/src/vespa/searchlib/queryeval/hitcollector.cpp
index 3601a93fdc2..7d79d0f659e 100644
--- a/searchlib/src/vespa/searchlib/queryeval/hitcollector.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/hitcollector.cpp
@@ -306,7 +306,7 @@ HitCollector::getResultSet()
rh[j]._rankValue = getReScore(_hits[i].second);
++i;
} else {
- rh[j]._rankValue = 0;
+ rh[j]._rankValue = default_rank_value;
}
}
} else {
@@ -317,7 +317,7 @@ HitCollector::getResultSet()
rh[j]._rankValue = _hits[i].second;
++i;
} else {
- rh[j]._rankValue = 0;
+ rh[j]._rankValue = default_rank_value;
}
}
}
diff --git a/vespajlib/src/main/java/com/yahoo/collections/ByteArrayComparator.java b/vespajlib/src/main/java/com/yahoo/collections/ByteArrayComparator.java
index d6f73cea3e2..d8b964a2a3c 100644
--- a/vespajlib/src/main/java/com/yahoo/collections/ByteArrayComparator.java
+++ b/vespajlib/src/main/java/com/yahoo/collections/ByteArrayComparator.java
@@ -5,9 +5,10 @@ package com.yahoo.collections;
* Utility class which is useful when implementing <code>Comparable</code> and one needs to
* compare byte arrays as instance variables.
*
- * @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a>
+ * @author Einar M R Rosenvinge
*/
public class ByteArrayComparator {
+
/**
* Compare the arguments. Shorter arrays are always considered
* smaller than longer arrays. For arrays of equal lengths, the elements
@@ -29,17 +30,18 @@ public class ByteArrayComparator {
return 1;
}
- //lengths are equal, compare contents
+ // lengths are equal, compare contents
for (int i = 0; i < first.length; i++) {
if (first[i] < second[i]) {
return -1;
} else if (first[i] > second[i]) {
return 1;
}
- //values at index i are equal, continue...
+ // values at index i are equal, continue...
}
- //we haven't returned yet; contents must be equal:
+ // we haven't returned yet; contents must be equal:
return 0;
}
+
}
diff --git a/vespamalloc/src/tests/allocfree/CMakeLists.txt b/vespamalloc/src/tests/allocfree/CMakeLists.txt
index cf0aab705a3..52c0c03d079 100644
--- a/vespamalloc/src/tests/allocfree/CMakeLists.txt
+++ b/vespamalloc/src/tests/allocfree/CMakeLists.txt
@@ -25,4 +25,4 @@ vespa_add_executable(vespamalloc_linklist_test_app
)
vespa_add_test(NAME vespamalloc_allocfree_shared_test_app NO_VALGRIND COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/allocfree_test.sh BENCHMARK
DEPENDS vespamalloc_realloc_test_app vespamalloc_allocfree_shared_test_app vespamalloc_linklist_test_app
- vespamalloc vespamalloc_vespamallocd)
+ vespamalloc vespamallocd)
diff --git a/vespamalloc/src/tests/allocfree/allocfree_test.sh b/vespamalloc/src/tests/allocfree/allocfree_test.sh
index d52bec12bd9..810a66f632b 100755
--- a/vespamalloc/src/tests/allocfree/allocfree_test.sh
+++ b/vespamalloc/src/tests/allocfree/allocfree_test.sh
@@ -5,7 +5,7 @@ set -e
TIME=/usr/bin/time
VESPA_MALLOC_SO=../../../src/vespamalloc/libvespamalloc.so
-VESPA_MALLOC_SO_D=../../../src/vespamalloc/libvespamalloc_vespamallocd.so
+VESPA_MALLOC_SO_D=../../../src/vespamalloc/libvespamallocd.so
LD_PRELOAD=$VESPA_MALLOC_SO ./vespamalloc_realloc_test_app
LD_PRELOAD=$VESPA_MALLOC_SO_D ./vespamalloc_realloc_test_app
diff --git a/vespamalloc/src/tests/doubledelete/CMakeLists.txt b/vespamalloc/src/tests/doubledelete/CMakeLists.txt
index c6fe46be614..2017a242d1b 100644
--- a/vespamalloc/src/tests/doubledelete/CMakeLists.txt
+++ b/vespamalloc/src/tests/doubledelete/CMakeLists.txt
@@ -11,4 +11,4 @@ vespa_add_executable(vespamalloc_expectsignal_app
)
vespa_add_test(NAME vespamalloc_doubledelete_test_app NO_VALGRIND COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/doubledelete_test.sh
DEPENDS vespamalloc_doubledelete_test_app vespamalloc_expectsignal_app
- vespamalloc vespamalloc_vespamallocd)
+ vespamalloc vespamallocd)
diff --git a/vespamalloc/src/tests/doubledelete/doubledelete_test.sh b/vespamalloc/src/tests/doubledelete/doubledelete_test.sh
index 7bea46f6a57..ab0b4943b11 100755
--- a/vespamalloc/src/tests/doubledelete/doubledelete_test.sh
+++ b/vespamalloc/src/tests/doubledelete/doubledelete_test.sh
@@ -5,4 +5,4 @@ set -e
LD_PRELOAD=../../../src/vespamalloc/libvespamalloc.so ./vespamalloc_doubledelete_test_app
ulimit -c 0
-./vespamalloc_expectsignal_app 6 "LD_PRELOAD=../../../src/vespamalloc/libvespamalloc_vespamallocd.so ./vespamalloc_doubledelete_test_app"
+./vespamalloc_expectsignal_app 6 "LD_PRELOAD=../../../src/vespamalloc/libvespamallocd.so ./vespamalloc_doubledelete_test_app"
diff --git a/vespamalloc/src/tests/overwrite/CMakeLists.txt b/vespamalloc/src/tests/overwrite/CMakeLists.txt
index 5855b35ada9..29b6ac46eb4 100644
--- a/vespamalloc/src/tests/overwrite/CMakeLists.txt
+++ b/vespamalloc/src/tests/overwrite/CMakeLists.txt
@@ -12,4 +12,4 @@ vespa_add_executable(vespamalloc_expectsignal-overwrite_app
)
vespa_add_test(NAME vespamalloc_overwrite_test_app NO_VALGRIND COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/overwrite_test.sh
DEPENDS vespamalloc_overwrite_test_app vespamalloc_expectsignal-overwrite_app
- vespamalloc vespamalloc_vespamallocd)
+ vespamalloc vespamallocd)
diff --git a/vespamalloc/src/tests/overwrite/overwrite_test.sh b/vespamalloc/src/tests/overwrite/overwrite_test.sh
index 9d7de928a75..05b1836e94e 100755
--- a/vespamalloc/src/tests/overwrite/overwrite_test.sh
+++ b/vespamalloc/src/tests/overwrite/overwrite_test.sh
@@ -3,8 +3,8 @@
set -e
LD_PRELOAD=../../../src/vespamalloc/libvespamalloc.so ./vespamalloc_overwrite_test_app
-LD_PRELOAD=../../../src/vespamalloc/libvespamalloc_vespamallocd.so ./vespamalloc_overwrite_test_app testmemoryfill
+LD_PRELOAD=../../../src/vespamalloc/libvespamallocd.so ./vespamalloc_overwrite_test_app testmemoryfill
ulimit -c 0;
-./vespamalloc_expectsignal-overwrite_app 6 "LD_PRELOAD=../../../src/vespamalloc/libvespamalloc_vespamallocd.so ./vespamalloc_overwrite_test_app prewrite"
-./vespamalloc_expectsignal-overwrite_app 6 "LD_PRELOAD=../../../src/vespamalloc/libvespamalloc_vespamallocd.so ./vespamalloc_overwrite_test_app postwrite"
-./vespamalloc_expectsignal-overwrite_app 6 "LD_PRELOAD=../../../src/vespamalloc/libvespamalloc_vespamallocd.so ./vespamalloc_overwrite_test_app writeafterfree"
+./vespamalloc_expectsignal-overwrite_app 6 "LD_PRELOAD=../../../src/vespamalloc/libvespamallocd.so ./vespamalloc_overwrite_test_app prewrite"
+./vespamalloc_expectsignal-overwrite_app 6 "LD_PRELOAD=../../../src/vespamalloc/libvespamallocd.so ./vespamalloc_overwrite_test_app postwrite"
+./vespamalloc_expectsignal-overwrite_app 6 "LD_PRELOAD=../../../src/vespamalloc/libvespamallocd.so ./vespamalloc_overwrite_test_app writeafterfree"
diff --git a/vespamalloc/src/tests/stacktrace/CMakeLists.txt b/vespamalloc/src/tests/stacktrace/CMakeLists.txt
index 1259f52c326..491b0d4089e 100644
--- a/vespamalloc/src/tests/stacktrace/CMakeLists.txt
+++ b/vespamalloc/src/tests/stacktrace/CMakeLists.txt
@@ -8,5 +8,5 @@ vespa_add_executable(vespamalloc_stacktrace_test_app TEST
vespa_add_test(
NAME vespamalloc_stacktrace_test_app
NO_VALGRIND COMMAND vespamalloc_stacktrace_test_app
- ENVIRONMENT "LD_PRELOAD=${CMAKE_CURRENT_BINARY_DIR}/../../vespamalloc/libvespamalloc_vespamallocdst16.so"
+ ENVIRONMENT "LD_PRELOAD=${CMAKE_CURRENT_BINARY_DIR}/../../vespamalloc/libvespamallocdst16.so"
NO_VALGRIND)
diff --git a/vespamalloc/src/tests/thread/CMakeLists.txt b/vespamalloc/src/tests/thread/CMakeLists.txt
index 2be281a6bd0..53d61f4aa76 100644
--- a/vespamalloc/src/tests/thread/CMakeLists.txt
+++ b/vespamalloc/src/tests/thread/CMakeLists.txt
@@ -9,4 +9,4 @@ vespa_add_executable(vespamalloc_racemanythreads_test_app
)
vespa_add_test(NAME vespamalloc_thread_test_app NO_VALGRIND COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/thread_test.sh
DEPENDS vespamalloc_thread_test_app vespamalloc_racemanythreads_test_app
- vespamalloc vespamalloc_vespamallocd)
+ vespamalloc vespamallocd)
diff --git a/vespamalloc/src/tests/thread/thread_test.sh b/vespamalloc/src/tests/thread/thread_test.sh
index 8b3d94e922d..b06c27e4a17 100755
--- a/vespamalloc/src/tests/thread/thread_test.sh
+++ b/vespamalloc/src/tests/thread/thread_test.sh
@@ -15,7 +15,7 @@ else
fi
VESPA_MALLOC_SO=../../../src/vespamalloc/libvespamalloc.so
-VESPA_MALLOC_SO_D=../../../src/vespamalloc/libvespamalloc_vespamallocd.so
+VESPA_MALLOC_SO_D=../../../src/vespamalloc/libvespamallocd.so
LD_PRELOAD=$VESPA_MALLOC_SO ./vespamalloc_thread_test_app return 20
LD_PRELOAD=$VESPA_MALLOC_SO ./vespamalloc_thread_test_app exit 20
diff --git a/vespamalloc/src/vespamalloc/CMakeLists.txt b/vespamalloc/src/vespamalloc/CMakeLists.txt
index b065df672dd..d43d779217d 100644
--- a/vespamalloc/src/vespamalloc/CMakeLists.txt
+++ b/vespamalloc/src/vespamalloc/CMakeLists.txt
@@ -7,7 +7,7 @@ vespa_add_library(vespamalloc
DEPENDS
dl
)
-vespa_add_library(vespamalloc_vespamallocd
+vespa_add_library(vespamallocd
SOURCES
$<TARGET_OBJECTS:vespamalloc_mallocd>
$<TARGET_OBJECTS:vespamalloc_util>
@@ -15,7 +15,7 @@ vespa_add_library(vespamalloc_vespamallocd
DEPENDS
dl
)
-vespa_add_library(vespamalloc_vespamallocdst16
+vespa_add_library(vespamallocdst16
SOURCES
$<TARGET_OBJECTS:vespamalloc_mallocdst16>
$<TARGET_OBJECTS:vespamalloc_util>
@@ -23,7 +23,7 @@ vespa_add_library(vespamalloc_vespamallocdst16
DEPENDS
dl
)
-vespa_add_library(vespamalloc_vespamallocdst16_nl
+vespa_add_library(vespamallocdst16_nl
SOURCES
$<TARGET_OBJECTS:vespamalloc_mallocdst16_nl>
$<TARGET_OBJECTS:vespamalloc_util>
@@ -31,7 +31,7 @@ vespa_add_library(vespamalloc_vespamallocdst16_nl
DEPENDS
dl
)
-vespa_add_library(vespamalloc_vespammap
+vespa_add_library(vespammap
SOURCES
$<TARGET_OBJECTS:vespamalloc_mmap>
INSTALL lib64/vespa/malloc