[Groonga-commit] groonga/grnci at 14df95b [master] Immediately return an error if the response contains an error message

Back to archive index

Susumu Yata null+****@clear*****
Wed Sep 13 12:44:01 JST 2017


Susumu Yata	2017-09-13 12:44:01 +0900 (Wed, 13 Sep 2017)

  New Revision: 14df95bee96373cae55bfbf7d4a06242a07f3f36
  https://github.com/groonga/grnci/commit/14df95bee96373cae55bfbf7d4a06242a07f3f36

  Message:
    Immediately return an error if the response contains an error message
    
    Ref: #43

  Modified files:
    v2/db.go

  Modified: v2/db.go (+138 -137)
===================================================================
--- v2/db.go    2017-09-13 12:33:22 +0900 (3a9d429)
+++ v2/db.go    2017-09-13 12:44:01 +0900 (c4ac608)
@@ -185,13 +185,13 @@ func (db *DB) ColumnList(tbl string) ([]DBColumn, error) {
 		return nil, err
 	}
 	defer resp.Close()
+	if err := resp.Err(); err != nil {
+		return nil, err
+	}
 	jsonData, err := ioutil.ReadAll(resp)
 	if err != nil {
 		return nil, err
 	}
-	if len(jsonData) == 0 {
-		return nil, resp.Err()
-	}
 	var result [][]interface{}
 	if err := json.Unmarshal(jsonData, &result); err != nil {
 		return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
@@ -199,9 +199,6 @@ func (db *DB) ColumnList(tbl string) ([]DBColumn, error) {
 		})
 	}
 	if len(result) == 0 {
-		if resp.Err() != nil {
-			return nil, resp.Err()
-		}
 		return nil, NewError(ResponseError, "The result is empty.", nil)
 	}
 	var fields []string
@@ -257,7 +254,7 @@ func (db *DB) ColumnList(tbl string) ([]DBColumn, error) {
 		}
 		columns = append(columns, column)
 	}
-	return columns, resp.Err()
+	return columns, nil
 }
 
 // ColumnRemove executes column_remove.
@@ -498,23 +495,20 @@ func (db *DB) Load(tbl string, values io.Reader, options *DBLoadOptions) (int, e
 	// recvInt should not be used because a load command returns the result
 	// even if resp has an error.
 	defer resp.Close()
+	if err := resp.Err(); err != nil {
+		return 0, err
+	}
 	jsonData, err := ioutil.ReadAll(resp)
 	if err != nil {
-		if resp.Err() != nil {
-			return 0, resp.Err()
-		}
 		return 0, err
 	}
 	var result int
 	if err := json.Unmarshal(jsonData, &result); err != nil {
-		if resp.Err() != nil {
-			return 0, resp.Err()
-		}
 		return 0, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
 			"error": err.Error(),
 		})
 	}
-	return result, resp.Err()
+	return result, nil
 }
 
 // appendRow appends the JSON-encoded row to buf nad returns the exetended buffer.
@@ -738,19 +732,20 @@ func (db *DB) LogicalParameters(rangeIndex string) (*DBLogicalParameters, error)
 		return nil, err
 	}
 	defer resp.Close()
+	if err := resp.Err(); err != nil {
+		return nil, err
+	}
 	jsonData, err := ioutil.ReadAll(resp)
 	if err != nil {
 		return nil, err
 	}
 	var result DBLogicalParameters
-	if len(jsonData) != 0 {
-		if err := json.Unmarshal(jsonData, &result); err != nil {
-			return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
-				"error": err.Error(),
-			})
-		}
+	if err := json.Unmarshal(jsonData, &result); err != nil {
+		return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
+			"error": err.Error(),
+		})
 	}
-	return &result, resp.Err()
+	return &result, nil
 }
 
 // LogicalRangeFilter executes logical_range_filter.
@@ -861,9 +856,9 @@ func (db *DB) LogicalSelect(logicalTable, shardKey string, options *DBLogicalSel
 	if err != nil {
 		return nil, err
 	}
-	if resp.Err() != nil {
+	if err := resp.Err(); err != nil {
 		resp.Close()
-		return nil, resp.Err()
+		return nil, err
 	}
 	return resp, nil
 }
@@ -921,19 +916,20 @@ func (db *DB) LogicalShardList(logicalTable string) ([]DBLogicalShard, error) {
 		return nil, err
 	}
 	defer resp.Close()
+	if err := resp.Err(); err != nil {
+		return nil, err
+	}
 	jsonData, err := ioutil.ReadAll(resp)
 	if err != nil {
 		return nil, err
 	}
 	var result []DBLogicalShard
-	if len(jsonData) != 0 {
-		if err := json.Unmarshal(jsonData, &result); err != nil {
-			return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
-				"error": err.Error(),
-			})
-		}
+	if err := json.Unmarshal(jsonData, &result); err != nil {
+		return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
+			"error": err.Error(),
+		})
 	}
