diff options
Diffstat (limited to 'container-core/src/main/java')
15 files changed, 12 insertions, 421 deletions
diff --git a/container-core/src/main/java/com/yahoo/container/Container.java b/container-core/src/main/java/com/yahoo/container/Container.java index e84c8b340a4..031d4a26d05 100755 --- a/container-core/src/main/java/com/yahoo/container/Container.java +++ b/container-core/src/main/java/com/yahoo/container/Container.java @@ -3,13 +3,11 @@ package com.yahoo.container; import com.yahoo.component.AbstractComponent; import com.yahoo.component.provider.ComponentRegistry; -import com.yahoo.container.core.config.BundleLoader; import com.yahoo.filedistribution.fileacquirer.FileAcquirer; import com.yahoo.filedistribution.fileacquirer.FileAcquirerFactory; import com.yahoo.jdisc.handler.RequestHandler; import com.yahoo.jdisc.service.ClientProvider; import com.yahoo.jdisc.service.ServerProvider; -import com.yahoo.osgi.Osgi; import com.yahoo.vespa.config.ConfigTransformer; import com.yahoo.vespa.config.UrlDownloader; @@ -34,8 +32,6 @@ public class Container { private volatile FileAcquirer fileAcquirer; private volatile UrlDownloader urlDownloader; - private volatile BundleLoader bundleLoader; - private static Logger logger = Logger.getLogger(Container.class.getName()); // TODO: Make this final again. @@ -43,12 +39,6 @@ public class Container { public static Container get() { return instance; } - /** @deprecated do not use */ - @Deprecated // TODO: Remove - public void setOsgi(Osgi osgi) { - bundleLoader = new BundleLoader(osgi); - } - public void shutdown() { if (fileAcquirer != null) fileAcquirer.shutdown(); @@ -61,14 +51,6 @@ public class Container { return fileAcquirer; } - /** @deprecated do not use */ - @Deprecated // TODO: Remove - public BundleLoader getBundleLoader() { - if (bundleLoader == null) - bundleLoader = new BundleLoader(null); - return bundleLoader; - } - /** * Hack. For internal use only, will be removed later * diff --git a/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java b/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java index f7a3f49538e..cca3c5c4610 100644 --- a/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java +++ b/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java @@ -9,7 +9,6 @@ import com.yahoo.component.ComponentSpecification; import com.yahoo.component.provider.ComponentRegistry; import com.yahoo.concurrent.ThreadFactoryFactory; import com.yahoo.config.FileReference; -import com.yahoo.container.core.DiagnosticsConfig; import com.yahoo.container.di.ComponentDeconstructor; import com.yahoo.container.di.Container; import com.yahoo.container.di.componentgraph.core.ComponentGraph; @@ -148,9 +147,6 @@ public class HandlersConfigurerDi { protected void configure() { bind(com.yahoo.container.Container.class).toInstance(vespaContainer); bind(com.yahoo.statistics.Statistics.class).toInstance(Statistics.nullImplementation); - bind(com.yahoo.container.protect.FreezeDetector.class).toInstance( - new com.yahoo.container.protect.FreezeDetector( - new DiagnosticsConfig(new DiagnosticsConfig.Builder().disabled(true)))); bind(AccessLog.class).toInstance(new AccessLog(new ComponentRegistry<>())); bind(Executor.class).toInstance(Executors.newCachedThreadPool(ThreadFactoryFactory.getThreadFactory("HandlersConfigurerDI"))); diff --git a/container-core/src/main/java/com/yahoo/container/handler/VipStatusHandler.java b/container-core/src/main/java/com/yahoo/container/handler/VipStatusHandler.java index 60affddeb60..c8cf575dff3 100644 --- a/container-core/src/main/java/com/yahoo/container/handler/VipStatusHandler.java +++ b/container-core/src/main/java/com/yahoo/container/handler/VipStatusHandler.java @@ -38,7 +38,6 @@ public final class VipStatusHandler extends ThreadedHttpRequestHandler { private final boolean accessDisk; private final File statusFile; private final VipStatus vipStatus; - private final boolean noSearchBackendsImpliesOutOfService; private volatile boolean previouslyInRotation = true; @@ -57,7 +56,7 @@ public final class VipStatusHandler extends ThreadedHttpRequestHandler { private StatusResponse() { super(com.yahoo.jdisc.http.HttpResponse.Status.OK); // status may be overwritten below - if (noSearchBackendsImpliesOutOfService && !vipStatus.isInRotation()) { + if (vipStatus != null && ! vipStatus.isInRotation()) { searchContainerOutOfService(); } else if (accessDisk) { preSlurpFile(); @@ -179,7 +178,6 @@ public final class VipStatusHandler extends ThreadedHttpRequestHandler { super(executor, metric); this.accessDisk = vipConfig.accessdisk(); this.statusFile = new File(Defaults.getDefaults().underVespaHome(vipConfig.statusfile())); - this.noSearchBackendsImpliesOutOfService = vipConfig.noSearchBackendsImpliesOutOfService(); this.vipStatus = vipStatus; } @@ -187,9 +185,8 @@ public final class VipStatusHandler extends ThreadedHttpRequestHandler { public HttpResponse handle(HttpRequest request) { if (metric != null) metric.add(NUM_REQUESTS_METRIC, 1, null); - if (noSearchBackendsImpliesOutOfService) { + if (vipStatus != null) updateAndLogRotationState(); - } return new StatusResponse(); } diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java b/container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java index 73b56cd89f5..705092ef12e 100644 --- a/container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java +++ b/container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java @@ -295,7 +295,6 @@ public abstract class LoggingRequestHandler extends ThreadedHttpRequestHandler { logEntry.setRemotePort(remoteAddress.getPort()); } URI uri = AccessLogUtil.getUri(httpRequest); - setDeprecatedUri(logEntry, uri); logEntry.setRawPath(uri.getRawPath()); logEntry.setRawQuery(uri.getRawQuery()); logEntry.setUserAgent(AccessLogUtil.getUserAgentHeader(httpRequest)); @@ -307,9 +306,4 @@ public abstract class LoggingRequestHandler extends ThreadedHttpRequestHandler { } } - @SuppressWarnings("deprecation") - private static void setDeprecatedUri(AccessLogEntry logEntry, URI uri) { - logEntry.setURI(uri); - } - } diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/MetricConsumerFactory.java b/container-core/src/main/java/com/yahoo/container/jdisc/MetricConsumerFactory.java index 50052bbf70c..d0cf07584e4 100644 --- a/container-core/src/main/java/com/yahoo/container/jdisc/MetricConsumerFactory.java +++ b/container-core/src/main/java/com/yahoo/container/jdisc/MetricConsumerFactory.java @@ -4,7 +4,7 @@ package com.yahoo.container.jdisc; import com.yahoo.jdisc.application.MetricConsumer; /** - * <p>This is the interface to implement if one wishes to configure a non-default <tt>MetricConsumer</tt>. Simply + * <p>This is the interface to implement if one wishes to configure a non-default <code>MetricConsumer</code>. Simply * add the implementing class as a component in your services.xml file.</p> * * @author Simon Thoresen Hult diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedHttpRequestHandler.java b/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedHttpRequestHandler.java index 670c48bb339..dddde1205ca 100644 --- a/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedHttpRequestHandler.java +++ b/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedHttpRequestHandler.java @@ -30,7 +30,6 @@ import java.util.logging.Logger; public abstract class ThreadedHttpRequestHandler extends ThreadedRequestHandler { public static final String CONTENT_TYPE = "Content-Type"; - public static final String DATE = "Date"; // TODO: Remove on Vespa 7 private static final String RENDERING_ERRORS = "rendering_errors"; /** Logger for subclasses */ diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/VespaHeaders.java b/container-core/src/main/java/com/yahoo/container/jdisc/VespaHeaders.java index 715038470b9..309405f1242 100644 --- a/container-core/src/main/java/com/yahoo/container/jdisc/VespaHeaders.java +++ b/container-core/src/main/java/com/yahoo/container/jdisc/VespaHeaders.java @@ -54,6 +54,7 @@ public final class VespaHeaders { } } + /** Returns true if this is a benchmarking request, according to headers */ public static boolean benchmarkOutput(com.yahoo.container.jdisc.HttpRequest request) { return request.getHeader(BenchmarkingHeaders.REQUEST) != null; } @@ -69,8 +70,7 @@ public final class VespaHeaders { * @param coverage The Coverage to read data from. */ public static void benchmarkOutput(HeaderFields responseHeaders, boolean benchmarkCoverage, - Timing t, HitCounts c, int errorCount, Coverage coverage) - { + Timing t, HitCounts c, int errorCount, Coverage coverage) { final long renderStartTime = System.currentTimeMillis(); if (c != null) { // Fill inn response getHeaders diff --git a/container-core/src/main/java/com/yahoo/container/protect/FreezeDetector.java b/container-core/src/main/java/com/yahoo/container/protect/FreezeDetector.java deleted file mode 100644 index 6a8a3239c17..00000000000 --- a/container-core/src/main/java/com/yahoo/container/protect/FreezeDetector.java +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.container.protect; - -import java.util.Timer; - -import com.yahoo.component.AbstractComponent; -import com.yahoo.concurrent.ThreadLocalDirectory; -import com.yahoo.container.core.DiagnosticsConfig; - -/** - * Runs and initializes a {@link Watchdog} instance. - * - * @author Steinar Knutsen - * @deprecated this is not in use and will be removed in the next major release - */ -@Deprecated -// TODO: Remove on Vespa 7 -public class FreezeDetector extends AbstractComponent { - - private final Timer timeoutWatchdog; - private final Watchdog watchdog; - - public FreezeDetector(DiagnosticsConfig diagnosticsConfig) { - timeoutWatchdog = null; - watchdog = null; - } - - public void register(ThreadLocalDirectory<TimeoutRate, Boolean> timeouts) { - if (watchdog == null) { - return; - } - watchdog.addTimeouts(timeouts); - } - - public boolean isBreakdown() { - if (watchdog == null) { - return false; - } - return watchdog.isBreakdown(); - } - - public void unRegister(ThreadLocalDirectory<TimeoutRate, Boolean> timeouts) { - if (watchdog == null) { - return; - } - watchdog.removeTimeouts(timeouts); - } - - @Override - public void deconstruct() { - super.deconstruct(); - if (timeoutWatchdog != null) { - timeoutWatchdog.cancel(); - } - } - -} diff --git a/container-core/src/main/java/com/yahoo/container/protect/TimeoutCollector.java b/container-core/src/main/java/com/yahoo/container/protect/TimeoutCollector.java deleted file mode 100644 index e31716a292e..00000000000 --- a/container-core/src/main/java/com/yahoo/container/protect/TimeoutCollector.java +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.container.protect; - -import com.yahoo.concurrent.ThreadLocalDirectory.Updater; - -/** - * Allocator and glue for sampling timeouts in SearchHandler. - * - * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a> - * @deprecated this is not in use and will be removed in the next major release - */ -@Deprecated -public final class TimeoutCollector implements Updater<TimeoutRate, Boolean> { - - @Override - public TimeoutRate createGenerationInstance(TimeoutRate previous) { - return new TimeoutRate(); - } - - @Override - public TimeoutRate update(TimeoutRate current, Boolean x) { - current.addQuery(x); - return current; - } - -} diff --git a/container-core/src/main/java/com/yahoo/container/protect/TimeoutRate.java b/container-core/src/main/java/com/yahoo/container/protect/TimeoutRate.java deleted file mode 100644 index 4bb68fedb9b..00000000000 --- a/container-core/src/main/java/com/yahoo/container/protect/TimeoutRate.java +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.container.protect; - -/** - * Helper class to account for measuring how many queries times outs. - * - * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a> - * @deprecated this is not in use and will be removed in the next major release - */ -// TODO: Remove on Vespa 7 -@Deprecated -public final class TimeoutRate { - - private int timeouts = 0; - private int total = 0; - - public void addQuery(Boolean timeout) { - if (timeout) { - timeouts += 1; - } - total += 1; - } - - public void merge(TimeoutRate other) { - timeouts += other.timeouts; - total += other.total; - } - - public double timeoutFraction() { - if (total == 0) { - return 0.0d; - } else { - return ((double) timeouts) / ((double) total); - } - } - - public int getTotal() { - return total; - } - -} diff --git a/container-core/src/main/java/com/yahoo/container/protect/Watchdog.java b/container-core/src/main/java/com/yahoo/container/protect/Watchdog.java deleted file mode 100644 index ff425242587..00000000000 --- a/container-core/src/main/java/com/yahoo/container/protect/Watchdog.java +++ /dev/null @@ -1,168 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.container.protect; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.TimerTask; -import java.util.logging.Level; -import java.util.logging.Logger; - -import com.yahoo.concurrent.ThreadLocalDirectory; -import com.yahoo.log.LogLevel; -import com.yahoo.protect.Process; - -/** - * Watchdog for a frozen process, too many timeouts, etc. - * - * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a> - * @deprecated this is not in use and will be removed in the next major release - */ -// TODO: Remove on Vespa 7 -@Deprecated -class Watchdog extends TimerTask { - - public static final String FREEZEDETECTOR_DISABLE = "vespa.freezedetector.disable"; - Logger log = Logger.getLogger(Watchdog.class.getName()); - private long lastRun = 0L; - private long lastQpsCheck = 0L; - // Local copy to avoid ever _reading_ the volatile version - private boolean breakdownCopy = false; - private volatile boolean breakdown; - // The fraction of queries which must time out to view the QRS as being - // in breakdown - private final double timeoutThreshold; - // The minimal QPS to care about timeoutThreshold - private final int minimalQps; - private final boolean disableSevereBreakdownCheck; - private final List<ThreadLocalDirectory<TimeoutRate, Boolean>> timeoutRegistry = new ArrayList<>(); - private final boolean shutdownIfFrozen; - - Watchdog(double timeoutThreshold, int minimalQps, boolean shutdownIfFrozen) { - this.timeoutThreshold = timeoutThreshold; - this.minimalQps = minimalQps; - if (System.getProperty(FREEZEDETECTOR_DISABLE) != null) { - disableSevereBreakdownCheck = true; - } else { - disableSevereBreakdownCheck = false; - } - this.shutdownIfFrozen = shutdownIfFrozen; - } - - @Override - public void run() { - long now = System.currentTimeMillis(); - if (lastRun != 0L) { - severeBreakdown(now); - queryTimeouts(now); - } else { - lastQpsCheck = now; - } - lastRun = now; - } - - private void severeBreakdown(final long now) { - if (disableSevereBreakdownCheck) { - return; - } - if (now - lastRun < 5000L) { - return; - } - - threadStackMessage(); - - if (shutdownIfFrozen) { - Process.logAndDie("Watchdog timer meant to run ten times per second" - + " not run for five seconds or more." - + " Assuming severe failure or overloaded node, shutting down container."); - } else { - log.log(LogLevel.ERROR, - "A watchdog meant to run 10 times a second has not been invoked for 5 seconds." - + " This usually means this machine is swapping or otherwise severely overloaded."); - } - } - - private void threadStackMessage() { - log.log(LogLevel.INFO, "System seems unresponsive, performing full thread dump for diagnostics."); - threadDump(); - log.log(LogLevel.INFO, "End of diagnostic thread dump."); - } - - private void threadDump() { - try { - Map<Thread, StackTraceElement[]> allStackTraces = Thread.getAllStackTraces(); - for (Map.Entry<Thread, StackTraceElement[]> e : allStackTraces.entrySet()) { - Thread t = e.getKey(); - StackTraceElement[] stack = e.getValue(); - StringBuilder forOneThread = new StringBuilder(); - int initLen; - forOneThread.append("Stack for thread: ").append(t.getName()).append(": "); - initLen = forOneThread.length(); - for (StackTraceElement s : stack) { - if (forOneThread.length() > initLen) { - forOneThread.append(" "); - } - forOneThread.append(s.toString()); - } - log.log(LogLevel.INFO, forOneThread.toString()); - } - } catch (Exception e) { - // just give up... - } - } - - private void queryTimeouts(final long now) { - // only check query timeout every 10s - if (now - lastQpsCheck < 10000L) { - return; - } else { - lastQpsCheck = now; - } - - final TimeoutRate globalState = new TimeoutRate(); - synchronized (timeoutRegistry) { - for (ThreadLocalDirectory<TimeoutRate, Boolean> timeouts : timeoutRegistry) { - final List<TimeoutRate> threadStates = timeouts.fetch(); - for (final TimeoutRate t : threadStates) { - globalState.merge(t); - } - } - } - if (globalState.timeoutFraction() > timeoutThreshold && globalState.getTotal() > (10 * minimalQps)) { - setBreakdown(true); - log.log(Level.WARNING, "Too many queries timed out. Assuming container is in breakdown."); - } else { - if (!breakdown()) { - return; - } - setBreakdown(false); - log.log(Level.WARNING, "Fewer queries timed out. Assuming container is no longer in breakdown."); - } - } - - private void setBreakdown(final boolean state) { - breakdown = state; - breakdownCopy = state; - } - - private boolean breakdown() { - return breakdownCopy; - } - - boolean isBreakdown() { - return breakdown; - } - - void addTimeouts(ThreadLocalDirectory<TimeoutRate, Boolean> t) { - synchronized (timeoutRegistry) { - timeoutRegistry.add(t); - } - } - - void removeTimeouts(ThreadLocalDirectory<TimeoutRate, Boolean> timeouts) { - synchronized (timeoutRegistry) { - timeoutRegistry.remove(timeouts); - } - } - -} diff --git a/container-core/src/main/java/com/yahoo/container/xml/bind/JAXBContextFactory.java b/container-core/src/main/java/com/yahoo/container/xml/bind/JAXBContextFactory.java deleted file mode 100644 index c2355ce74be..00000000000 --- a/container-core/src/main/java/com/yahoo/container/xml/bind/JAXBContextFactory.java +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.container.xml.bind; - -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; - -/** - * Container components can take an instance of this class as a constructor argument, - * to get a new instance injected by the container framework. There is usually no - * need to create an instance with this class' constructor. - * <p> - * This factory is needed because the JAXBContext needs a user defined context path, - * which means that it cannot be created at the time the container creates its - * component graph. - * - * @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a> - * @author gjoranv - * @since 5.3 - * @deprecated Do not use! - */ -@Deprecated -public class JAXBContextFactory { - public static final String FACTORY_CLASS = "com.sun.xml.internal.bind.v2.ContextFactory"; - - /** - * Returns a new JAXBContext for the context path defined by the given list of classes. - * @return A new JAXBContext. - * @param classes One class per package that contains schema derived classes and/or - * java to schema (JAXB-annotated) mapped classes - */ - public JAXBContext newInstance(Class<?>... classes) { - return newInstance(getContextPath(classes), classes[0].getClassLoader()); - } - - // TODO: guard against adding the same package more than once - static String getContextPath(Class<?>... classes) { - if (classes == null || classes.length == 0) { - throw new IllegalArgumentException("Empty package list."); - } - StringBuilder contextPath = new StringBuilder(); - for (Class<?> clazz : classes) { - contextPath - .append(clazz.getPackage().getName()) - .append(':'); - } - contextPath.deleteCharAt(contextPath.length() - 1); - return contextPath.toString(); - } - - private static JAXBContext newInstance(String contextPath, ClassLoader classLoader) { - System.setProperty(JAXBContext.JAXB_CONTEXT_FACTORY, FACTORY_CLASS); - try { - return JAXBContext.newInstance(contextPath, classLoader); - } catch (JAXBException e) { - throw new IllegalStateException(e); - } - } -} diff --git a/container-core/src/main/java/com/yahoo/container/xml/providers/JAXBContextFactoryProvider.java b/container-core/src/main/java/com/yahoo/container/xml/providers/JAXBContextFactoryProvider.java deleted file mode 100644 index 6d82fa7af82..00000000000 --- a/container-core/src/main/java/com/yahoo/container/xml/providers/JAXBContextFactoryProvider.java +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.container.xml.providers; - -import com.yahoo.container.di.componentgraph.Provider; - -/** - * @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a> - * @since 5.1.29 - * @deprecated Do not use! - */ -@Deprecated -@SuppressWarnings("deprecation") -public class JAXBContextFactoryProvider implements Provider<com.yahoo.container.xml.bind.JAXBContextFactory> { - public static final String FACTORY_CLASS = com.yahoo.container.xml.bind.JAXBContextFactory.class.getName(); - - @Override - public com.yahoo.container.xml.bind.JAXBContextFactory get() { - return new com.yahoo.container.xml.bind.JAXBContextFactory(); - } - - @Override - public void deconstruct() { } -} diff --git a/container-core/src/main/java/com/yahoo/language/provider/SimpleLinguisticsProvider.java b/container-core/src/main/java/com/yahoo/language/provider/DefaultLinguisticsProvider.java index 169c9f1a2a4..8f08e33a777 100644 --- a/container-core/src/main/java/com/yahoo/language/provider/SimpleLinguisticsProvider.java +++ b/container-core/src/main/java/com/yahoo/language/provider/DefaultLinguisticsProvider.java @@ -2,26 +2,23 @@ package com.yahoo.language.provider; import com.google.inject.Inject; -import com.yahoo.language.simple.SimpleLinguistics; +import com.yahoo.language.opennlp.OpenNlpLinguistics; import com.yahoo.container.di.componentgraph.Provider; import com.yahoo.language.Linguistics; -import com.yahoo.language.simple.SimpleLinguisticsConfig; /** - * Provides simple linguistics if no linguistics component has been explicitly configured + * Provides the default linguistics implementation if no linguistics component has been explicitly configured * (dependency injection will fallback to providers if no components of the requested type is found). * * @author bratseth */ -public class SimpleLinguisticsProvider implements Provider<Linguistics> { +public class DefaultLinguisticsProvider implements Provider<Linguistics> { private final Linguistics linguistics; @SuppressWarnings("deprecation") @Inject - public SimpleLinguisticsProvider(SimpleLinguisticsConfig config) { - linguistics = new SimpleLinguistics(config); - } + public DefaultLinguisticsProvider() { linguistics = new OpenNlpLinguistics(); } @Override public Linguistics get() { return linguistics; } diff --git a/container-core/src/main/java/com/yahoo/processing/handler/AbstractProcessingHandler.java b/container-core/src/main/java/com/yahoo/processing/handler/AbstractProcessingHandler.java index 2269bd1358b..72a5fbdce55 100644 --- a/container-core/src/main/java/com/yahoo/processing/handler/AbstractProcessingHandler.java +++ b/container-core/src/main/java/com/yahoo/processing/handler/AbstractProcessingHandler.java @@ -47,10 +47,9 @@ import static com.yahoo.component.chain.ChainsConfigurer.prepareChainRegistry; * <p> * COMPONENT: The type of the processing components of which this executes a chain * - * @author bratseth - * @author Tony Vaagenes - * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a> - * @since 5.1.6 + * @author bratseth + * @author Tony Vaagenes + * @author Steinar Knutsen */ public abstract class AbstractProcessingHandler<COMPONENT extends Processor> extends LoggingRequestHandler { |