[ 
https://issues.apache.org/jira/browse/DRILL-5311?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15894920#comment-15894920
 ] 

Laurent Goujon commented on DRILL-5311:
---------------------------------------

Did some testing using querySubmitter:

before:
{noformat}
$ ./querySubmitter type=server connectStr=local=localhost:31010 api=meta 
logLevel=trace
Connector:
        name:Apache Drill C++ client
        version:1.10.0

Server:
        name:
        version:

Metadata:
        all tables are selectable: 0
        catalog separator: .
        catalog term: catalog
        COLLATE support: 0
        correlation names: 3
        date time functions: CURDATE, CURTIME, NOW, QUARTER
        date time literals support: 65278
        GROUP BY support: 0
        identifier case: 1
        identifier quote string: `
        max binary literal length: 0
        max catalog name length: 1024
        max char literal length: 0
        max column name length: 1024
        max columns in GROUP BY: 1024
        max columns in ORDER BY: 0
        max columns in SELECT: 0
        max cursor name length: 1024
        max logical lob size: 0
        max row size: 0
        max schema name length: 1024
        max statement length: 0
        max statements: 0
        max table name length: 1024
        max tables in SELECT: 0
        max user name length: 1024
        NULL collation: 1
        numeric functions: ABS, EXP, LOG, LOG10, MOD, POWER
        OUTER JOIN support: 14
        quoted identifier case: 1
        SQL keywords: 
ABS,ALLOW,ARRAY,ASENSITIVE,ASYMMETRIC,ATOMIC,BIGINT,BINARY,BLOB,BOOLEAN,CALL,CALLED,CARDINALITY,CEIL,CEILING,CLOB,COLLECT,CONDITION,CORR,COVAR_POP,COVAR_SAMP,CUBE,CUME_DIST,CURRENT_CATALOG,CURRENT_DEFAULT_TRANSFORM_GROUP,CURRENT_PATH,CURRENT_ROLE,CURRENT_SCHEMA,CURRENT_TRANSFORM_GROUP_FOR_TYPE,CYCLE,DATABASE,DATABASES,DENSE_RANK,DEREF,DETERMINISTIC,DISALLOW,DYNAMIC,EACH,ELEMENT,EVERY,EXP,EXPLAIN,EXTEND,FILES,FILTER,FIRST_VALUE,FLOOR,FREE,FUNCTION,FUSION,GROUPING,HOLD,IF,IMPORT,INOUT,INTERSECTION,LARGE,LAST_VALUE,LATERAL,LIMIT,LN,LOCALTIME,LOCALTIMESTAMP,MEMBER,MERGE,METADATA,METHOD,MOD,MODIFIES,MULTISET,NCLOB,NEW,NONE,NORMALIZE,OFFSET,OLD,OUT,OVER,OVERLAY,PARAMETER,PARTITION,PERCENTILE_CONT,PERCENTILE_DISC,PERCENT_RANK,POWER,RANGE,RANK,READS,RECURSIVE,REF,REFERENCING,REFRESH,REGR_AVGX,REGR_AVGY,REGR_COUNT,REGR_INTERCEPT,REGR_R2,REGR_SLOPE,REGR_SXX,REGR_SXY,REGR_SYY,RELEASE,REPLACE,RESET,RESULT,RETURN,RETURNS,ROLLUP,ROW,ROW_NUMBER,SAVEPOINT,SCHEMAS,SCOPE,SEARCH,SENSITIVE,SHOW,SIMILAR,SPECIFIC,SPECIFICTYPE,SQLEXCEPTION,SQLWARNING,SQRT,START,STATIC,STDDEV_POP,STDDEV_SAMP,STREAM,SUBMULTISET,SYMMETRIC,SYSTEM,TABLES,TABLESAMPLE,TINYINT,TREAT,TRIGGER,UESCAPE,UNNEST,UPSERT,USE,VARBINARY,VAR_POP,VAR_SAMP,WIDTH_BUCKET,WINDOW,WITHIN,WITHOUT
        schema term: schema
        search escape string: \
        special characters: 
        string functions: 
CONCAT,INSERT,LCASE,LENGTH,LOCATE,LTRIM,RTRIM,SUBSTRING,UCASE
        sub query support: 46
        system functions: 
        table term: table
        UNION support: 6
        BLOB included in max row size: 1
        catalog at start: 1
        column aliasing supported: 1
        LIKE escape clause supported: 1
        NULL plus non NULL equals to NULL: 1
        read-only: 0
        SELECT FOR UPDATE supported: 0
        transaction supported: 0
        unrelated columns in ORDER BY supported: 1
{noformat}

Note that how the connection didn't fail and it is still possible to query API 
(although results are not populated correctly).

after:
{noformat}
$ ./querySubmitter type=server connectStr=local=localhost:31010 api=meta 
logLevel=trace
Failed to connect with error: [30015]Handshake Timeout. 
(Using:local=localhost:31010)
{noformat}


> C++ connector connect doesn't check handshake result for timeout
> ----------------------------------------------------------------
>
>                 Key: DRILL-5311
>                 URL: https://issues.apache.org/jira/browse/DRILL-5311
>             Project: Apache Drill
>          Issue Type: Bug
>          Components: Client - C++
>            Reporter: Laurent Goujon
>            Assignee: Sudheesh Katkam
>              Labels: ready-to-commit
>
> The C++ connector connect methods returns okay as soon as the tcp connection 
> is succesfully established between client and server, and the handshake 
> message is sent. However it doesn't wait for handshake to have completed.
> The consequence is that if handshake failed, the error is deferred to the 
> first query, which might be unexpected by the application.
> I believe that validateHanshake method in drillClientImpl should wait for the 
> handshake to complete, as it seems a bit more saner...



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to