diff --git a/jpos/src/main/java/org/jpos/iso/BaseChannel.java b/jpos/src/main/java/org/jpos/iso/BaseChannel.java index bb0cab0774..761e46841a 100644 --- a/jpos/src/main/java/org/jpos/iso/BaseChannel.java +++ b/jpos/src/main/java/org/jpos/iso/BaseChannel.java @@ -629,10 +629,10 @@ protected int getHeaderLength() { } protected int getHeaderLength(byte[] b) { return 0; } - protected int getHeaderLength(ISOMsg m) { + protected int getHeaderLength(ISOMsg m) { return !overrideHeader && m.getHeader() != null ? m.getHeader().length : getHeaderLength(); - } + } protected byte[] streamReceive() throws IOException { return new byte[0]; @@ -700,10 +700,10 @@ public void send (ISOMsg m) sendMessageTrailer(m, b); serverOut.flush (); cnt[TX]++; - incrementMsgOutCounter(m); } finally { serverOutLock.unlock(); } + incrementMsgOutCounter(m); } else { disconnect(); } @@ -796,7 +796,7 @@ protected ISOMsg createMsg () { protected ISOMsg createISOMsg () { return packager.createISOMsg (); } - + /** * Reads in a message header. * @@ -822,8 +822,8 @@ public ISOMsg receive() throws IOException, ISOException { byte[] b=null; byte[] header=null; LogEvent evt = new LogEvent (this, "receive").withTraceId(getSocketUUID()); - ISOMsg m = createMsg (); // call createMsg instead of createISOMsg for - // backward compatibility + ISOMsg m = createMsg (); // call createMsg instead of createISOMsg for backward compatibility + m.setSource (this); try { if (!isConnected()) diff --git a/jpos/src/main/java/org/jpos/metrics/MeterFactory.java b/jpos/src/main/java/org/jpos/metrics/MeterFactory.java index 72bdf9ed79..39df397cbe 100644 --- a/jpos/src/main/java/org/jpos/metrics/MeterFactory.java +++ b/jpos/src/main/java/org/jpos/metrics/MeterFactory.java @@ -52,8 +52,12 @@ public static Counter counter(MeterRegistry registry, MeterInfo meterInfo, Tags () -> Counter.builder(meterInfo.id()).tags(meterInfo.add(tags)).description(meterInfo.description()).register(registry)); } + public static Counter updateCounter(MeterRegistry registry, String meterName, Tags tags, String description) { + return Counter.builder(meterName).tags(tags).description(description).register(registry); + } + public static Counter updateCounter(MeterRegistry registry, MeterInfo meterInfo, Tags tags) { - return Counter.builder(meterInfo.id()).tags(meterInfo.add(tags)).description(meterInfo.description()).register(registry); + return updateCounter(registry, meterInfo.id(), meterInfo.add(tags), meterInfo.description()); } public static Gauge gauge(MeterRegistry registry, MeterInfo meterInfo, Tags tags, String unit, Supplier n) { @@ -71,8 +75,8 @@ public static void remove (MeterRegistry registry, Meter... meters) { @SuppressWarnings("unchecked") private static T createMeter(MeterRegistry registry, MeterInfo meterInfo, Tags tags, Callable creator) { + metersLock.lock(); try { - metersLock.lock(); T meter = (T) Search.in(registry).name(meterInfo.id()).tags(meterInfo.add(tags)).meter(); if (meter == null) { try { diff --git a/jpos/src/main/java/org/jpos/q2/Q2.java b/jpos/src/main/java/org/jpos/q2/Q2.java index 03d266f54e..27de82f94d 100644 --- a/jpos/src/main/java/org/jpos/q2/Q2.java +++ b/jpos/src/main/java/org/jpos/q2/Q2.java @@ -1350,9 +1350,9 @@ public DistributionStatisticConfig configure(Meter.Id id, DistributionStatisticC new JvmGcMetrics().bindTo(meterRegistry); new ProcessorMetrics().bindTo(meterRegistry); new JvmThreadMetrics().bindTo(meterRegistry); - meterRegistry.add (prometheusRegistry); - + prometheusRegistry.throwExceptionOnRegistrationFailure(); + meterRegistry.add (prometheusRegistry); } public String[] environmentArgs (String[] args) { diff --git a/jpos/src/main/java/org/jpos/q2/iso/QServer.java b/jpos/src/main/java/org/jpos/q2/iso/QServer.java index 7ea682ddc9..e08eb2425a 100644 --- a/jpos/src/main/java/org/jpos/q2/iso/QServer.java +++ b/jpos/src/main/java/org/jpos/q2/iso/QServer.java @@ -107,7 +107,6 @@ private void initServer () } server = new ISOServer (port, (ServerChannel) channel, maxSessions); - initMeters(); // meters need 'server' to be initialized server.setLogger (log.getLogger(), getName() + ".server"); server.setName (getName ()); if (socketFactoryString != null) { @@ -122,6 +121,7 @@ private void initServer () addListeners ();// ISORequestListener addISOServerConnectionListeners(); NameRegistrar.register (getName(), this); + initMeters(); // meters need 'server' to be initialized Executors.newVirtualThreadPerTaskExecutor().submit(server); } private void initIn() {