Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
import com.google.common.collect.ImmutableList;
import com.google.inject.Inject;
import io.airlift.log.Logger;
import io.trino.server.PluginInstaller;
import io.trino.spi.Plugin;
import io.trino.spi.classloader.ThreadContextClassLoader;
import io.trino.spi.eventlistener.EventListener;
import io.trino.spi.eventlistener.EventListenerFactory;
Expand Down Expand Up @@ -45,6 +47,7 @@
import static java.util.Objects.requireNonNull;

public class EventListenerManager
implements PluginInstaller
{
private static final Logger log = Logger.get(EventListenerManager.class);
private static final File CONFIG_FILE = new File("etc/event-listener.properties");
Expand All @@ -61,7 +64,16 @@ public EventListenerManager(EventListenerConfig config)
this.configFiles = ImmutableList.copyOf(config.getEventListenerFiles());
}

public void addEventListenerFactory(EventListenerFactory eventListenerFactory)
@Override
public void installPlugin(Plugin plugin)
{
for (EventListenerFactory eventListenerFactory : plugin.getEventListenerFactories()) {
log.info("Registering event listener %s", eventListenerFactory.getName());
addEventListenerFactory(eventListenerFactory);
}
}

protected void addEventListenerFactory(EventListenerFactory eventListenerFactory)
{
requireNonNull(eventListenerFactory, "eventListenerFactory is null");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,10 @@
*/
package io.trino.exchange;

import com.google.common.annotations.VisibleForTesting;
import io.airlift.log.Logger;
import io.trino.server.PluginInstaller;
import io.trino.spi.Plugin;
import io.trino.spi.TrinoException;
import io.trino.spi.classloader.ThreadContextClassLoader;
import io.trino.spi.exchange.ExchangeManager;
Expand All @@ -37,6 +40,7 @@
import static java.util.Objects.requireNonNull;

public class ExchangeManagerRegistry
implements PluginInstaller
{
private static final Logger log = Logger.get(ExchangeManagerRegistry.class);

Expand All @@ -47,6 +51,16 @@ public class ExchangeManagerRegistry

private volatile ExchangeManager exchangeManager;

@Override
public void installPlugin(Plugin plugin)
{
for (ExchangeManagerFactory exchangeManagerFactory : plugin.getExchangeManagerFactories()) {
log.info("Registering exchange manager %s", exchangeManagerFactory.getName());
addExchangeManagerFactory(exchangeManagerFactory);
}
}

@VisibleForTesting
public void addExchangeManagerFactory(ExchangeManagerFactory factory)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does this method has to be public? Can you please make it private? Do you need @VisibleForTests? Same comment for all other classes

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reduced the visibility when applicable.

{
requireNonNull(factory, "factory is null");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,11 @@
*/
package io.trino.execution.resourcegroups;

import io.airlift.log.Logger;
import io.trino.execution.ManagedQueryExecution;
import io.trino.server.PluginInstaller;
import io.trino.server.ResourceGroupInfo;
import io.trino.spi.Plugin;
import io.trino.spi.resourcegroups.ResourceGroupConfigurationManagerFactory;
import io.trino.spi.resourcegroups.ResourceGroupId;
import io.trino.spi.resourcegroups.SelectionContext;
Expand All @@ -32,7 +35,10 @@
*/
@ThreadSafe
public interface ResourceGroupManager<C>
extends PluginInstaller
{
Logger log = Logger.get(ResourceGroupManager.class);

void submit(ManagedQueryExecution queryExecution, SelectionContext<C> selectionContext, Executor executor);

SelectionContext<C> selectGroup(SelectionCriteria criteria);
Expand All @@ -45,4 +51,13 @@ public interface ResourceGroupManager<C>

void loadConfigurationManager()
throws Exception;

@Override
default void installPlugin(Plugin plugin)
{
for (ResourceGroupConfigurationManagerFactory configurationManagerFactory : plugin.getResourceGroupConfigurationManagerFactories()) {
log.info("Registering resource group configuration manager %s", configurationManagerFactory.getName());
addConfigurationManagerFactory(configurationManagerFactory);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@
*/
package io.trino.metadata;

import io.airlift.log.Logger;
import io.trino.server.PluginInstaller;
import io.trino.spi.Plugin;
import io.trino.spi.block.ArrayBlockEncoding;
import io.trino.spi.block.BlockEncoding;
import io.trino.spi.block.ByteArrayBlockEncoding;
Expand All @@ -37,7 +40,10 @@
import static java.util.Objects.requireNonNull;

public final class BlockEncodingManager
implements PluginInstaller
{
private static final Logger log = Logger.get(BlockEncodingManager.class);

private final Map<String, BlockEncoding> blockEncodings = new ConcurrentHashMap<>();

public BlockEncodingManager()
Expand All @@ -60,14 +66,23 @@ public BlockEncodingManager()
addBlockEncoding(new LazyBlockEncoding());
}

@Override
public void installPlugin(Plugin plugin)
{
for (BlockEncoding blockEncoding : plugin.getBlockEncodings()) {
log.info("Registering block encoding %s", blockEncoding.getName());
addBlockEncoding(blockEncoding);
}
}

public BlockEncoding getBlockEncoding(String encodingName)
{
BlockEncoding blockEncoding = blockEncodings.get(encodingName);
checkArgument(blockEncoding != null, "Unknown block encoding: %s", encodingName);
return blockEncoding;
}

public void addBlockEncoding(BlockEncoding blockEncoding)
private void addBlockEncoding(BlockEncoding blockEncoding)
{
requireNonNull(blockEncoding, "blockEncoding is null");
BlockEncoding existingEntry = blockEncodings.putIfAbsent(blockEncoding.getName(), blockEncoding);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@
import com.google.common.collect.ImmutableListMultimap;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Multimap;
import io.airlift.log.Logger;
import io.trino.server.PluginInstaller;
import io.trino.spi.Plugin;
import io.trino.spi.function.AggregationFunctionMetadata;
import io.trino.spi.function.AggregationImplementation;
import io.trino.spi.function.BoundSignature;
Expand All @@ -39,6 +42,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;

import static com.google.common.base.Preconditions.checkArgument;
Expand All @@ -54,11 +58,25 @@

@ThreadSafe
public class GlobalFunctionCatalog
implements FunctionProvider
implements FunctionProvider, PluginInstaller
{
private static final Logger log = Logger.get(GlobalFunctionCatalog.class);

public static final String BUILTIN_SCHEMA = "builtin";
private volatile FunctionMap functions = new FunctionMap();

@Override
public void installPlugin(Plugin plugin)
{
Set<Class<?>> functions = plugin.getFunctions();
if (!functions.isEmpty()) {
log.info("Registering functions from %s", plugin.getClass().getSimpleName());
InternalFunctionBundle.InternalFunctionBundleBuilder builder = InternalFunctionBundle.builder();
functions.forEach(builder::functions);
addFunctions(builder.build());
}
}

public final synchronized void addFunctions(FunctionBundle functionBundle)
{
for (FunctionMetadata functionMetadata : functionBundle.getFunctions()) {
Expand Down
19 changes: 19 additions & 0 deletions core/trino-main/src/main/java/io/trino/metadata/TypeRegistry.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,11 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Multimap;
import com.google.common.util.concurrent.UncheckedExecutionException;
import io.airlift.log.Logger;
import io.trino.FeaturesConfig;
import io.trino.collect.cache.NonEvictableCache;
import io.trino.server.PluginInstaller;
import io.trino.spi.Plugin;
import io.trino.spi.function.OperatorType;
import io.trino.spi.type.ParametricType;
import io.trino.spi.type.Type;
Expand Down Expand Up @@ -108,7 +111,9 @@

@ThreadSafe
public final class TypeRegistry
implements PluginInstaller
{
private static final Logger log = Logger.get(TypeRegistry.class);
private static final SqlParser SQL_PARSER = new SqlParser();

private final ConcurrentMap<TypeSignature, Type> types = new ConcurrentHashMap<>();
Expand Down Expand Up @@ -174,6 +179,20 @@ public TypeRegistry(TypeOperators typeOperators, FeaturesConfig featuresConfig)
verifyTypes();
}

@Override
public void installPlugin(Plugin plugin)
{
for (Type type : plugin.getTypes()) {
log.info("Registering type %s", type.getTypeSignature());
addType(type);
}

for (ParametricType parametricType : plugin.getParametricTypes()) {
log.info("Registering parametric type %s", parametricType.getName());
addParametricType(parametricType);
}
}

public Type getType(TypeSignature signature)
{
Type type = types.get(signature);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@
import io.trino.plugin.base.security.FileBasedSystemAccessControl;
import io.trino.plugin.base.security.ForwardingSystemAccessControl;
import io.trino.plugin.base.security.ReadOnlySystemAccessControl;
import io.trino.server.PluginInstaller;
import io.trino.spi.Plugin;
import io.trino.spi.QueryId;
import io.trino.spi.TrinoException;
import io.trino.spi.classloader.ThreadContextClassLoader;
Expand Down Expand Up @@ -79,7 +81,7 @@
import static java.util.Objects.requireNonNull;

public class AccessControlManager
implements AccessControl
implements AccessControl, PluginInstaller
{
private static final Logger log = Logger.get(AccessControlManager.class);

Expand Down Expand Up @@ -115,7 +117,17 @@ public AccessControlManager(
addSystemAccessControlFactory(new FileBasedSystemAccessControl.Factory());
}

public final void addSystemAccessControlFactory(SystemAccessControlFactory accessControlFactory)
@Override
public void installPlugin(Plugin plugin)
{
for (SystemAccessControlFactory accessControlFactory : plugin.getSystemAccessControlFactories()) {
log.info("Registering system access control %s", accessControlFactory.getName());
addSystemAccessControlFactory(accessControlFactory);
}
}

@VisibleForTesting
final void addSystemAccessControlFactory(SystemAccessControlFactory accessControlFactory)
{
requireNonNull(accessControlFactory, "accessControlFactory is null");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import io.airlift.log.Logger;
import io.trino.server.PluginInstaller;
import io.trino.spi.Plugin;
import io.trino.spi.classloader.ThreadContextClassLoader;
import io.trino.spi.security.GroupProvider;
import io.trino.spi.security.GroupProviderFactory;
Expand All @@ -38,15 +40,25 @@
import static java.util.Objects.requireNonNull;

public class GroupProviderManager
implements GroupProvider
implements GroupProvider, PluginInstaller
{
private static final Logger log = Logger.get(GroupProviderManager.class);
private static final File GROUP_PROVIDER_CONFIGURATION = new File("etc/group-provider.properties");
private static final String GROUP_PROVIDER_PROPERTY_NAME = "group-provider.name";
private final Map<String, GroupProviderFactory> groupProviderFactories = new ConcurrentHashMap<>();
private final AtomicReference<Optional<GroupProvider>> configuredGroupProvider = new AtomicReference<>(Optional.empty());

public void addGroupProviderFactory(GroupProviderFactory groupProviderFactory)
@Override
public void installPlugin(Plugin plugin)
{
for (GroupProviderFactory groupProviderFactory : plugin.getGroupProviderFactories()) {
log.info("Registering group provider %s", groupProviderFactory.getName());
addGroupProviderFactory(groupProviderFactory);
}
}

@VisibleForTesting
void addGroupProviderFactory(GroupProviderFactory groupProviderFactory)
{
requireNonNull(groupProviderFactory, "groupProviderFactory is null");

Expand Down
Loading