diff --git a/README.md b/README.md
index 189d08a..1c66034 100644
--- a/README.md
+++ b/README.md
@@ -24,14 +24,14 @@ You can use **Apache Maven** or **Gradle**/**Grails** to download the SDK.
com.tencent.tcvectordb
vectordatabase-sdk-java
- 2.0.6
+ 2.0.9
```
- Gradle/Grails
```gradle
- compile 'com.tencent.tcvectordb:vectordatabase-sdk-java:2.0.6'
+ compile 'com.tencent.tcvectordb:vectordatabase-sdk-java:2.0.9'
```
### Examples
diff --git a/tcvectordb/.DS_Store b/tcvectordb/.DS_Store
new file mode 100644
index 0000000..3a130ba
Binary files /dev/null and b/tcvectordb/.DS_Store differ
diff --git a/tcvectordb/README.md b/tcvectordb/README.md
index 63ac539..1d9ffb7 100644
--- a/tcvectordb/README.md
+++ b/tcvectordb/README.md
@@ -24,14 +24,14 @@ You can use **Apache Maven** or **Gradle**/**Grails** to download the SDK.
com.tencent.tcvectordb
vectordatabase-sdk-java
- 2.0.6
+ 2.0.9
```
- Gradle/Grails
```gradle
- compile 'com.tencent.tcvectordb:vectordatabase-sdk-java:2.0.6'
+ compile 'com.tencent.tcvectordb:vectordatabase-sdk-java:2.0.9'
```
### Examples
diff --git a/tcvectordb/pom.xml b/tcvectordb/pom.xml
index e8446ec..04fad9b 100644
--- a/tcvectordb/pom.xml
+++ b/tcvectordb/pom.xml
@@ -4,7 +4,7 @@
com.tencent.tcvectordb
vectordatabase-sdk-java
- 2.0.6
+ 2.0.9
jar
vectordatabase-sdk-java
diff --git a/tcvectordb/src/main/java/com/tencent/tcvectordb/examples/VectorDBExample.java b/tcvectordb/src/main/java/com/tencent/tcvectordb/examples/VectorDBExample.java
index 6721734..b735246 100644
--- a/tcvectordb/src/main/java/com/tencent/tcvectordb/examples/VectorDBExample.java
+++ b/tcvectordb/src/main/java/com/tencent/tcvectordb/examples/VectorDBExample.java
@@ -21,10 +21,8 @@
package com.tencent.tcvectordb.examples;
import com.tencent.tcvectordb.client.VectorDBClient;
+import com.tencent.tcvectordb.model.*;
import com.tencent.tcvectordb.model.Collection;
-import com.tencent.tcvectordb.model.Database;
-import com.tencent.tcvectordb.model.DocField;
-import com.tencent.tcvectordb.model.Document;
import com.tencent.tcvectordb.model.param.collection.*;
import com.tencent.tcvectordb.model.param.dml.*;
import com.tencent.tcvectordb.model.param.entity.AffectRes;
diff --git a/tcvectordb/src/main/java/com/tencent/tcvectordb/exception/ParamException.java b/tcvectordb/src/main/java/com/tencent/tcvectordb/exception/ParamException.java
index c9daf78..f666aff 100644
--- a/tcvectordb/src/main/java/com/tencent/tcvectordb/exception/ParamException.java
+++ b/tcvectordb/src/main/java/com/tencent/tcvectordb/exception/ParamException.java
@@ -27,4 +27,8 @@ public class ParamException extends VectorDBException {
public ParamException(String message) {
super(message);
}
+
+ public ParamException(String message, Throwable cause) {
+ super(message, cause);
+ }
}
diff --git a/tcvectordb/src/main/java/com/tencent/tcvectordb/exception/VectorDBException.java b/tcvectordb/src/main/java/com/tencent/tcvectordb/exception/VectorDBException.java
index 895169d..1461d01 100644
--- a/tcvectordb/src/main/java/com/tencent/tcvectordb/exception/VectorDBException.java
+++ b/tcvectordb/src/main/java/com/tencent/tcvectordb/exception/VectorDBException.java
@@ -28,4 +28,8 @@ public class VectorDBException extends RuntimeException {
public VectorDBException(String message) {
super(message);
}
+
+ public VectorDBException(String message, Throwable cause) {
+ super(message, cause);
+ }
}
diff --git a/tcvectordb/src/main/java/com/tencent/tcvectordb/model/param/database/ConnectParam.java b/tcvectordb/src/main/java/com/tencent/tcvectordb/model/param/database/ConnectParam.java
index eea17f4..3e0f8de 100644
--- a/tcvectordb/src/main/java/com/tencent/tcvectordb/model/param/database/ConnectParam.java
+++ b/tcvectordb/src/main/java/com/tencent/tcvectordb/model/param/database/ConnectParam.java
@@ -101,7 +101,7 @@ public static class Builder {
/**
* connect timeout, unit is second
*/
- private int connectTimeout = 2;
+ private int connectTimeout = 10;
/**
* max idle connection count, unit is second
*/
diff --git a/tcvectordb/src/main/java/com/tencent/tcvectordb/service/GrpcStub.java b/tcvectordb/src/main/java/com/tencent/tcvectordb/service/GrpcStub.java
index 32244b2..3e1dfbc 100644
--- a/tcvectordb/src/main/java/com/tencent/tcvectordb/service/GrpcStub.java
+++ b/tcvectordb/src/main/java/com/tencent/tcvectordb/service/GrpcStub.java
@@ -66,8 +66,10 @@ public class GrpcStub extends HttpStub{
private String authorization;
private int timeout = 10;
private static final Logger logger = LoggerFactory.getLogger(GrpcStub.class.getName());
+ private ConnectParam connectParam;
public GrpcStub(ConnectParam param){
- super(param);
+ super();
+ connectParam = param;
this.authorization = String.format("Bearer account=%s&api_key=%s",param.getUsername(), param.getKey());
this.channel = OkHttpChannelBuilder.forTarget(this.getAddress(param.getUrl())).
@@ -137,6 +139,7 @@ public void dropDatabase(Database database) {
@Override
public AffectRes createAIDatabase(AIDatabase aiDatabase) {
+ super.initHttpStub(this.connectParam);
return super.createAIDatabase(aiDatabase);
}
@@ -164,6 +167,7 @@ public DataBaseTypeRes describeDatabase(Database database) {
@Override
public AffectRes dropAIDatabase(AIDatabase aiDatabase) {
+ super.initHttpStub(this.connectParam);
return super.dropAIDatabase(aiDatabase);
}
@@ -300,6 +304,7 @@ public void createCollection(CreateCollectionParam params) {
@Override
public void createCollectionView(CreateCollectionViewParam params) {
+ super.initHttpStub(this.connectParam);
super.createCollectionView(params);
}
@@ -365,6 +370,7 @@ public AffectRes truncateCollection(String databaseName, String collectionName,
@Override
public AffectRes truncateCollectionView(String databaseName, String collectionName, DataBaseTypeEnum dbType) {
+ super.initHttpStub(this.connectParam);
return super.truncateCollectionView(databaseName, collectionName, dbType);
}
@@ -513,6 +519,7 @@ public List queryDocument(QueryParamInner param, boolean ai) {
@Override
public SearchRes searchDocument(SearchParamInner param, DataBaseTypeEnum dbType) {
if (dbType.equals(DataBaseTypeEnum.AI_DB)){
+ super.initHttpStub(this.connectParam);
return super.searchDocument(param, dbType);
}
Olama.SearchRequest.Builder builder = Olama.SearchRequest.newBuilder().setDatabase(param.getDatabase()).
@@ -786,66 +793,79 @@ public BaseRes rebuildIndex(RebuildIndexParamInner param) {
@Override
public AffectRes setAIAlias(String databaseName, String collectionName, String aliasName) {
+ super.initHttpStub(this.connectParam);
return super.setAIAlias(databaseName, collectionName, aliasName);
}
@Override
public AffectRes deleteAIAlias(String databaseName, String aliasName) {
+ super.initHttpStub(this.connectParam);
return super.deleteAIAlias(databaseName, aliasName);
}
@Override
public List listCollectionView(String databaseName) {
+ super.initHttpStub(this.connectParam);
return super.listCollectionView(databaseName);
}
@Override
public CollectionView describeCollectionView(String databaseName, String collectionName) {
+ super.initHttpStub(this.connectParam);
return super.describeCollectionView(databaseName, collectionName);
}
@Override
public AffectRes dropCollectionView(String databaseName, String collectionName) {
+ super.initHttpStub(this.connectParam);
return super.dropCollectionView(databaseName, collectionName);
}
@Override
public List queryAIDocument(CollectionViewQueryParamInner queryParamInner) {
+ super.initHttpStub(this.connectParam);
return super.queryAIDocument(queryParamInner);
}
@Override
public AffectRes deleteAIDocument(CollectionViewDeleteParamInner deleteParamInner) {
+ super.initHttpStub(this.connectParam);
return super.deleteAIDocument(deleteParamInner);
}
@Override
public SearchContentRes searchAIDocument(SearchDocParamInner searchDocParamInner) {
+ super.initHttpStub(this.connectParam);
return super.searchAIDocument(searchDocParamInner);
}
@Override
public AffectRes updateAIDocument(CollectionViewUpdateParamInner updateParamInner) {
+ super.initHttpStub(this.connectParam);
return super.updateAIDocument(updateParamInner);
}
@Override
public void upload(String databaseName, String collectionName, LoadAndSplitTextParam loadAndSplitTextParam, Map metaDataMap) throws Exception {
+ super.initHttpStub(this.connectParam);
super.upload(databaseName, collectionName, loadAndSplitTextParam, metaDataMap);
}
@Override
public GetDocumentSetRes getFile(String databaseName, String collectionName, String fileName, String fileId) {
+ super.initHttpStub(this.connectParam);
return super.getFile(databaseName, collectionName, fileName, fileId);
}
@Override
public GetChunksRes getChunks(String databaseName, String collectionName, String documentSetName, String documentSetId, Integer limit, Integer offset) {
+ super.initHttpStub(this.connectParam);
return super.getChunks(databaseName, collectionName, documentSetName, documentSetId, limit, offset);
}
@Override
public BaseRes rebuildAIIndex(RebuildIndexParamInner param) {
+ super.initHttpStub(this.connectParam);
return super.rebuildAIIndex(param);
}
diff --git a/tcvectordb/src/main/java/com/tencent/tcvectordb/service/HttpStub.java b/tcvectordb/src/main/java/com/tencent/tcvectordb/service/HttpStub.java
index 6b6cc92..2d4bd88 100644
--- a/tcvectordb/src/main/java/com/tencent/tcvectordb/service/HttpStub.java
+++ b/tcvectordb/src/main/java/com/tencent/tcvectordb/service/HttpStub.java
@@ -63,28 +63,38 @@
* HTTP Stub for DB service API
*/
public class HttpStub implements Stub {
- private final ConnectParam connectParam;
- private final OkHttpClient client;
- private final Headers.Builder headersBuilder;
- private final ObjectMapper mapper = new ObjectMapper();
+ private ConnectParam connectParam;
+ private OkHttpClient client;
+ private Headers.Builder headersBuilder;
+ private ObjectMapper mapper = new ObjectMapper();
private static final MediaType JSON =
MediaType.parse("application/json; charset=utf-8");
private static final Logger logger = LoggerFactory.getLogger(HttpStub.class.getName());
-
+ public HttpStub(){}
public HttpStub(ConnectParam connectParam) {
- this.connectParam = connectParam;
- String authorization = String.format("Bearer account=%s&api_key=%s",
- connectParam.getUsername(), connectParam.getKey());
- this.headersBuilder = new Headers.Builder()
- .add("Authorization", authorization);
- logger.debug("header: {}", authorization);
- this.client = new OkHttpClient.Builder()
- .connectTimeout(this.connectParam.getConnectTimeout(), TimeUnit.SECONDS)
- .readTimeout(connectParam.getTimeout(), TimeUnit.SECONDS)
- .connectionPool(new ConnectionPool(
- this.connectParam.getMaxIdleConnections(), this.connectParam.getKeepAliveDuration(), TimeUnit.SECONDS))
- .build();
+ initHttpStub(connectParam);
+ }
+
+ protected void initHttpStub(ConnectParam connectParam) {
+ if (client == null) {
+ synchronized (this) {
+ if (client == null) {
+ this.connectParam = connectParam;
+ String authorization = String.format("Bearer account=%s&api_key=%s",
+ connectParam.getUsername(), connectParam.getKey());
+ this.headersBuilder = new Headers.Builder()
+ .add("Authorization", authorization);
+ logger.debug("header: {}", authorization);
+ this.client = new OkHttpClient.Builder()
+ .connectTimeout(this.connectParam.getConnectTimeout(), TimeUnit.SECONDS)
+ .readTimeout(connectParam.getTimeout(), TimeUnit.SECONDS)
+ .connectionPool(new ConnectionPool(
+ this.connectParam.getMaxIdleConnections(), this.connectParam.getKeepAliveDuration(), TimeUnit.SECONDS))
+ .build();
+ }
+ }
+ }
}
@Override
@@ -724,11 +734,13 @@ private JsonNode post(String url, String json, boolean ai) {
}
private Headers get_headers(boolean ai) {
+ Headers.Builder headersTmp = new Headers.Builder();
String backend = "vdb";
if (ai){
backend = "ai";
}
- this.headersBuilder.add("backend-service", backend);
+ headersTmp.add("backend-service", backend);
+ headersTmp.add("Authorization", this.headersBuilder.get("Authorization"));
logger.debug("Backend: {}", backend);
return headersBuilder.build();
}
diff --git a/tcvectordb/src/main/java/com/tencent/tcvectordb/utils/JsonUtils.java b/tcvectordb/src/main/java/com/tencent/tcvectordb/utils/JsonUtils.java
index 9badead..623cf59 100644
--- a/tcvectordb/src/main/java/com/tencent/tcvectordb/utils/JsonUtils.java
+++ b/tcvectordb/src/main/java/com/tencent/tcvectordb/utils/JsonUtils.java
@@ -65,8 +65,9 @@ public static T parseObject(String jsonStr, Class clz) {
try {
return DESERIALIZE_IGNORE_KEY_MAPPER.readValue(jsonStr, clz);
} catch (JsonProcessingException e) {
+
throw new ParamException(String.format(
- "can't parse content=%s", jsonStr));
+ "can't parse content=%s", jsonStr), e);
}
}
@@ -80,7 +81,7 @@ public static String toJsonString(T obj) {
return SERIALIZE_MAPPER.writeValueAsString(obj);
} catch (JsonProcessingException e) {
throw new ParamException(String.format(
- "can't serialize value=%s, type=%s", obj, obj.getClass().getName()));
+ "can't serialize value=%s, type=%s", obj, obj.getClass().getName()), e);
}
}
@@ -104,8 +105,9 @@ public static JsonNode parseToJsonNode(String jsonStr) {
try {
return SERIALIZE_MAPPER.readTree(jsonStr);
} catch (JsonProcessingException e) {
+
throw new ParamException(String.format(
- "can't parse content=%s", jsonStr));
+ "can't parse content=%s", jsonStr), e);
}
}
@@ -119,9 +121,8 @@ public static T collectionDeserializer(String jsonStr, TypeReference clz)
try {
return PARAMS_DESERIALIZE_MAPPER.readValue(jsonStr, clz);
} catch (JsonProcessingException e) {
- System.out.println(e);
throw new ParamException(String.format(
- "can't parse content=%s", jsonStr));
+ "can't parse content=%s", jsonStr), e);
}
}
}