[
https://issues.apache.org/jira/browse/DRILL-4841?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15553351#comment-15553351
]
ASF GitHub Bot commented on DRILL-4841:
---------------------------------------
Github user paul-rogers commented on a diff in the pull request:
https://github.com/apache/drill/pull/565#discussion_r82266904
--- Diff:
exec/java-exec/src/main/java/org/apache/drill/exec/client/DrillClient.java ---
@@ -688,4 +802,142 @@ public DrillBuf getBuffer() {
return null;
}
}
+
+ /**
+ * Return a new {@link DrillClient.Builder Drill client builder}.
+ * @return a new builder
+ */
+ public static Builder newBuilder() {
+ return new Builder();
+ }
+
+ /**
+ * Helper class to construct a {@link DrillClient Drill client}.
+ */
+ public static class Builder {
+
+ private DrillConfig config;
+ private BufferAllocator allocator;
+ private ClusterCoordinator clusterCoordinator;
+ private EventLoopGroup eventLoopGroup;
+ private ExecutorService executor;
+
+ // defaults
+ private boolean supportComplexTypes = true;
+ private boolean isDirectConnection = false;
+
+ /**
+ * Sets the {@link DrillConfig configuration} for this client.
+ *
+ * @param drillConfig drill configuration
+ * @return this builder
+ */
+ public Builder setConfig(DrillConfig drillConfig) {
+ this.config = drillConfig;
+ return this;
+ }
+
+ /**
+ * Sets the {@link DrillConfig configuration} for this client based on
the given file.
+ *
+ * @param fileName configuration file name
+ * @return this builder
+ */
+ public Builder setConfigFromFile(final String fileName) {
+ this.config = DrillConfig.create(fileName);
+ return this;
+ }
+
+ /**
+ * Sets the {@link BufferAllocator buffer allocator} to be used by
this client.
+ * If this is not set, an allocator will be created based on the
configuration.
--- End diff --
But, what if I don't provide a config? Or, create my own? What do I have to
set in that config to make it work?
More to the point, WHEN do I have to provide my own root? When I do
multiple clients in a single app? If so, can we provide a short example showing
how this works?
Even easier, can the builder itself create a static allocator that it
shares across connections?
> Use user server event loop group for web clients
> ------------------------------------------------
>
> Key: DRILL-4841
> URL: https://issues.apache.org/jira/browse/DRILL-4841
> Project: Apache Drill
> Issue Type: Improvement
> Components: Client - HTTP
> Reporter: Sudheesh Katkam
> Assignee: Sorabh Hamirwasia
> Priority: Minor
>
> Currently we spawn an event loop group for handling requests from clients.
> This group should also be used to handles responses (from server) for web
> clients.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)