|
13 | 13 | */ |
14 | 14 | package io.trino.plugin.jdbc; |
15 | 15 |
|
16 | | -import com.google.common.util.concurrent.MoreExecutors; |
17 | 16 | import com.google.inject.Binder; |
18 | | -import com.google.inject.Inject; |
19 | 17 | import com.google.inject.Key; |
20 | 18 | import com.google.inject.Provider; |
| 19 | +import com.google.inject.Provides; |
21 | 20 | import com.google.inject.Scopes; |
22 | 21 | import com.google.inject.Singleton; |
23 | 22 | import com.google.inject.multibindings.Multibinder; |
24 | | -import com.google.inject.multibindings.ProvidesIntoOptional; |
25 | | -import dev.failsafe.RetryPolicy; |
26 | 23 | import io.airlift.configuration.AbstractConfigurationAwareModule; |
27 | 24 | import io.trino.plugin.base.mapping.IdentifierMappingModule; |
28 | 25 | import io.trino.plugin.base.session.SessionPropertiesProvider; |
|
33 | 30 | import io.trino.spi.connector.ConnectorAccessControl; |
34 | 31 | import io.trino.spi.connector.ConnectorPageSinkProvider; |
35 | 32 | import io.trino.spi.connector.ConnectorPageSourceProvider; |
36 | | -import io.trino.spi.connector.ConnectorRecordSetProvider; |
37 | 33 | import io.trino.spi.connector.ConnectorSplitManager; |
38 | 34 | import io.trino.spi.function.table.ConnectorTableFunction; |
39 | 35 | import io.trino.spi.procedure.Procedure; |
|
42 | 38 |
|
43 | 39 | import static com.google.inject.multibindings.Multibinder.newSetBinder; |
44 | 40 | import static com.google.inject.multibindings.OptionalBinder.newOptionalBinder; |
45 | | -import static com.google.inject.multibindings.ProvidesIntoOptional.Type.DEFAULT; |
| 41 | +import static io.airlift.concurrent.Threads.daemonThreadsNamed; |
46 | 42 | import static io.airlift.configuration.ConditionalModule.conditionalModule; |
47 | 43 | import static io.airlift.configuration.ConfigBinder.configBinder; |
48 | 44 | import static io.trino.plugin.base.ClosingBinder.closingBinder; |
| 45 | +import static java.lang.String.format; |
| 46 | +import static java.util.concurrent.Executors.newCachedThreadPool; |
49 | 47 | import static org.weakref.jmx.guice.ExportBinder.newExporter; |
50 | 48 |
|
51 | 49 | public class JdbcModule |
@@ -109,15 +107,10 @@ public void setup(Binder binder) |
109 | 107 |
|
110 | 108 | newOptionalBinder(binder, Key.get(int.class, MaxDomainCompactionThreshold.class)); |
111 | 109 |
|
112 | | - newOptionalBinder(binder, Key.get(ExecutorService.class, ForRecordCursor.class)) |
113 | | - .setDefault() |
114 | | - .toProvider(MoreExecutors::newDirectExecutorService) |
115 | | - .in(Scopes.SINGLETON); |
116 | | - |
117 | 110 | newSetBinder(binder, JdbcQueryEventListener.class); |
118 | 111 |
|
119 | 112 | closingBinder(binder) |
120 | | - .registerExecutor(Key.get(ExecutorService.class, ForRecordCursor.class)); |
| 113 | + .registerExecutor(Key.get(ExecutorService.class, ForJdbcClient.class)); |
121 | 114 | } |
122 | 115 |
|
123 | 116 | public static Multibinder<SessionPropertiesProvider> sessionPropertiesProviderBinder(Binder binder) |
@@ -150,11 +143,11 @@ public static void bindTablePropertiesProvider(Binder binder, Class<? extends Ta |
150 | 143 | tablePropertiesProviderBinder(binder).addBinding().to(type).in(Scopes.SINGLETON); |
151 | 144 | } |
152 | 145 |
|
153 | | - @ProvidesIntoOptional(DEFAULT) |
154 | | - @Inject |
| 146 | + @Provides |
155 | 147 | @Singleton |
156 | | - ConnectorRecordSetProvider recordSetProvider(JdbcClient jdbcClient, @ForRecordCursor ExecutorService executor, RetryPolicy<Object> policy) |
| 148 | + @ForJdbcClient |
| 149 | + public ExecutorService provideJdbcClientExecutor(CatalogName catalogName) |
157 | 150 | { |
158 | | - return new JdbcRecordSetProvider(jdbcClient, executor, policy); |
| 151 | + return newCachedThreadPool(daemonThreadsNamed(format("%s-jdbc-client-%%d", catalogName))); |
159 | 152 | } |
160 | 153 | } |
0 commit comments