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

ASF GitHub Bot commented on DRILL-5088:
---------------------------------------

Github user paul-rogers commented on a diff in the pull request:

    https://github.com/apache/drill/pull/702#discussion_r99396951
  
    --- Diff: 
contrib/storage-mongo/src/test/java/org/apache/drill/exec/store/mongo/TestTableGenerator.java
 ---
    @@ -58,7 +59,16 @@ public static void generateTable(String dbName, String 
collection,
             .jsonArray(jsonArray).importFile(jsonFile).build();
         MongoImportExecutable importExecutable = MongoImportStarter
             .getDefaultInstance().prepare(mongoImportConfig);
    -    importExecutable.start();
    +    MongoImportProcess importProcess = importExecutable.start();
    +
    +    try {
    +      while (importProcess.isProcessRunning()) {
    +        Thread.sleep(1000);
    +      }
    +    }catch (Exception ex) {
    +      logger.error("Import mongoDb failed", ex);
    --- End diff --
    
    Here we log the error but go ahead and return. Should we propagate an 
exception upward in the call stack so that the caller knows that "Something Is 
Wrong"? Otherwise, how will the caller know whether the import process is ready 
or not?


> Error when reading DBRef column
> -------------------------------
>
>                 Key: DRILL-5088
>                 URL: https://issues.apache.org/jira/browse/DRILL-5088
>             Project: Apache Drill
>          Issue Type: Bug
>          Components: Execution - Data Types
>         Environment: drill 1.9.0
> mongo 3.2
>            Reporter: Guillaume Champion
>            Assignee: Chunhui Shi
>
> In a mongo database with DBRef, when a DBRef is inserted in the first line of 
> a mongo's collection drill query failed :
> {code}
> 0: jdbc:drill:zk=local> select * from mongo.mydb.contact2;
> Error: SYSTEM ERROR: CodecConfigurationException: Can't find a codec for 
> class com.mongodb.DBRef.
> {code}
> Simple example to reproduce:
> In mongo instance
> {code}
> db.contact2.drop();
> db.contact2.insert({ "_id" : ObjectId("582081d96b69060001fd8938"), "account" 
> : DBRef("contact", ObjectId("999cbf116b69060001fd8611")) });
> {code}
> In drill :
> {code}
> 0: jdbc:drill:zk=local> select * from mongo.mydb.contact2;
> Error: SYSTEM ERROR: CodecConfigurationException: Can't find a codec for 
> class com.mongodb.DBRef.
> [Error Id: 2944d766-e483-4453-a706-3d481397b186 on Analytics-Biznet:31010] 
> (state=,code=0)
> {code}
> If the first line doesn't contain de DBRef, drill will querying correctly :
> In a mongo instance :
> {code}
> db.contact2.drop();
> db.contact2.insert({ "_id" : ObjectId("582081d96b69060001fd8939") });
> db.contact2.insert({ "_id" : ObjectId("582081d96b69060001fd8938"), "account" 
> : DBRef("contact", ObjectId("999cbf116b69060001fd8611")) });
> {code}
> In drill :
> {code}
> 0: jdbc:drill:zk=local> select * from mongo.mydb.contact2;
> +--------------------------------------+---------------------------------------------------------------+
> |                 _id                  |                            account   
>                          |
> +--------------------------------------+---------------------------------------------------------------+
> | {"$oid":"582081d96b69060001fd8939"}  | {"$id":{}}                           
>                          |
> | {"$oid":"582081d96b69060001fd8938"}  | 
> {"$ref":"contact","$id":{"$oid":"999cbf116b69060001fd8611"}}  |
> +--------------------------------------+---------------------------------------------------------------+
> 2 rows selected (0,563 seconds)
> {code}



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

Reply via email to