Skip to content

Commit 138670a

Browse files
author
mpv1989
committed
optimized ArangoDB.Builder for better multi thread support
1 parent a9e6ca6 commit 138670a

File tree

2 files changed

+16
-14
lines changed

2 files changed

+16
-14
lines changed

ChangeLog

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
v4.1.12 (2017-04-xx)
22
---------------------------
33
* added ArangoDatabaseAsync.cursor()
4+
* optimized ArangoDB.Builder for better multi thread support
45

56
v4.1.11 (2017-03-24)
67
---------------------------

src/main/java/com/arangodb/ArangoDBAsync.java

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import com.arangodb.internal.util.ArangoDeserializerImpl;
4545
import com.arangodb.internal.util.ArangoSerializerImpl;
4646
import com.arangodb.internal.util.ArangoUtilImpl;
47+
import com.arangodb.internal.velocypack.VPackDocumentModule;
4748
import com.arangodb.internal.velocypack.VPackDriverModule;
4849
import com.arangodb.internal.velocystream.Communication;
4950
import com.arangodb.internal.velocystream.CommunicationAsync;
@@ -93,18 +94,16 @@ public static class Builder {
9394
private Integer chunksize;
9495
private Integer maxConnections;
9596
private final VPack.Builder vpackBuilder;
96-
private final CollectionCache collectionCache;
9797
private final VPackParser.Builder vpackParserBuilder;
9898
private ArangoSerializer serializer;
9999
private ArangoDeserializer deserializer;
100100

101101
public Builder() {
102102
super();
103103
vpackBuilder = new VPack.Builder();
104-
collectionCache = new CollectionCache();
105104
vpackParserBuilder = new VPackParser.Builder();
106-
vpackBuilder.registerModule(new VPackDriverModule(collectionCache));
107-
vpackParserBuilder.registerModule(new VPackDriverModule(collectionCache));
105+
vpackBuilder.registerModule(new VPackDriverModule());
106+
vpackParserBuilder.registerModule(new VPackDriverModule());
108107
vpackBuilder.registerModule(new VPackJdk8Module());
109108
host = new Host(ArangoDBConstants.DEFAULT_HOST, ArangoDBConstants.DEFAULT_PORT);
110109
hosts = new ArrayList<>();
@@ -325,21 +324,23 @@ public Builder setDeserializer(final ArangoDeserializer deserializer) {
325324
return this;
326325
}
327326

328-
public ArangoDBAsync build() {
327+
public synchronized ArangoDBAsync build() {
329328
if (hosts.isEmpty()) {
330329
hosts.add(host);
331330
}
332-
final VPack vpacker = vpackBuilder.build();
331+
final CollectionCache collectionCache = new CollectionCache();
332+
vpackBuilder.registerModule(new VPackDocumentModule(collectionCache));
333+
vpackParserBuilder.registerModule(new VPackDocumentModule(collectionCache));
334+
335+
final VPack vpacker = vpackBuilder.serializeNullValues(false).build();
333336
final VPack vpackerNull = vpackBuilder.serializeNullValues(true).build();
334337
final VPackParser vpackParser = vpackParserBuilder.build();
335-
if (serializer == null) {
336-
serializer = new ArangoSerializerImpl(vpacker, vpackerNull, vpackParser);
337-
}
338-
if (deserializer == null) {
339-
deserializer = new ArangoDeserializerImpl(vpackerNull, vpackParser);
340-
}
341-
final HostHandler hostHandler = new DefaultHostHandler(hosts);
342-
return new ArangoDBAsync(asyncBuilder(hostHandler), new ArangoUtilImpl(serializer, deserializer),
338+
final ArangoSerializer serializerTemp = serializer != null ? serializer
339+
: new ArangoSerializerImpl(vpacker, vpackerNull, vpackParser);
340+
final ArangoDeserializer deserializerTemp = deserializer != null ? deserializer
341+
: new ArangoDeserializerImpl(vpackerNull, vpackParser);
342+
final HostHandler hostHandler = new DefaultHostHandler(new ArrayList<>(hosts));
343+
return new ArangoDBAsync(asyncBuilder(hostHandler), new ArangoUtilImpl(serializerTemp, deserializerTemp),
343344
collectionCache, syncBuilder(hostHandler));
344345
}
345346

0 commit comments

Comments
 (0)