-	return result, resp.Err()
+	return result, nil
 }
 
 // DBLogicalTableRemoveOptions stores options for DB.LogicalTableRemove.
@@ -1001,19 +997,20 @@ func (db *DB) Normalize(normalizer, str string, flags []string) (*DBNormalizedTe
 		return nil, err
 	}
 	defer resp.Close()
+	if err := resp.Err(); err != nil {
+		return nil, err
+	}
 	jsonData, err := ioutil.ReadAll(resp)
 	if err != nil {
 		return nil, err
 	}
 	var result DBNormalizedText
-	if len(jsonData) != 0 {
-		if err := json.Unmarshal(jsonData, &result); err != nil {
-			return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
-				"error": err.Error(),
-			})
-		}
+	if err := json.Unmarshal(jsonData, &result); err != nil {
+		return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
+			"error": err.Error(),
+		})
 	}
-	return &result, resp.Err()
+	return &result, nil
 }
 
 // DBNormalizer is a result of tokenizer_list.
@@ -1028,19 +1025,20 @@ func (db *DB) NormalizerList() ([]DBNormalizer, error) {
 		return nil, err
 	}
 	defer resp.Close()
+	if err := resp.Err(); err != nil {
+		return nil, err
+	}
 	jsonData, err := ioutil.ReadAll(resp)
 	if err != nil {
 		return nil, err
 	}
 	var result []DBNormalizer
-	if len(jsonData) != 0 {
-		if err := json.Unmarshal(jsonData, &result); err != nil {
-			return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
-				"error": err.Error(),
-			})
-		}
+	if err := json.Unmarshal(jsonData, &result); err != nil {
+		return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
+			"error": err.Error(),
+		})
 	}
-	return result, resp.Err()
+	return result, nil
 }
 
 // ObjectExist executes object_exist.
@@ -1159,6 +1157,9 @@ func (db *DB) ObjectInspect(name string) (interface{}, error) {
 		return nil, err
 	}
 	defer resp.Close()
+	if err := resp.Err(); err != nil {
+		return nil, err
+	}
 	jsonData, err := ioutil.ReadAll(resp)
 	if err != nil {
 		return nil, err
@@ -1166,36 +1167,30 @@ func (db *DB) ObjectInspect(name string) (interface{}, error) {
 	switch {
 	case name == "": // Database
 		var result DBObjectDatabase
-		if len(jsonData) != 0 {
-			if err := json.Unmarshal(jsonData, &result); err != nil {
-				return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
-					"error": err.Error(),
-				})
-			}
+		if err := json.Unmarshal(jsonData, &result); err != nil {
+			return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
+				"error": err.Error(),
+			})
 		}
-		return &result, resp.Err()
+		return &result, nil
 	case strings.Contains(name, "."): // Column
 		var result DBObjectColumn
-		if len(jsonData) != 0 {
-			if err := json.Unmarshal(jsonData, &result); err != nil {
-				return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
-					"error": err.Error(),
-				})
-			}
+		if err := json.Unmarshal(jsonData, &result); err != nil {
+			return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
+				"error": err.Error(),
+			})
 		}
-		return &result, resp.Err()
+		return &result, nil
 	default: // Table of type
 		type SizeNRecords struct {
 			Size     *int `json:"size"`
 			NRecords *int `json:"n_records"`
 		}
 		var sizeNRecords SizeNRecords
-		if len(jsonData) != 0 {
-			if err := json.Unmarshal(jsonData, &sizeNRecords); err != nil {
-				return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
-					"error": err.Error(),
-				})
-			}
+		if err := json.Unmarshal(jsonData, &sizeNRecords); err != nil {
+			return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
+				"error": err.Error(),
+			})
 		}
 		switch {
 		case sizeNRecords.Size != nil:
@@ -1205,7 +1200,7 @@ func (db *DB) ObjectInspect(name string) (interface{}, error) {
 					"error": err.Error(),
 				})
 			}
-			return &result, resp.Err()
+			return &result, nil
 		case sizeNRecords.NRecords != nil:
 			var result DBObjectTable
 			if err := json.Unmarshal(jsonData, &result); err != nil {
@@ -1213,11 +1208,8 @@ func (db *DB) ObjectInspect(name string) (interface{}, error) {
 					"error": err.Error(),
 				})
 			}
-			return &result, resp.Err()
+			return &result, nil
 		default:
