[ https://issues.apache.org/jira/browse/DRILL-4313?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15181409#comment-15181409 ]
ASF GitHub Bot commented on DRILL-4313: --------------------------------------- Github user sudheeshkatkam commented on a diff in the pull request: https://github.com/apache/drill/pull/396#discussion_r55112202 --- Diff: contrib/native/client/example/pooledConnections.cpp --- @@ -0,0 +1,300 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <fstream> +#include <iostream> +#include <stdio.h> +#include <stdlib.h> +#include <boost/thread.hpp> +#include "drill/drillc.hpp" + +int nOptions=5; + +struct Option{ + char name[32]; + char desc[128]; + bool required; +}qsOptions[]= { + {"query", "Query strings, separated by semicolons", true}, + {"connectStr", "Connect string", true}, + {"logLevel", "Logging level [trace|debug|info|warn|error|fatal]", false}, + {"numConnections", "Number of simultaneous connections", true}, + {"numIterations", "Number of iterations to run. Each query is sent to each connection this many times", true} +}; + +std::map<std::string, std::string> qsOptionValues; + +const char* exceptionInject="alter session set `drill.exec.testing.controls` = '{ \"injections\" : [{ \"type\":\"exception\",\"siteClass\":\"org.apache.drill.exec.work.fragment.FragmentExecutor\",\"desc\":\"fragment-execution\",\"nSkip\":0,\"nFire\":1,\"exceptionClass\":\"java.lang.OutOfMemoryError\"}]}'"; + +Drill::status_t SchemaListener(void* ctx, Drill::FieldDefPtr fields, Drill::DrillClientError* err){ + if(!err){ + printf("SCHEMA CHANGE DETECTED:\n"); + for(size_t i=0; i<fields->size(); i++){ + std::string name= fields->at(i)->getName(); + printf("%s\t", name.c_str()); + } + printf("\n"); + return Drill::QRY_SUCCESS ; + }else{ + std::cerr<< "ERROR: " << err->msg << std::endl; + return Drill::QRY_FAILURE; + } +} + +boost::mutex listenerMutex; +Drill::status_t QueryResultsListener(void* ctx, Drill::RecordBatch* b, Drill::DrillClientError* err){ + boost::lock_guard<boost::mutex> listenerLock(listenerMutex); + if(!err){ + if(b!=NULL){ + b->print(std::cout, 0); // print all rows + std::cout << "DATA RECEIVED ..." << std::endl; + delete b; // we're done with this batch, we can delete it + return Drill::QRY_FAILURE; + }else{ + std::cout << "Query Complete." << std::endl; + return Drill::QRY_SUCCESS; + } + }else{ + assert(b==NULL); + switch(err->status) { + case Drill::QRY_COMPLETED: + case Drill::QRY_CANCELED: + std::cerr<< "INFO: " << err->msg << std::endl; + return Drill::QRY_SUCCESS; --- End diff -- Confusing, since query succeeds when error != null ? > C++ client - Improve method of drillbit selection from cluster > -------------------------------------------------------------- > > Key: DRILL-4313 > URL: https://issues.apache.org/jira/browse/DRILL-4313 > Project: Apache Drill > Issue Type: Improvement > Reporter: Parth Chandra > Assignee: Parth Chandra > Fix For: 1.6.0 > > > The current C++ client handles multiple parallel queries over the same > connection, but that creates a bottleneck as the queries get sent to the same > drillbit. > The client can manage this more effectively by choosing from a configurable > pool of connections and round robin queries to them. -- This message was sent by Atlassian JIRA (v6.3.4#6332)