From 0ab3b3d2d5ef029a9fc3ba9ee7e6215b6630df25 Mon Sep 17 00:00:00 2001 From: Michal Polkorab Date: Wed, 27 Jan 2016 19:41:07 +0100 Subject: [PATCH] Bug 4473 - Concentrate multipart-reply (table features) exception logs - prevents log from flooding by unsupported structures in table features - OVS 2.4 related issue Change-Id: I07ca50074b0ac47047e6067ee22b1b3ec5414bc5 Signed-off-by: Michal Polkorab --- .../protocol/impl/util/ListDeserializer.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/ListDeserializer.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/ListDeserializer.java index f5d0c2ba..905eefd7 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/ListDeserializer.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/ListDeserializer.java @@ -72,14 +72,20 @@ public final class ListDeserializer { if (input.readableBytes() > 0) { items = new ArrayList<>(); int startIndex = input.readerIndex(); + boolean exceptionLogged = false; while ((input.readerIndex() - startIndex) < length){ HeaderDeserializer deserializer; MessageCodeKey key = keyMaker.make(input); try { deserializer = registry.getDeserializer(key); } catch (ClassCastException | IllegalStateException e) { - LOG.warn("Problem during reading table feature property. Skipping unknown feature property: {}", - key, e); + if (!exceptionLogged) { + LOG.warn("Problem during reading table feature property. Skipping unknown feature property: {}", + key, e); + LOG.warn("This exception is logged only once for each multipart reply (table features) to " + + "prevent log flooding. There might be more of table features related exceptions."); + exceptionLogged = true; + } input.skipBytes(2 * EncodeConstants.SIZE_OF_SHORT_IN_BYTES); continue; } -- 2.36.6