Skip to content

Commit 394d33b

Browse files
authored
Add ability to select gRPC MBean version to show (#120)
* Add ability to select gRPC MBean version to show * Make some tweaks to the gRPC panel
1 parent 25493d7 commit 394d33b

File tree

8 files changed

+168
-94
lines changed

8 files changed

+168
-94
lines changed

coherence-visualvm-plugin/src/main/java/com/oracle/coherence/plugin/visualvm/CoherenceOptionsPanel.java

Lines changed: 44 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2021, 2022 Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2021, 2025 Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -105,6 +105,7 @@ void load()
105105
{
106106
GlobalPreferences preferences = GlobalPreferences.sharedInstance();
107107
m_refreshTime.setValue(preferences.getRefreshTime());
108+
m_gRPCVersion.setValue(preferences.getGrpcVersion());
108109
m_logQueryTimes.setSelected(preferences.isLogQueryTimes());
109110
m_disableMBeanCheck.setSelected(preferences.isMBeanCheckDisabled());
110111
m_restRequestTimout.setValue(preferences.getRestTimeout());
@@ -132,6 +133,7 @@ void store()
132133
preferences.setClusterSnapshotEnabled(m_enableClusterSnapshot.isSelected());
133134
preferences.setAdminFunctionsEnabled(m_adminFunctionsEnabled.isSelected());
134135
preferences.setSSLCertValidationDisabled(m_disableSSLCertValidation.isSelected());
136+
preferences.setGrpcVersion((Integer) m_gRPCVersion.getValue());
135137
}
136138

137139
/**
@@ -195,23 +197,43 @@ private void initComponents()
195197
c.insets = new Insets(3, 0, 3, 0);
196198
add(plottersUnits, c);
197199

200+
// ---- gRPC Version Label
201+
JLabel plottersLabelgRPC = new JLabel();
202+
Mnemonics.setLocalizedText(plottersLabelgRPC, getLocalText("LBL_grpc_version"));
203+
GridBagConstraints c2 = new GridBagConstraints();
204+
c2.gridx = 0;
205+
c2.gridy = 2;
206+
c2.anchor = GridBagConstraints.WEST;
207+
c2.insets = new Insets(3, 15, 3, 0);
208+
add(plottersLabelgRPC, c2);
209+
210+
m_gRPCVersion = new JSpinner();
211+
m_gRPCVersion.setToolTipText(getLocalText("TTIP_grpc_version"));
212+
m_gRPCVersion.setModel(new SpinnerNumberModel(0, 0, 1, 1));
213+
c2 = new GridBagConstraints();
214+
c2.gridx = 1;
215+
c2.gridy = 2;
216+
c2.anchor = GridBagConstraints.WEST;
217+
c2.insets = new Insets(3, 5, 3, 4);
218+
add(m_gRPCVersion, c2);
219+
198220
m_logQueryTimes = new JCheckBox();
199221
m_logQueryTimes.setToolTipText(getLocalText("TTIP_log_query_times"));
200-
addCheckBox(2, "LBL_log_query_times", m_logQueryTimes);
222+
addCheckBox(3, "LBL_log_query_times", m_logQueryTimes);
201223

202224
m_disableMBeanCheck = new JCheckBox();
203225
m_disableMBeanCheck.setToolTipText(getLocalText("TTIP_disable_mbean_check"));
204-
addCheckBox(3, "LBL_disable_mbean_check", m_disableMBeanCheck);
226+
addCheckBox(4, "LBL_disable_mbean_check", m_disableMBeanCheck);
205227

206228
// ---- REST ----
207-
addHeader(4, "LBL_rest");
229+
addHeader(5, "LBL_rest");
208230

209231
// ---- REST Request Timeout ----
210232
JLabel lblRest = new JLabel();
211233
Mnemonics.setLocalizedText(lblRest, getLocalText("LBL_rest_request_timeout"));
212234
c = new GridBagConstraints();
213235
c.gridx = 0;
214-
c.gridy = 5;
236+
c.gridy = 6;
215237
c.anchor = GridBagConstraints.WEST;
216238
c.insets = new Insets(3, 15, 3, 0);
217239
add(lblRest, c);
@@ -222,7 +244,7 @@ private void initComponents()
222244
m_restRequestTimout.setModel(new SpinnerNumberModel(30000, 1000, 99999999, 1000));
223245
c = new GridBagConstraints();
224246
c.gridx = 1;
225-
c.gridy = 5;
247+
c.gridy = 6;
226248
c.anchor = GridBagConstraints.WEST;
227249
c.insets = new Insets(3, 5, 3, 4);
228250
add(m_restRequestTimout, c);
@@ -231,37 +253,37 @@ private void initComponents()
231253
Mnemonics.setLocalizedText(requestUnits, getLocalText("LBL_millis")); // NOI18N
232254
c = new GridBagConstraints();
233255
c.gridx = 2;
234-
c.gridy = 5;
256+
c.gridy = 6;
235257
c.anchor = GridBagConstraints.WEST;
236258
c.insets = new Insets(3, 0, 3, 0);
237259
add(requestUnits, c);
238260

239261
m_enableRestDebug = new JCheckBox();
240262
m_enableRestDebug.setToolTipText(getLocalText("TTIP_rest_debug"));
241-
addCheckBox(6, "LBL_enable_rest_debug", m_enableRestDebug);
263+
addCheckBox(7, "LBL_enable_rest_debug", m_enableRestDebug);
242264

243265
m_disableSSLCertValidation = new JCheckBox();
244266
m_disableSSLCertValidation.setToolTipText(getLocalText("TTIP_ssl_disable"));
245-
addCheckBox(7, "LBL_disable_cert_validation", m_disableSSLCertValidation);
267+
addCheckBox(8, "LBL_disable_cert_validation", m_disableSSLCertValidation);
246268

247269
// ---- Other / Experimental ----
248-
addHeader(8, "LBL_other");
270+
addHeader(9, "LBL_other");
249271

250272
m_enablePersistenceList = new JCheckBox();
251273
m_enablePersistenceList.setToolTipText(getLocalText("TTIP_persistence_list"));
252-
addCheckBox(9, "LBL_enable_persistence_list", m_enablePersistenceList);
274+
addCheckBox(10, "LBL_enable_persistence_list", m_enablePersistenceList);
253275

254276
m_enableZoom = new JCheckBox();
255277
m_enableZoom.setToolTipText(getLocalText("TTIP_zoom_enabled"));
256-
addCheckBox(10, "LBL_enable_zoom", m_enableZoom);
278+
addCheckBox(11, "LBL_enable_zoom", m_enableZoom);
257279

258280
m_enableClusterSnapshot = new JCheckBox();
259281
m_enableClusterSnapshot.setToolTipText(getLocalText("TTIP_enable_cluster_snapshot"));
260-
addCheckBox(11, "LBL_enable_cluster_snapshot", m_enableClusterSnapshot);
282+
addCheckBox(12, "LBL_enable_cluster_snapshot", m_enableClusterSnapshot);
261283

262284
m_adminFunctionsEnabled = new JCheckBox();
263285
m_adminFunctionsEnabled.setToolTipText(getLocalText("TTIP_enable_cluster_head_dump"));
264-
addCheckBox(12, "LBL_enable_admin_functions", m_adminFunctionsEnabled);
286+
addCheckBox(13, "LBL_enable_admin_functions", m_adminFunctionsEnabled);
265287

266288
m_btnAnalyzeUnavailableTime = new JButton(Localization.getLocalText("LBL_analyze_log_file"));
267289
m_btnAnalyzeUnavailableTime.setMnemonic(KeyEvent.VK_A);
@@ -286,7 +308,7 @@ private void initComponents()
286308

287309
c = new GridBagConstraints();
288310
c.gridx = 0;
289-
c.gridy = 13;
311+
c.gridy = 14;
290312
c.anchor = GridBagConstraints.WEST;
291313
c.insets = new Insets(3, 15, 3, 0);
292314
add(m_btnAnalyzeUnavailableTime, c);
@@ -304,7 +326,7 @@ private void initComponents()
304326
// filler
305327
c = new GridBagConstraints();
306328
c.gridx = 0;
307-
c.gridy = 16;
329+
c.gridy = 17;
308330
c.weightx = 1;
309331
c.weighty = 1;
310332
c.anchor = GridBagConstraints.NORTHWEST;
@@ -364,6 +386,7 @@ private void addHeader(int y, String sLabel)
364386
private void startTrackingChanges()
365387
{
366388
m_refreshTime.getModel().addChangeListener(f_changeListener);
389+
m_gRPCVersion.getModel().addChangeListener(f_changeListener);
367390
m_logQueryTimes.getModel().addChangeListener(f_changeListener);
368391
m_disableMBeanCheck.getModel().addChangeListener(f_changeListener);
369392
m_enableRestDebug.getModel().addChangeListener(f_changeListener);
@@ -695,6 +718,11 @@ public String toString()
695718
*/
696719
private JSpinner m_refreshTime;
697720

721+
/**
722+
* gRPC version spinner..
723+
*/
724+
private JSpinner m_gRPCVersion;
725+
698726
/**
699727
* Reqest request time spinner.
700728
*/

coherence-visualvm-plugin/src/main/java/com/oracle/coherence/plugin/visualvm/GlobalPreferences.java

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2021, 2022 Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2021, 2025 Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -37,6 +37,7 @@
3737
import static com.oracle.coherence.plugin.visualvm.VisualVMModel.PROP_LOG_QUERY_TIMES;
3838
import static com.oracle.coherence.plugin.visualvm.VisualVMModel.PROP_PERSISTENCE_LIST_ENABLED;
3939
import static com.oracle.coherence.plugin.visualvm.VisualVMModel.PROP_REFRESH_TIME;
40+
import static com.oracle.coherence.plugin.visualvm.VisualVMModel.PROP_GRPC_VERSION;
4041
import static com.oracle.coherence.plugin.visualvm.VisualVMModel.PROP_REPORTER_DISABLED;
4142
import static com.oracle.coherence.plugin.visualvm.VisualVMModel.PROP_REST_DEBUG;
4243
import static com.oracle.coherence.plugin.visualvm.VisualVMModel.PROP_REST_TIMEOUT;
@@ -129,6 +130,16 @@ private GlobalPreferences()
129130
getRestTimeout();
130131
}
131132

