Skip to content

Commit c90c8e8

Browse files
authored
Merge pull request #114 from Cinimex-Informatica/feature/issue113_pcfcommands_error
Fixes: #113
2 parents 394b710 + 8a24800 commit c90c8e8

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

src/main/java/ru/cinimex/exporter/mq/MQPCFSubscriber.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -112,19 +112,22 @@ private void updateMetricsWithWildcards(PCFMessage[] pcfResponse) {
112112
/**
113113
* Retrieves info about all objects from input array via direct pcf commands.
114114
*
115-
* @param objectNames - input array with objects.
115+
* @param objectNames - input list with objects.
116116
*/
117-
private void updateWithDirectPCFCommand(ArrayList<String> objectNames) {
117+
private void updateWithDirectPCFCommand(List<String> objectNames) {
118118
for (String objectName : objectNames) {
119119
MQObject directObject = new MQObject(objectName, object.getType());
120120
try {
121121
PCFMessage[] directPCFResponse = agent.send(directObject.getPcfCmd());
122122
updateMetricWithoutWildcards(directPCFResponse[0], objectName);
123123
} catch (PCFException e) {
124124
//This error means, that channel has status "inactive".
125-
if (e.reasonCode == MQConstants.MQRCCF_CHL_STATUS_NOT_FOUND) {
125+
if (object.getType() == MQObject.MQType.CHANNEL && e.reasonCode == MQConstants.MQRCCF_CHL_STATUS_NOT_FOUND) {
126126
logger.warn("Channel {} is possibly inactive.", objectName);
127127
MetricsManager.updateMetric(MetricsReference.getMetricName(object.getType()), MetricsReference.getMetricValue(object.getType(), MQConstants.MQCHS_INACTIVE), queueManagerName, objectName);
128+
} else if (object.getType() == MQObject.MQType.LISTENER && e.reasonCode == MQConstants.MQRC_UNKNOWN_OBJECT_NAME) {
129+
MetricsManager.updateMetric(MetricsReference.getMetricName(object.getType()), MetricsReference.getMetricValue(object.getType(), MQConstants.MQSVC_STATUS_STOPPED), queueManagerName, objectName);
130+
logger.warn("Listener {} is possibly stopped.", objectName);
128131
} else {
129132
logger.error("Error occurred during sending PCF command: ", e);
130133
}
@@ -139,7 +142,7 @@ public void run() {
139142
try {
140143
logger.debug("Sending PCF command for object type {} with name {}...", object.getType(), object.getName());
141144
PCFMessage[] pcfResponse = agent.send(object.getPcfCmd());
142-
if (!objects.isEmpty()) {
145+
if (objects!= null && !objects.isEmpty()) {
143146
updateMetricsWithWildcards(pcfResponse);
144147
} else {
145148
for (PCFMessage response : pcfResponse) {
@@ -148,13 +151,14 @@ public void run() {
148151
}
149152
logger.debug("PCF response for object type {} with name {} was processed successfully.", object.getType(), object.getName());
150153
} catch (PCFException e) {
151-
if (e.reasonCode == MQConstants.MQRCCF_CHL_STATUS_NOT_FOUND) {
154+
if (object.getType() == MQObject.MQType.CHANNEL && e.reasonCode == MQConstants.MQRCCF_CHL_STATUS_NOT_FOUND) {
152155
logger.warn("Channel {} is possibly inactive.", object.getName());
153156
MetricsManager.updateMetric(MetricsReference.getMetricName(object.getType()), MetricsReference.getMetricValue(object.getType(), MQConstants.MQCHS_INACTIVE), queueManagerName, object.getName());
154-
}
155-
if (object.getType() == MQObject.MQType.LISTENER && e.reasonCode == MQConstants.MQRC_UNKNOWN_OBJECT_NAME) {
157+
} else if (object.getType() == MQObject.MQType.LISTENER && e.reasonCode == MQConstants.MQRC_UNKNOWN_OBJECT_NAME) {
156158
MetricsManager.updateMetric(MetricsReference.getMetricName(object.getType()), MetricsReference.getMetricValue(object.getType(), MQConstants.MQSVC_STATUS_STOPPED), queueManagerName, object.getName());
157159
logger.warn("Listener {} is possibly stopped.", object.getName());
160+
} else {
161+
logger.error("Error occurred during sending PCF command: ", e);
158162
}
159163
} catch (MQException | IOException e) {
160164
logger.error("Error occurred during sending PCF command: ", e);

0 commit comments

Comments
 (0)