Skip to content
Merged
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
2 changes: 1 addition & 1 deletion redisson_3.42/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,6 @@ jar {
}

verifyInstrumentation {
passes 'org.redisson:redisson:[3.42.0,)'
passes 'org.redisson:redisson:[3.42.0,3.45.1)'
excludeRegex '.*-NR.*'
}
34 changes: 34 additions & 0 deletions redisson_3.45.1/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@

// Build.gradle generated for instrumentation module redisson_3.23.4

apply plugin: 'java'

dependencies {
implementation 'org.redisson:redisson:3.45.1'

testImplementation 'junit:junit:4.12'
testImplementation fileTree(include: ['*.jar'], dir: '../test-lib')
testImplementation 'com.github.kstyrc:embedded-redis:0.6'
testImplementation 'org.slf4j:slf4j-api:1.7.32'
testImplementation 'org.slf4j:slf4j-simple:1.7.32'

// New Relic Labs Java Agent dependencies
implementation 'com.newrelic.agent.java:newrelic-agent:6.4.1'
implementation 'com.newrelic.agent.java:newrelic-api:6.4.1'
implementation fileTree(include: ['*.jar'], dir: '../libs')
implementation fileTree(include: ['*.jar'], dir: '../test-lib')
}

jar {
manifest {
attributes 'Implementation-Title': 'com.newrelic.instrumentation.labs.redisson_3.45.1'
attributes 'Implementation-Vendor': 'New Relic Labs'
attributes 'Implementation-Vendor-Id': 'com.newrelic.labs'
attributes 'Implementation-Version': 1.0
}
}

verifyInstrumentation {
passes 'org.redisson:redisson:[3.45.1,)'
excludeRegex '.*-NR.*'
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package com.newrelic.instrumentation.labs.redisson;

import java.util.function.BiConsumer;

import com.newrelic.api.agent.ExternalParameters;
import com.newrelic.api.agent.NewRelic;
import com.newrelic.api.agent.Segment;
import com.newrelic.api.agent.Trace;

public class NRBiConsumer<T> implements BiConsumer<T, Throwable> {

private Segment segment = null;
private ExternalParameters params = null;



public NRBiConsumer(Segment segment, ExternalParameters params) {
super();
this.segment = segment;
this.params = params;
}



@Override
@Trace
public void accept(T t, Throwable u) {
if(u != null) {
NewRelic.noticeError(u);
}
if(segment != null) {
if(params != null) {
segment.reportAsExternal(params);
}
segment.end();
segment = null;
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.newrelic.instrumentation.labs.redisson;

import java.util.function.Supplier;

import org.redisson.api.RFuture;

import com.newrelic.api.agent.DatastoreParameters;
import com.newrelic.api.agent.NewRelic;
import com.newrelic.api.agent.Segment;

public class NRSupplierWrapper<R> implements Supplier<RFuture<R>> {

private Supplier<RFuture<R>> delegate = null;
private String cmdName = null;
private String subName = null;
private DatastoreParameters params = null;



public NRSupplierWrapper(Supplier<RFuture<R>> supplier, String cmd, String sub, DatastoreParameters p) {
delegate = supplier;
cmdName = cmd;
subName = sub;
params = p;
}

@Override
public RFuture<R> get() {
RFuture<R> future = delegate.get();
Segment segment = NewRelic.getAgent().getTransaction().startSegment(cmdName + "-" + subName);
NRBiConsumer<R> action = new NRBiConsumer<R>(segment, params );

return (RFuture<R>) future.whenComplete(action);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package com.newrelic.instrumentation.labs.redisson;

public class Utils {

static ThreadLocal<String> operation = new ThreadLocal<String>();
static ThreadLocal<String> redissonType = new ThreadLocal<String>();
static ThreadLocal<String> objectName = new ThreadLocal<String>();


public static boolean operationIsSet() {
String operationName = operation.get();
return operationName != null && !operationName.isEmpty();
}

public static String getOperation() {
String operationName = operation.get();
return operationName;
}

public static void setOperation(String operationName) {
operation.set(operationName);
}

public static void unSetOperation() {
operation.remove();
}

public static boolean typeSet() {
String type = redissonType.get();
return type != null && !type.isEmpty();
}

public static void setType(Object obj) {
Class<?> clazz = obj.getClass();
String classname = clazz.getSimpleName().replace("Redisson", "").replace("Reactive", "");

redissonType.set(classname);
}

public static void setType(String type) {
redissonType.set(type);
}

public static String getType() {
return redissonType.get();
}

public static void unSetType() {
redissonType.remove();
}

public static boolean objectNameSet() {
String oName = objectName.get();
return oName != null && !oName.isEmpty();
}

public static void setObjectName(String oName) {
if(oName.startsWith("{")) return;
objectName.set(oName);
}

public static String getObjectName() {
return objectName.get();
}

public static void unSetObjectName() {
objectName.remove();
}

}
Loading