133+
sValue = System.getProperty(PROP_GRPC_VERSION);
134+
if (sValue != null)
135+
{
136+
setGrpcVersion(Integer.parseInt(sValue));
137+
}
138+
else
139+
{
140+
getGrpcVersion();
141+
}
142+
132143
sValue = System.getProperty(PROP_REST_DEBUG);
133144
if (sValue != null)
134145
{
@@ -198,6 +209,26 @@ public void setRefreshTime(int refreshTime)
198209
setIntegerProperty(REFRESH_TIME, refreshTime);
199210
}
200211

212+
/**
213+
* Set the value for gRPC Version.
214+
*
215+
* @param grpcVersion the value for grpcVersion
216+
*/
217+
public void setGrpcVersion(int grpcVersion)
218+
{
219+
setIntegerProperty(GRPC_VERSION, grpcVersion);
220+
}
221+
222+
/**
223+
* Returns the value for refresh time or the default if it doesn't exist.
224+
*
225+
* @return the value for refresh time
226+
*/
227+
public int getGrpcVersion()
228+
{
229+
return getIntegerProperty(GRPC_VERSION, Integer.parseInt(GRPC_VERSION_DEFAULT));
230+
}
231+
201232
/**
202233
* Indicates if log query times is set.
203234
*
@@ -510,6 +541,11 @@ private void setBooleanProperty(String sProperty, boolean fValue)
510541
*/
511542
private static final String REFRESH_TIME_DEFAULT = "30";
512543

