Execute one of the following functions, once registered on the server, to get the GemFire Session on the GemFire server.
execute function --id=DumpSessionsFunction --region=/gemfire_modules_sessions
import org.apache.geode.cache.Declarable;
import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.cache.execute.RegionFunctionContext;
import org.apache.geode.cache.partition.PartitionRegionHelper;
import org.apache.geode.modules.session.catalina.DeltaSession;
import java.util.Map;
import java.util.stream.Collectors;
public class DumpSessionsFunction implements Function, Declarable {
public void execute(FunctionContext context) {
RegionFunctionContext rfc = (RegionFunctionContext) context;
Map<String,DeltaSession> region = PartitionRegionHelper.getLocalDataForContext(rfc);
String sessions = getSessions(region);
context.getCache().getLogger().info(sessions);
context.getResultSender().lastResult(true);
}
private String getSessions(Map<String,DeltaSession> region) {
String header = "This member contains the following " + region.size() + " primary sessions";
return region.entrySet()
.stream()
.sorted(Map.Entry.comparingByKey())
.map(entry -> getEntry(entry))
.collect(Collectors.joining("\n", header, ""));
}
private String getEntry(Map.Entry<String,DeltaSession> entry) {
DeltaSession session = entry.getValue();
return new StringBuilder()
.append("\t\t")
.append(session.getClass().getSimpleName())
.append("[")
.append("id=").append(session.getId())
.append("; creationTime=").append(session.getCreationTime())
.append("; lastAccessedTime=").append(session.getLastAccessedTime())
.append("; maxInactiveInterval=").append(session.getMaxInactiveInterval())
.append("; sizeInBytes=").append(session.getSizeInBytes())
.append("]")
.toString();
}
public String getId() {
return getClass().getSimpleName();
}
public boolean optimizeForWrite() {
return true;
}
}
execute function --id=DumpSessionsOnServersFunction --arguments=/gemfire_modules_sessions
import org.apache.geode.cache.Declarable;
import org.apache.geode.cache.Region;
import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.cache.partition.PartitionRegionHelper;
import org.apache.geode.modules.session.catalina.DeltaSession;
import java.util.Map;
import java.util.stream.Collectors;
public class DumpSessionsOnServersFunction implements Function, Declarable {
public void execute(FunctionContext context) {
Object[] arguments = (Object[]) context.getArguments();
String regionPath = (String) arguments[0];
Region pr = context.getCache().getRegion(regionPath);
Map<String,DeltaSession> lds = PartitionRegionHelper.getLocalData(pr);
String sessions = getSessions(lds);
context.getCache().getLogger().info(sessions);
context.getResultSender().lastResult(true);
}
private String getSessions(Map<String,DeltaSession> region) {
String header = "This member contains the following " + region.size() + " sessions:\n\n";
return region.entrySet()
.stream()
.sorted(Map.Entry.comparingByKey())
.map(entry -> getEntry(entry))
.collect(Collectors.joining("\n", header, ""));
}
private String getEntry(Map.Entry<String,DeltaSession> entry) {
DeltaSession session = entry.getValue();
return new StringBuilder()
.append("\t")
.append(session.getClass().getSimpleName())
.append("[")
.append("id=").append(session.getId())
.append("; creationTime=").append(session.getCreationTime())
.append("; lastAccessedTime=").append(session.getLastAccessedTime())
.append("; maxInactiveInterval=").append(session.getMaxInactiveInterval())
.append("; sizeInBytes=").append(session.getSizeInBytes())
.append("]")
.toString();
}
public String getId() {
return getClass().getSimpleName();
}
public boolean optimizeForWrite() {
return true;
}
}
[info 2020/10/20 16:05:42.064 PDT <Function Execution Processor3> tid=0x63] This member contains the following 179 primary sessions DeltaSession8[id=0194B9F5042979F190F495035BD5D77C; creationTime=1603235055989; lastAccessedTime=1603235055998; maxInactiveInterval=300; sizeInBytes=9181] DeltaSession8[id=01A1F9C0FD3F6EA0D252566185334E2E; creationTime=1603235059051; lastAccessedTime=1603235059060; maxInactiveInterval=300; sizeInBytes=9357] DeltaSession8[id=0353F8F6479EB9100CBDC06991FBE111; creationTime=1603235057442; lastAccessedTime=1603235057451; maxInactiveInterval=300; sizeInBytes=29382] DeltaSession8[id=0395408AAE89C428C368FD81A782689D; creationTime=1603235066342; lastAccessedTime=1603235066350; maxInactiveInterval=300; sizeInBytes=3837] DeltaSession8[id=08D8D6ABC62507C5DC051E8FCC3B3469; creationTime=1603235063275; lastAccessedTime=1603235063284; maxInactiveInterval=300; sizeInBytes=14972] DeltaSession8[id=09B9C260071666E9B62D275DD8F89E30; creationTime=1603235051629; lastAccessedTime=1603235051639; maxInactiveInterval=300; sizeInBytes=0] DeltaSession8[id=09FD30D29D4702D6E1E66295F1C701D9; creationTime=1603235060011; lastAccessedTime=1603235060020; maxInactiveInterval=300; sizeInBytes=9704] DeltaSession8[id=0A7CDF709E1591CD25F831E2CFC2B2B7; creationTime=1603235063794; lastAccessedTime=1603235063803; maxInactiveInterval=300; sizeInBytes=0] DeltaSession8[id=0BA96F44AE36878CFF862FB93E2E9798; creationTime=1603235063760; lastAccessedTime=1603235063769; maxInactiveInterval=300; sizeInBytes=19866] DeltaSession8[id=0F1748A03760CDDD78E2D8AA62317FD6; creationTime=1603235064985; lastAccessedTime=1603235064994; maxInactiveInterval=300; sizeInBytes=11868] ...
Please refer to the following link on the way to register and execute the function:
https://gemfire.docs.pivotal.io/910/geode/developing/function_exec/function_execution.html