-			if resp.Err() != nil {
-				return nil, resp.Err()
-			}
 			return nil, NewError(ResponseError, "The response format is invalid.", map[string]interface{}{
 				"command": "object_inspect",
 			})
@@ -1255,22 +1247,23 @@ func (db *DB) ObjectList() (map[string]*DBObject, error) {
 		return nil, err
 	}
 	defer resp.Close()
+	if err := resp.Err(); err != nil {
+		return nil, err
+	}
 	jsonData, err := ioutil.ReadAll(resp)
 	if err != nil {
 		return nil, err
 	}
 	var result map[string]*DBObject
-	if len(jsonData) != 0 {
-		if err := json.Unmarshal(jsonData, &result); err != nil {
-			return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
-				"error": err.Error(),
-			})
-		}
+	if err := json.Unmarshal(jsonData, &result); err != nil {
+		return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
+			"error": err.Error(),
+		})
 	}
-	if result == nil && resp.Err() == nil {
+	if result == nil {
 		result = make(map[string]*DBObject)
 	}
-	return result, resp.Err()
+	return result, nil
 }
 
 // ObjectRemove executes object_remove.
@@ -1384,8 +1377,8 @@ func (db *DB) RequestCancel(id int) error {
 		return err
 	}
 	defer resp.Close()
-	if resp.Err() != nil {
-		return resp.Err()
+	if err := resp.Err(); err != nil {
+		return err
 	}
 	jsonData, err := ioutil.ReadAll(resp)
 	if err != nil {
@@ -1418,6 +1411,9 @@ func (db *DB) RubyEval(script string) (interface{}, error) {
 		return nil, err
 	}
 	defer resp.Close()
+	if err := resp.Err(); err != nil {
+		return nil, err
+	}
 	jsonData, err := ioutil.ReadAll(resp)
 	if err != nil {
 		return nil, err
@@ -1426,14 +1422,12 @@ func (db *DB) RubyEval(script string) (interface{}, error) {
 		Value interface{} `json:"value"`
 	}
 	var result Result
-	if len(jsonData) != 0 {
-		if err := json.Unmarshal(jsonData, &result); err != nil {
-			return false, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
-				"error": err.Error(),
-			})
-		}
+	if err := json.Unmarshal(jsonData, &result); err != nil {
+		return false, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
+			"error": err.Error(),
+		})
 	}
-	return result.Value, resp.Err()
+	return result.Value, nil
 }
 
 // RubyLoad executes ruby_load.
@@ -1445,6 +1439,9 @@ func (db *DB) RubyLoad(path string) (interface{}, error) {
 		return nil, err
 	}
 	defer resp.Close()
+	if err := resp.Err(); err != nil {
+		return nil, err
+	}
 	jsonData, err := ioutil.ReadAll(resp)
 	if err != nil {
 		return nil, err
@@ -1453,14 +1450,12 @@ func (db *DB) RubyLoad(path string) (interface{}, error) {
 		Value interface{} `json:"value"`
 	}
 	var result Result
-	if len(jsonData) != 0 {
-		if err := json.Unmarshal(jsonData, &result); err != nil {
-			return false, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
-				"error": err.Error(),
-			})
-		}
+	if err := json.Unmarshal(jsonData, &result); err != nil {
+		return false, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
+			"error": err.Error(),
+		})
 	}
-	return result.Value, resp.Err()
+	return result.Value, nil
 }
 
 // DBSchemaPlugin is a part of DBSchema.
@@ -1572,19 +1567,20 @@ func (db *DB) Schema() (*DBSchema, error) {
 		return nil, err
 	}
 	defer resp.Close()
+	if err := resp.Err(); err != nil {
+		return nil, err
+	}
 	jsonData, err := ioutil.ReadAll(resp)
 	if err != nil {
 		return nil, err
 	}
 	var result DBSchema
-	if len(jsonData) != 0 {
-		if err := json.Unmarshal(jsonData, &result); err != nil {
-			return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
-				"error": err.Error(),
-			})
-		}
+	if err := json.Unmarshal(jsonData, &result); err != nil {
+		return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
+			"error": err.Error(),
+		})
 	}
-	return &result, resp.Err()
+	return &result, nil
 }
 
 // DBSelectOptionsColumn stores --columns[NAME].