544+
/**
545+
* Default for grpc version.
546+
*/
547+
private static final String GRPC_VERSION_DEFAULT = "1";
548+
513549
/**
514550
* Preference key for log query times.
515551
*/
@@ -565,6 +601,11 @@ private void setBooleanProperty(String sProperty, boolean fValue)
565601
*/
566602
private static final String PERSISTENCE_LIST_ENABLED = "persistenceListEnabled";
567603

604+
/**
605+
* Preference key for gRPC Version.
606+
*/
607+
private static final String GRPC_VERSION = "grpcVersion";
608+
568609
/**
569610
* Default for persistence list enabled.
570611
*/

coherence-visualvm-plugin/src/main/java/com/oracle/coherence/plugin/visualvm/VisualVMModel.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2020, 2024 Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2020, 2025 Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -1601,10 +1601,11 @@ public String[] getMetadata()
16011601
*/
16021602
private static final String[] GRPC_PROXY_LABELS = new String[]
16031603
{
1604-
Localization.getLocalText(LBL_NODE_ID), Localization.getLocalText("LBL_successful_requests"),
1605-
Localization.getLocalText("LBL_error_requests"), Localization.getLocalText("LBL_responses_sent"),
1606-
Localization.getLocalText("LBL_messages_received"), Localization.getLocalText("LBL_request_duration_mean"),
1607-
Localization.getLocalText("LBL_message_duration_mean")
1604+
Localization.getLocalText(LBL_NODE_ID), Localization.getLocalText("LBL_responses_sent"),
1605+
Localization.getLocalText("LBL_messages_received"), Localization.getLocalText("LBL_error_requests"),
1606+
Localization.getLocalText("LBL_request_duration_mean"), Localization.getLocalText("LBL_message_duration_mean"),
1607+
Localization.getLocalText("LBL_message_duration_max"), Localization.getLocalText("LBL_task_active"),
1608+
Localization.getLocalText("LBL_task_backlog")
16081609
};
16091610

