Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,7 @@ docs/landing/public
docs/hugo*

# jenv
.java-version
.java-version

# data directory
data/
5 changes: 5 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,11 @@ configure(subprojects.findAll { it.name != 'util' }) {
compile 'org.slf4j:slf4j-api:1.7.6', optional

testCompile 'com.google.code.findbugs:jsr305:1.3.9'

compile 'io.opencensus:opencensus-api:0.14.0'
runtime 'io.opencensus:opencensus-impl:0.14.0'
compile 'io.opencensus:opencensus-exporter-trace-stackdriver:0.14.0'
runtime 'io.opencensus:opencensus-exporter-trace-stackdriver:0.14.0'
}

/* Compiling */
Expand Down
73 changes: 62 additions & 11 deletions driver-core/src/main/com/mongodb/binding/ClusterBinding.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@

import static com.mongodb.assertions.Assertions.notNull;

import io.opencensus.common.Scope;
import io.opencensus.trace.Tracer;
import io.opencensus.trace.Tracing;

/**
* A simple ReadWriteBinding implementation that supplies write connection sources bound to a possibly different primary each time, and a
* read connection source bound to a possible different server each time.
Expand All @@ -40,6 +44,7 @@ public class ClusterBinding extends AbstractReferenceCounted implements ReadWrit
private final Cluster cluster;
private final ReadPreference readPreference;
private final ReadConcern readConcern;
private static final Tracer TRACER = Tracing.getTracer();

/**
* Creates an instance.
Expand Down Expand Up @@ -67,8 +72,14 @@ public ClusterBinding(final Cluster cluster, final ReadPreference readPreference

@Override
public ReadWriteBinding retain() {
super.retain();
return this;
Scope ss = TRACER.spanBuilder("com.mongodb.binding.ClusterBinding.retain").startScopedSpan();

try {
super.retain();
return this;
} finally {
ss.close();
}
}

@Override
Expand All @@ -78,7 +89,13 @@ public ReadPreference getReadPreference() {

@Override
public ConnectionSource getReadConnectionSource() {
return new ClusterBindingConnectionSource(new ReadPreferenceServerSelector(readPreference));
Scope ss = TRACER.spanBuilder("com.mongodb.binding.ClusterBinding.getReadConnectionSource").startScopedSpan();

try {
return new ClusterBindingConnectionSource(new ReadPreferenceServerSelector(readPreference));
} finally {
ss.close();
}
}

@Override
Expand All @@ -88,7 +105,13 @@ public SessionContext getSessionContext() {

@Override
public ConnectionSource getWriteConnectionSource() {
return new ClusterBindingConnectionSource(new WritableServerSelector());
Scope ss = TRACER.spanBuilder("com.mongodb.binding.ClusterBinding.getWriteConnectionSource").startScopedSpan();

try {
return new ClusterBindingConnectionSource(new WritableServerSelector());
} finally {
ss.close();
}
}

private final class ClusterBindingConnectionSource extends AbstractReferenceCounted implements ConnectionSource {
Expand All @@ -101,7 +124,14 @@ private ClusterBindingConnectionSource(final ServerSelector serverSelector) {

@Override
public ServerDescription getServerDescription() {
return server.getDescription();
Scope ss = TRACER.spanBuilder("com.mongodb.binding.ClusterBinding.ClusterBindingConnection.getServerDescription")
.startScopedSpan();

try {
return server.getDescription();
} finally {
ss.close();
}
}

@Override
Expand All @@ -111,19 +141,40 @@ public SessionContext getSessionContext() {

@Override
public Connection getConnection() {
return server.getConnection();
Scope ss = TRACER.spanBuilder("com.mongodb.binding.ClusterBinding.ClusterBindingConnectionSource.getConnection")
.startScopedSpan();

try {
return server.getConnection();
} finally {
ss.close();
}
}

public ConnectionSource retain() {
super.retain();
ClusterBinding.this.retain();
return this;
Scope ss = TRACER.spanBuilder("com.mongodb.binding.ClusterBinding.ClusterBindingConnectionSource.retain")
.startScopedSpan();

try {
super.retain();
ClusterBinding.this.retain();
return this;
} finally {
ss.close();
}
}

@Override
public void release() {
super.release();
ClusterBinding.this.release();
Scope ss = TRACER.spanBuilder("com.mongodb.binding.ClusterBinding.ClusterBindingConnectionSource.release")
.startScopedSpan();

try {
super.release();
ClusterBinding.this.release();
} finally {
ss.close();
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@

import static com.mongodb.assertions.Assertions.notNull;

import io.opencensus.common.Scope;
import io.opencensus.trace.Tracer;
import io.opencensus.trace.Tracing;

/**
* A read binding that is bound to a single connection.
*
Expand All @@ -34,6 +38,7 @@ public class SingleConnectionReadBinding extends AbstractReferenceCounted implem
private final ReadPreference readPreference;
private final ServerDescription serverDescription;
private final Connection connection;
private static final Tracer TRACER = Tracing.getTracer();

/**
* Construct an instance.
Expand All @@ -56,7 +61,13 @@ public ReadPreference getReadPreference() {

@Override
public ConnectionSource getReadConnectionSource() {
return new SingleConnectionSource();
Scope ss = TRACER.spanBuilder("com.mongodb.binding.SingleConnectionReadBinding.getReadConnectionSource").startScopedSpan();

try {
return new SingleConnectionSource();
} finally {
ss.close();
}
}

@Override
Expand Down Expand Up @@ -101,15 +112,29 @@ public Connection getConnection() {

@Override
public ConnectionSource retain() {
super.retain();
return this;
Scope ss = TRACER.spanBuilder("com.mongodb.binding.SingleConnectionReadBinding.SingleConnectionSource.retain")
.startScopedSpan();

try {
super.retain();
return this;
} finally {
ss.close();
}
}

@Override
public void release() {
super.release();
if (super.getCount() == 0) {
SingleConnectionReadBinding.this.release();
Scope ss = TRACER.spanBuilder("com.mongodb.binding.SingleConnectionReadBinding.SingleConnectionSource.release")
.startScopedSpan();

try {
super.release();
if (super.getCount() == 0) {
SingleConnectionReadBinding.this.release();
}
} finally {
ss.close();
}
}
}
Expand Down
64 changes: 54 additions & 10 deletions driver-core/src/main/com/mongodb/binding/SingleServerBinding.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@

import static com.mongodb.assertions.Assertions.notNull;

import io.opencensus.common.Scope;
import io.opencensus.trace.Tracer;
import io.opencensus.trace.Tracing;

/**
* A simple binding where all connection sources are bound to the server specified in the constructor.
*
Expand All @@ -37,6 +41,7 @@ public class SingleServerBinding extends AbstractReferenceCounted implements Rea
private final Cluster cluster;
private final ServerAddress serverAddress;
private final ReadPreference readPreference;
private static final Tracer TRACER = Tracing.getTracer();

/**
* Creates an instance, defaulting to {@link com.mongodb.ReadPreference#primary()} for reads.
Expand All @@ -61,7 +66,13 @@ public SingleServerBinding(final Cluster cluster, final ServerAddress serverAddr

@Override
public ConnectionSource getWriteConnectionSource() {
return new SingleServerBindingConnectionSource();
Scope ss = TRACER.spanBuilder("com.mongodb.binding.SingleServerBinding.getWriteConnectionSource").startScopedSpan();

try {
return new SingleServerBindingConnectionSource();
} finally {
ss.close();
}
}

@Override
Expand All @@ -71,7 +82,13 @@ public ReadPreference getReadPreference() {

@Override
public ConnectionSource getReadConnectionSource() {
return new SingleServerBindingConnectionSource();
Scope ss = TRACER.spanBuilder("com.mongodb.binding.SingleServerBinding.getReadConnectionSource").startScopedSpan();

try {
return new SingleServerBindingConnectionSource();
} finally {
ss.close();
}
}

@Override
Expand All @@ -81,8 +98,14 @@ public SessionContext getSessionContext() {

@Override
public SingleServerBinding retain() {
super.retain();
return this;
Scope ss = TRACER.spanBuilder("com.mongodb.binding.SingleServerBinding.retain").startScopedSpan();

try {
super.retain();
return this;
} finally {
ss.close();
}
}

private final class SingleServerBindingConnectionSource extends AbstractReferenceCounted implements ConnectionSource {
Expand All @@ -105,20 +128,41 @@ public SessionContext getSessionContext() {

@Override
public Connection getConnection() {
return cluster.selectServer(new ServerAddressSelector(serverAddress)).getConnection();
Scope ss = TRACER.spanBuilder("com.mongodb.binding.SingleServerBinding.SingleServerBindingConnection.getConnection")
.startScopedSpan();

try {
return cluster.selectServer(new ServerAddressSelector(serverAddress)).getConnection();
} finally {
ss.close();
}
}

@Override
public ConnectionSource retain() {
super.retain();
return this;
Scope ss = TRACER.spanBuilder("com.mongodb.binding.SingleServerBinding.SingleServerBindingConnection.retain")
.startScopedSpan();

try {
super.retain();
return this;
} finally {
ss.close();
}
}

@Override
public void release() {
super.release();
if (super.getCount() == 0) {
SingleServerBinding.this.release();
Scope ss = TRACER.spanBuilder("com.mongodb.binding.SingleServerBinding.SingleServerBindingConnection.release")
.startScopedSpan();

try {
super.release();
if (super.getCount() == 0) {
SingleServerBinding.this.release();
}
} finally {
ss.close();
}
}
}
Expand Down
Loading