@@ -1787,9 +1783,9 @@ func (db *DB) Select(tbl string, options *DBSelectOptions) (io.ReadCloser, error
 	if err != nil {
 		return nil, err
 	}
-	if resp.Err() != nil {
+	if err := resp.Err(); err != nil {
 		resp.Close()
-		return nil, resp.Err()
+		return nil, err
 	}
 	return resp, nil
 }
@@ -2130,17 +2126,18 @@ func (db *DB) Status() (*DBStatus, error) {
 		return nil, err
 	}
 	defer resp.Close()
+	if err := resp.Err(); err != nil {
+		return nil, err
+	}
 	jsonData, err := ioutil.ReadAll(resp)
 	if err != nil {
 		return nil, err
 	}
 	var data map[string]interface{}
-	if len(jsonData) != 0 {
-		if err := json.Unmarshal(jsonData, &data); err != nil {
-			return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
-				"error": err.Error(),
-			})
-		}
+	if err := json.Unmarshal(jsonData, &data); err != nil {
+		return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
+			"error": err.Error(),
+		})
 	}
 	var result DBStatus
 	if data != nil {
@@ -2190,7 +2187,7 @@ func (db *DB) Status() (*DBStatus, error) {
 			}
 		}
 	}
-	return &result, resp.Err()
+	return &result, nil
 }
 
 // TableCopy executes table_copy.
@@ -2315,17 +2312,18 @@ func (db *DB) TableList() ([]DBTable, error) {
 		return nil, err
 	}
 	defer resp.Close()
+	if err := resp.Err(); err != nil {
+		return nil, err
+	}
 	jsonData, err := ioutil.ReadAll(resp)
 	if err != nil {
 		return nil, err
 	}
 	var result [][]interface{}
-	if len(jsonData) != 0 {
-		if err := json.Unmarshal(jsonData, &result); err != nil {
-			return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
-				"error": err.Error(),
-			})
-		}
+	if err := json.Unmarshal(jsonData, &result); err != nil {
+		return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
+			"error": err.Error(),
+		})
 	}
 	if len(result) == 0 {
 		return nil, NewError(ResponseError, "The result is empty.", nil)
@@ -2379,7 +2377,7 @@ func (db *DB) TableList() ([]DBTable, error) {
 		}
 		tables = append(tables, table)
 	}
-	return tables, resp.Err()
+	return tables, nil
 }
 
 // TableRemove executes table_remove.
@@ -2448,19 +2446,20 @@ func (db *DB) TableTokenize(tbl, str string, options *DBTableTokenizeOptions) ([
 		return nil, err
 	}
 	defer resp.Close()
+	if err := resp.Err(); err != nil {
+		return nil, err
+	}
 	jsonData, err := ioutil.ReadAll(resp)
 	if err != nil {
 		return nil, err
 	}
 	var result []DBToken
-	if len(jsonData) != 0 {
-		if err := json.Unmarshal(jsonData, &result); err != nil {
-			return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
-				"error": err.Error(),
-			})
-		}
+	if err := json.Unmarshal(jsonData, &result); err != nil {
+		return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
+			"error": err.Error(),
+		})
 	}
-	return result, resp.Err()
+	return result, nil
 }
 
 // ThreadLimit executes thread_limit.
@@ -2518,19 +2517,20 @@ func (db *DB) Tokenize(tokenizer, str string, options *DBTokenizeOptions) ([]DBT
 		return nil, err
 	}
 	defer resp.Close()
+	if err := resp.Err(); err != nil {
+		return nil, err
+	}
 	jsonData, err := ioutil.ReadAll(resp)
 	if err != nil {
 		return nil, err
 	}
 	var result []DBToken
-	if len(jsonData) != 0 {
-		if err := json.Unmarshal(jsonData, &result); err != nil {
-			return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
-				"error": err.Error(),
-			})
-		}
+	if err := json.Unmarshal(jsonData, &result); err != nil {
+		return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
+			"error": err.Error(),
+		})
 	}
-	return result, resp.Err()
+	return result, nil
 }
 
 // DBTokenizer is a result of tokenizer_list.
@@ -2545,19 +2545,20 @@ func (db *DB) TokenizerList() ([]DBTokenizer, error) {
 		return nil, err
 	}
 	defer resp.Close()
+	if err := resp.Err(); err != nil {
+		return nil, err
+	}
 	jsonData, err := ioutil.ReadAll(resp)
 	if err != nil {
 		return nil, err
 	}
 	var result []DBTokenizer
-	if len(jsonData) != 0 {
-		if err := json.Unmarshal(jsonData, &result); err != nil {
-			return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
-				"error": err.Error(),
-			})
-		}
+	if err := json.Unmarshal(jsonData, &result); err != nil {
+		return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
+			"error": err.Error(),
+		})
 	}
-	return result, resp.Err()
+	return result, nil
 }
 
 // Truncate executes truncate.
-------------- next part --------------
HTML����������������������������...
URL: https://lists.osdn.me/mailman/archives/groonga-commit/attachments/20170913/073237c6/attachment-0001.htm 



More information about the Groonga-commit mailing list
Back to archive index