16101611
/**
@@ -1768,6 +1769,11 @@ public String[] getMetadata()
17681769
*/
17691770
public static final String PROP_REPORTER_DISABLED = "coherence.plugin.visualvm.reporter.disabled";
17701771

1772+
/**
1773+
* Property to set the gRPC Version to show.
1774+
*/
1775+
public static final String PROP_GRPC_VERSION = "coherence.plugin.visualvm.grpc.version";
1776+
17711777
/**
17721778
* Property to enable dropdown list of snapshots when performing snapshot operations.
17731779
*/

coherence-visualvm-plugin/src/main/java/com/oracle/coherence/plugin/visualvm/panel/CoherenceClusterSnapshotPanel.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -629,12 +629,14 @@ private String grpcOverview()
629629
{
630630
sb.append("<tr>")
631631
.append(td(getMemoryFormat(entry.getValue().getColumn(GrpcProxyData.NODE_ID).toString())))
632-
.append(td(getMemoryFormat(entry.getValue().getColumn(GrpcProxyData.SUCCESSFUL_REQUEST_COUNT).toString())))
633-
.append(td(getMemoryFormat(entry.getValue().getColumn(GrpcProxyData.ERROR_REQUEST_COUNT).toString())))
634632
.append(td(getMemoryFormat(entry.getValue().getColumn(GrpcProxyData.RESPONSES_SENT_COUNT).toString())))
635633
.append(td(getMemoryFormat(entry.getValue().getColumn(GrpcProxyData.MESSAGES_RECEIVED_COUNT).toString())))
634+
.append(td(getMemoryFormat(entry.getValue().getColumn(GrpcProxyData.ERROR_REQUEST_COUNT).toString())))
636635
.append(td(getLatencyValue(entry.getValue().getColumn(GrpcProxyData.REQUEST_DURATION_MEAN).toString())))
637636
.append(td(getLatencyValue(entry.getValue().getColumn(GrpcProxyData.MESSAGE_DURATION_MEAN).toString())))
637+
.append(td(getLatencyValue(entry.getValue().getColumn(GrpcProxyData.MESSAGE_DURATION_MAX).toString())))
638+
.append(td(getLatencyValue(entry.getValue().getColumn(GrpcProxyData.TASK_ACTIVE_MILLIS).toString())))
639+
.append(td(getLatencyValue(entry.getValue().getColumn(GrpcProxyData.TASK_BACKLOG).toString())))
638640
.append("</tr>");
639641
}
640642

coherence-visualvm-plugin/src/main/java/com/oracle/coherence/plugin/visualvm/panel/CoherenceGrpcProxyPanel.java

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
import java.awt.FlowLayout;
3131
import java.util.List;
3232
import java.util.Map.Entry;
33+
34+
import com.oracle.coherence.plugin.visualvm.GlobalPreferences;
3335
import com.oracle.coherence.plugin.visualvm.VisualVMModel;
3436
import com.oracle.coherence.plugin.visualvm.helper.GraphHelper;
3537
import com.oracle.coherence.plugin.visualvm.helper.RenderHelper;
@@ -87,7 +89,11 @@ public CoherenceGrpcProxyPanel(VisualVMModel model)
8789
f_txtTotalRespSent = getTextField(5, JTextField.RIGHT);
8890
pnlHeader.add(getLocalizedLabel("LBL_total_grpc_resp_sent", f_txtTotalRespSent));
8991
pnlHeader.add(f_txtTotalRespSent);
90-
92+
93+
f_txtGrpcProxyVersion = getTextField(5, JTextField.RIGHT);
94+
pnlHeader.add(getLocalizedLabel("LBL_grpc_version2", f_txtGrpcProxyVersion));
95+
pnlHeader.add(f_txtGrpcProxyVersion);
96+
9197
// create the table
9298
f_tmodel = new GrpcProxyTableModel(VisualVMModel.DataType.GRPC_PROXY.getMetadata());
9399

@@ -97,12 +103,14 @@ public CoherenceGrpcProxyPanel(VisualVMModel model)
97103

98104
// define renderers for the columns
99105
RenderHelper.setColumnRenderer(f_table, GrpcProxyData.NODE_ID, new RenderHelper.IntegerRenderer());
100-
RenderHelper.setColumnRenderer(f_table, GrpcProxyData.SUCCESSFUL_REQUEST_COUNT, new RenderHelper.IntegerRenderer());
101-
RenderHelper.setColumnRenderer(f_table, GrpcProxyData.ERROR_REQUEST_COUNT, new RenderHelper.IntegerRenderer());
102106
RenderHelper.setColumnRenderer(f_table, GrpcProxyData.RESPONSES_SENT_COUNT, new RenderHelper.IntegerRenderer());
103107
RenderHelper.setColumnRenderer(f_table, GrpcProxyData.MESSAGES_RECEIVED_COUNT, new RenderHelper.IntegerRenderer());
108+
RenderHelper.setColumnRenderer(f_table, GrpcProxyData.ERROR_REQUEST_COUNT, new RenderHelper.IntegerRenderer());
104109
RenderHelper.setColumnRenderer(f_table, GrpcProxyData.REQUEST_DURATION_MEAN, new RenderHelper.DecimalRenderer());
105110
RenderHelper.setColumnRenderer(f_table, GrpcProxyData.MESSAGE_DURATION_MEAN, new RenderHelper.DecimalRenderer());
111+
RenderHelper.setColumnRenderer(f_table, GrpcProxyData.MESSAGE_DURATION_MAX, new RenderHelper.DecimalRenderer());
112+
RenderHelper.setColumnRenderer(f_table, GrpcProxyData.TASK_ACTIVE_MILLIS, new RenderHelper.IntegerRenderer());
113+
RenderHelper.setColumnRenderer(f_table, GrpcProxyData.TASK_BACKLOG, new RenderHelper.IntegerRenderer());
106114
RenderHelper.setHeaderAlignment(f_table, SwingConstants.CENTER);
107115

108116
// Add some space
@@ -148,6 +156,8 @@ public void updateGUI()
148156
long nRecCount = 0L;
149157
int cCount = 0;
150158

159+
f_txtGrpcProxyVersion.setText("V" + Integer.toString(GlobalPreferences.sharedInstance().getGrpcVersion()));
160+
151161
if (m_GrpcData != null)
152162
{
153163
f_txtTotalGrpcProxyServers.setText(String.format("%5d", m_GrpcData.size()));
@@ -233,6 +243,11 @@ public void updateData()
233243
*/
234244
private final JTextField f_txtTotalRespSent;
235245

246+
/**
247+
* gRPC Proxy version showing.
248+
*/
249+
private final JTextField f_txtGrpcProxyVersion;
250+
236251
/**
237252
* The graph of gRPC Proxy Messages.
238253
*/

0 commit comments

Comments
 (0)