Jonathan Hart
Committed by Gerrit Code Review

Cleaned up NewAdaptiveFlowStatsCollector logs to prevent excessive

object creation and string concatenation.

Dropped per-flow-stats-request logs to TRACE level.

Change-Id: I2dd55030bd1faa00d6fbfef74c7da1debb7f1d7d
...@@ -26,11 +26,27 @@ public final class FlowId extends Identifier<Long> { ...@@ -26,11 +26,27 @@ public final class FlowId extends Identifier<Long> {
26 super(id); 26 super(id);
27 } 27 }
28 28
29 + /**
30 + * Creates a flow ID from a long value.
31 + *
32 + * @param id long value
33 + * @return flow ID
34 + */
29 public static FlowId valueOf(long id) { 35 public static FlowId valueOf(long id) {
30 return new FlowId(id); 36 return new FlowId(id);
31 } 37 }
32 38
39 + /**
40 + * Gets the flow ID value.
41 + *
42 + * @return flow ID value as long
43 + */
33 public long value() { 44 public long value() {
34 return this.identifier; 45 return this.identifier;
35 } 46 }
47 +
48 + @Override
49 + public String toString() {
50 + return Long.toHexString(identifier);
51 + }
36 } 52 }
......
...@@ -58,6 +58,22 @@ import static org.slf4j.LoggerFactory.getLogger; ...@@ -58,6 +58,22 @@ import static org.slf4j.LoggerFactory.getLogger;
58 public class NewAdaptiveFlowStatsCollector { 58 public class NewAdaptiveFlowStatsCollector {
59 private final Logger log = getLogger(getClass()); 59 private final Logger log = getLogger(getClass());
60 60
61 + private static final String CHECK_AND_MOVE_LOG =
62 + "checkAndMoveLiveFlowInternal: flowId={}, state={}, afterLiveType={}"
63 + + ", liveTime={}, life={}, bytes={}, packets={}, fromLastSeen={}"
64 + + ", priority={}, selector={}, treatment={} dpid={}";
65 +
66 + private static final String CHECK_AND_MOVE_COUNT_LOG =
67 + "checkAndMoveLiveFlowAll: Total Flow_Count={}, add-remove_Count={}"
68 + + ", IMMEDIATE_FLOW_Count={}, SHORT_FLOW_Count={}"
69 + + ", MID_FLOW_Count={}, LONG_FLOW_Count={}, add_Count={}"
70 + + ", addWithSetFlowLiveType_Count={}, remove_Count={}, dpid={}";
71 +
72 + private static final String ADD_INVALID_LOG =
73 + "addOrUpdateFlows: invalid flow update! The new life is SMALLER than the previous one"
74 + + ", new flowId={}, old flowId={}, new bytes={}, old bytes={}"
75 + + ", new life={}, old life={}, new lastSeen={}, old lastSeen={}";
76 +
61 private final DriverService driverService; 77 private final DriverService driverService;
62 private final OpenFlowSwitch sw; 78 private final OpenFlowSwitch sw;
63 79
...@@ -178,7 +194,7 @@ public class NewAdaptiveFlowStatsCollector { ...@@ -178,7 +194,7 @@ public class NewAdaptiveFlowStatsCollector {
178 longPollInterval, 194 longPollInterval,
179 TimeUnit.SECONDS); 195 TimeUnit.SECONDS);
180 196
181 - log.debug("calAndPollInterval=" + calAndPollInterval + "is adjusted"); 197 + log.debug("calAndPollInterval={} is adjusted", calAndPollInterval);
182 } 198 }
183 199
184 private class CalAndShortFlowsTask implements Runnable { 200 private class CalAndShortFlowsTask implements Runnable {
...@@ -224,7 +240,8 @@ public class NewAdaptiveFlowStatsCollector { ...@@ -224,7 +240,8 @@ public class NewAdaptiveFlowStatsCollector {
224 // After processing the reply of this request message, 240 // After processing the reply of this request message,
225 // this must be set to NO_FLOW_MISSING_XID(-1) by provider 241 // this must be set to NO_FLOW_MISSING_XID(-1) by provider
226 setFlowMissingXid(request.getXid()); 242 setFlowMissingXid(request.getXid());
227 - log.debug("ofFlowStatsRequestAllSend,Request={},for {}", request.toString(), sw.getStringId()); 243 + log.debug("ofFlowStatsRequestAllSend: request={}, dpid={}",
244 + request.toString(), sw.getStringId());
228 245
229 sw.sendMsg(request); 246 sw.sendMsg(request);
230 } 247 }
...@@ -321,8 +338,7 @@ public class NewAdaptiveFlowStatsCollector { ...@@ -321,8 +338,7 @@ public class NewAdaptiveFlowStatsCollector {
321 } 338 }
322 339
323 /** 340 /**
324 - * start adaptive flow statistic collection. 341 + * Starts adaptive flow statistic collection.
325 - *
326 */ 342 */
327 public synchronized void start() { 343 public synchronized void start() {
328 log.debug("Starting AdaptiveStats collection thread for {}", sw.getStringId()); 344 log.debug("Starting AdaptiveStats collection thread for {}", sw.getStringId());
...@@ -358,8 +374,7 @@ public class NewAdaptiveFlowStatsCollector { ...@@ -358,8 +374,7 @@ public class NewAdaptiveFlowStatsCollector {
358 } 374 }
359 375
360 /** 376 /**
361 - * stop adaptive flow statistic collection. 377 + * Stops adaptive flow statistic collection.
362 - *
363 */ 378 */
364 public synchronized void stop() { 379 public synchronized void stop() {
365 log.debug("Stopping AdaptiveStats collection thread for {}", sw.getStringId()); 380 log.debug("Stopping AdaptiveStats collection thread for {}", sw.getStringId());
...@@ -381,10 +396,9 @@ public class NewAdaptiveFlowStatsCollector { ...@@ -381,10 +396,9 @@ public class NewAdaptiveFlowStatsCollector {
381 } 396 }
382 397
383 /** 398 /**
384 - * add typed flow entry from flow rule into the internal flow table. 399 + * Adds typed flow entry from flow rule into the internal flow table.
385 * 400 *
386 * @param flowRules the flow rules 401 * @param flowRules the flow rules
387 - *
388 */ 402 */
389 public synchronized void addWithFlowRule(FlowRule... flowRules) { 403 public synchronized void addWithFlowRule(FlowRule... flowRules) {
390 for (FlowRule fr : flowRules) { 404 for (FlowRule fr : flowRules) {
...@@ -399,10 +413,9 @@ public class NewAdaptiveFlowStatsCollector { ...@@ -399,10 +413,9 @@ public class NewAdaptiveFlowStatsCollector {
399 } 413 }
400 414
401 /** 415 /**
402 - * add or update typed flow entry from flow entry into the internal flow table. 416 + * Adds or updates typed flow entry from flow entry into the internal flow table.
403 * 417 *
404 * @param flowEntries the flow entries 418 * @param flowEntries the flow entries
405 - *
406 */ 419 */
407 public synchronized void addOrUpdateFlows(FlowEntry... flowEntries) { 420 public synchronized void addOrUpdateFlows(FlowEntry... flowEntries) {
408 for (FlowEntry fe : flowEntries) { 421 for (FlowEntry fe : flowEntries) {
...@@ -413,23 +426,21 @@ public class NewAdaptiveFlowStatsCollector { ...@@ -413,23 +426,21 @@ public class NewAdaptiveFlowStatsCollector {
413 // duplicated flow entry is collected!, just skip 426 // duplicated flow entry is collected!, just skip
414 if (fe.bytes() == stored.bytes() && fe.packets() == stored.packets() 427 if (fe.bytes() == stored.bytes() && fe.packets() == stored.packets()
415 && fe.life() == stored.life()) { 428 && fe.life() == stored.life()) {
416 - log.debug("addOrUpdateFlows:, FlowId=" + Long.toHexString(fe.id().value()) 429 + if (log.isTraceEnabled()) {
417 - + ",is DUPLICATED stats collection, just skip." 430 + log.trace("addOrUpdateFlows({}): flowId={},is DUPLICATED stats collection, just skip.",
418 - + " AdaptiveStats collection thread for {}", 431 + sw.getStringId(), fe.id());
419 - sw.getStringId()); 432 + }
420 433
421 //FIXME modification of "stored" flow entry outside of store 434 //FIXME modification of "stored" flow entry outside of store
422 stored.setLastSeen(); 435 stored.setLastSeen();
423 continue; 436 continue;
424 } else if (fe.life() < stored.life()) { 437 } else if (fe.life() < stored.life()) {
425 // Invalid updates the stats values, i.e., bytes, packets, durations ... 438 // Invalid updates the stats values, i.e., bytes, packets, durations ...
426 - log.debug("addOrUpdateFlows():" + 439 + if (log.isDebugEnabled()) {
427 - " Invalid Flow Update! The new life is SMALLER than the previous one, jus skip." + 440 + log.debug(ADD_INVALID_LOG, fe.id(), stored.id(), fe.bytes(),
428 - " new flowId=" + Long.toHexString(fe.id().value()) + 441 + stored.bytes(), fe.life(), stored.life(),
429 - ", old flowId=" + Long.toHexString(stored.id().value()) + 442 + fe.lastSeen(), stored.lastSeen());
430 - ", new bytes=" + fe.bytes() + ", old bytes=" + stored.bytes() + 443 + }
431 - ", new life=" + fe.life() + ", old life=" + stored.life() +
432 - ", new lastSeen=" + fe.lastSeen() + ", old lastSeen=" + stored.lastSeen());
433 // go next 444 // go next
434 //FIXME modification of "stored" flow entry outside of store 445 //FIXME modification of "stored" flow entry outside of store
435 stored.setLastSeen(); 446 stored.setLastSeen();
...@@ -459,10 +470,9 @@ public class NewAdaptiveFlowStatsCollector { ...@@ -459,10 +470,9 @@ public class NewAdaptiveFlowStatsCollector {
459 } 470 }
460 471
461 /** 472 /**
462 - * remove typed flow entry from the internal flow table. 473 + * Removes typed flow entry from the internal flow table.
463 * 474 *
464 * @param flowRules the flow entries 475 * @param flowRules the flow entries
465 - *
466 */ 476 */
467 public synchronized void removeFlows(FlowRule... flowRules) { 477 public synchronized void removeFlows(FlowRule... flowRules) {
468 for (FlowRule rule : flowRules) { 478 for (FlowRule rule : flowRules) {
...@@ -472,10 +482,9 @@ public class NewAdaptiveFlowStatsCollector { ...@@ -472,10 +482,9 @@ public class NewAdaptiveFlowStatsCollector {
472 482
473 // same as removeFlows() function 483 // same as removeFlows() function
474 /** 484 /**
475 - * remove typed flow entry from the internal flow table. 485 + * Removes typed flow entry from the internal flow table.
476 * 486 *
477 * @param flowRules the flow entries 487 * @param flowRules the flow entries
478 - *
479 */ 488 */
480 public void flowRemoved(FlowRule... flowRules) { 489 public void flowRemoved(FlowRule... flowRules) {
481 removeFlows(flowRules); 490 removeFlows(flowRules);
...@@ -483,19 +492,16 @@ public class NewAdaptiveFlowStatsCollector { ...@@ -483,19 +492,16 @@ public class NewAdaptiveFlowStatsCollector {
483 492
484 // same as addOrUpdateFlows() function 493 // same as addOrUpdateFlows() function
485 /** 494 /**
486 - * add or update typed flow entry from flow entry into the internal flow table. 495 + * Adds or updates typed flow entry from flow entry into the internal flow table.
487 * 496 *
488 * @param flowEntries the flow entry list 497 * @param flowEntries the flow entry list
489 - *
490 */ 498 */
491 public void pushFlowMetrics(List<FlowEntry> flowEntries) { 499 public void pushFlowMetrics(List<FlowEntry> flowEntries) {
492 - flowEntries.forEach(fe -> { 500 + flowEntries.forEach(this::addOrUpdateFlows);
493 - addOrUpdateFlows(fe);
494 - });
495 } 501 }
496 502
497 /** 503 /**
498 - * returns flowMissingXid that indicates the execution of flowMissing process or not(NO_FLOW_MISSING_XID(-1)). 504 + * Returns flowMissingXid that indicates the execution of flowMissing process or not(NO_FLOW_MISSING_XID(-1)).
499 * 505 *
500 * @return xid of missing flow 506 * @return xid of missing flow
501 */ 507 */
...@@ -504,10 +510,9 @@ public class NewAdaptiveFlowStatsCollector { ...@@ -504,10 +510,9 @@ public class NewAdaptiveFlowStatsCollector {
504 } 510 }
505 511
506 /** 512 /**
507 - * set flowMissingXid, namely OFFlowStatsRequest match any ALL message Id. 513 + * Sets flowMissingXid, namely OFFlowStatsRequest match any ALL message Id.
508 * 514 *
509 * @param flowMissingXid the OFFlowStatsRequest message Id 515 * @param flowMissingXid the OFFlowStatsRequest message Id
510 - *
511 */ 516 */
512 public void setFlowMissingXid(long flowMissingXid) { 517 public void setFlowMissingXid(long flowMissingXid) {
513 this.flowMissingXid = flowMissingXid; 518 this.flowMissingXid = flowMissingXid;
...@@ -531,8 +536,7 @@ public class NewAdaptiveFlowStatsCollector { ...@@ -531,8 +536,7 @@ public class NewAdaptiveFlowStatsCollector {
531 private long removeCount = 0; 536 private long removeCount = 0;
532 537
533 /** 538 /**
534 - * Resets all count values with zero. 539 + * Resets all count values to zero.
535 - *
536 */ 540 */
537 public void resetAllCount() { 541 public void resetAllCount() {
538 addCount = 0; 542 addCount = 0;
...@@ -565,8 +569,7 @@ public class NewAdaptiveFlowStatsCollector { ...@@ -565,8 +569,7 @@ public class NewAdaptiveFlowStatsCollector {
565 /** 569 /**
566 * Gets the number of flow entry in flow table. 570 * Gets the number of flow entry in flow table.
567 * 571 *
568 - * @return the number of flow entry. 572 + * @return the number of flow entry
569 - *
570 */ 573 */
571 public long getFlowCount() { 574 public long getFlowCount() {
572 return flowEntries.values().stream().mapToLong(Set::size).sum(); 575 return flowEntries.values().stream().mapToLong(Set::size).sum();
...@@ -576,8 +579,7 @@ public class NewAdaptiveFlowStatsCollector { ...@@ -576,8 +579,7 @@ public class NewAdaptiveFlowStatsCollector {
576 * Gets the number of flow entry in flow table. 579 * Gets the number of flow entry in flow table.
577 * 580 *
578 * @param rule the flow rule 581 * @param rule the flow rule
579 - * @return the typed flow entry. 582 + * @return the typed flow entry
580 - *
581 */ 583 */
582 public TypedStoredFlowEntry getFlowEntry(FlowRule rule) { 584 public TypedStoredFlowEntry getFlowEntry(FlowRule rule) {
583 checkNotNull(rule); 585 checkNotNull(rule);
...@@ -588,8 +590,7 @@ public class NewAdaptiveFlowStatsCollector { ...@@ -588,8 +590,7 @@ public class NewAdaptiveFlowStatsCollector {
588 /** 590 /**
589 * Gets the all typed flow entries in flow table. 591 * Gets the all typed flow entries in flow table.
590 * 592 *
591 - * @return the set of typed flow entry. 593 + * @return the set of typed flow entry
592 - *
593 */ 594 */
594 public Set<TypedStoredFlowEntry> getFlowEntries() { 595 public Set<TypedStoredFlowEntry> getFlowEntries() {
595 return getFlowEntriesInternal(); 596 return getFlowEntriesInternal();
...@@ -598,38 +599,34 @@ public class NewAdaptiveFlowStatsCollector { ...@@ -598,38 +599,34 @@ public class NewAdaptiveFlowStatsCollector {
598 /** 599 /**
599 * Gets the short typed flow entries in flow table. 600 * Gets the short typed flow entries in flow table.
600 * 601 *
601 - * @return the set of typed flow entry. 602 + * @return the set of typed flow entry
602 - *
603 */ 603 */
604 public Set<StoredFlowEntry> getShortFlows() { 604 public Set<StoredFlowEntry> getShortFlows() {
605 - return ImmutableSet.copyOf(shortFlows); //Sets.newHashSet(shortFlows); 605 + return ImmutableSet.copyOf(shortFlows);
606 } 606 }
607 607
608 /** 608 /**
609 * Gets the mid typed flow entries in flow table. 609 * Gets the mid typed flow entries in flow table.
610 * 610 *
611 - * @return the set of typed flow entry. 611 + * @return the set of typed flow entry
612 - *
613 */ 612 */
614 public Set<StoredFlowEntry> getMidFlows() { 613 public Set<StoredFlowEntry> getMidFlows() {
615 - return ImmutableSet.copyOf(midFlows); //Sets.newHashSet(midFlows); 614 + return ImmutableSet.copyOf(midFlows);
616 } 615 }
617 616
618 /** 617 /**
619 * Gets the long typed flow entries in flow table. 618 * Gets the long typed flow entries in flow table.
620 * 619 *
621 - * @return the set of typed flow entry. 620 + * @return the set of typed flow entry
622 - *
623 */ 621 */
624 public Set<StoredFlowEntry> getLongFlows() { 622 public Set<StoredFlowEntry> getLongFlows() {
625 - return ImmutableSet.copyOf(longFlows); //Sets.newHashSet(longFlows); 623 + return ImmutableSet.copyOf(longFlows);
626 } 624 }
627 625
628 /** 626 /**
629 * Add typed flow entry into table only. 627 * Add typed flow entry into table only.
630 * 628 *
631 * @param rule the flow rule 629 * @param rule the flow rule
632 - *
633 */ 630 */
634 public synchronized void add(TypedStoredFlowEntry rule) { 631 public synchronized void add(TypedStoredFlowEntry rule) {
635 checkNotNull(rule); 632 checkNotNull(rule);
...@@ -643,11 +640,10 @@ public class NewAdaptiveFlowStatsCollector { ...@@ -643,11 +640,10 @@ public class NewAdaptiveFlowStatsCollector {
643 } 640 }
644 641
645 /** 642 /**
646 - * Calculates and set the flow live type at the first time, 643 + * Calculates and sets the flow live type at the first time,
647 * and then add it into a corresponding typed flow table. 644 * and then add it into a corresponding typed flow table.
648 * 645 *
649 * @param rule the flow rule 646 * @param rule the flow rule
650 - *
651 */ 647 */
652 public void calAndSetFlowLiveType(TypedStoredFlowEntry rule) { 648 public void calAndSetFlowLiveType(TypedStoredFlowEntry rule) {
653 checkNotNull(rule); 649 checkNotNull(rule);
...@@ -656,11 +652,10 @@ public class NewAdaptiveFlowStatsCollector { ...@@ -656,11 +652,10 @@ public class NewAdaptiveFlowStatsCollector {
656 } 652 }
657 653
658 /** 654 /**
659 - * Add the typed flow entry into table, and calculates and set the flow live type, 655 + * Adds the typed flow entry into table, and calculates and set the flow live type,
660 * and then add it into a corresponding typed flow table. 656 * and then add it into a corresponding typed flow table.
661 * 657 *
662 * @param rule the flow rule 658 * @param rule the flow rule
663 - *
664 */ 659 */
665 public synchronized void addWithCalAndSetFlowLiveType(TypedStoredFlowEntry rule) { 660 public synchronized void addWithCalAndSetFlowLiveType(TypedStoredFlowEntry rule) {
666 checkNotNull(rule); 661 checkNotNull(rule);
...@@ -671,10 +666,10 @@ public class NewAdaptiveFlowStatsCollector { ...@@ -671,10 +666,10 @@ public class NewAdaptiveFlowStatsCollector {
671 calAndSetFlowLiveTypeInternal(rule); 666 calAndSetFlowLiveTypeInternal(rule);
672 addWithSetFlowLiveTypeCount++; 667 addWithSetFlowLiveTypeCount++;
673 } else { 668 } else {
674 - log.debug("addWithCalAndSetFlowLiveType, FlowId=" + Long.toHexString(rule.id().value()) 669 + if (log.isDebugEnabled()) {
675 - + " ADD Failed, cause it may already exists in table !!!," 670 + log.debug("FlowId {} ADD failed, it may already exist in table - {}",
676 - + " AdaptiveStats collection thread for {}", 671 + rule.id(), sw.getStringId());
677 - sw.getStringId()); 672 + }
678 } 673 }
679 } 674 }
680 675
...@@ -760,39 +755,28 @@ public class NewAdaptiveFlowStatsCollector { ...@@ -760,39 +755,28 @@ public class NewAdaptiveFlowStatsCollector {
760 break; 755 break;
761 case LONG_FLOW: 756 case LONG_FLOW:
762 if (fromLastSeen > entirePollInterval) { 757 if (fromLastSeen > entirePollInterval) {
763 - log.trace("checkAndMoveLiveFlowInternal, flow is already removed at switch."); 758 + log.trace("checkAndMoveLiveFlowInternal: flow is already removed at switch.");
764 return false; 759 return false;
765 } 760 }
766 break; 761 break;
767 case UNKNOWN_FLOW: // Unknown flow is an internal error flow type, just fall through 762 case UNKNOWN_FLOW: // Unknown flow is an internal error flow type, just fall through
768 - default : 763 + default:
769 - // Error Unknown Live Type 764 + log.error("Unknown live type error for {}", sw.getStringId());
770 - log.error("checkAndMoveLiveFlowInternal, Unknown Live Type error!"
771 - + "AdaptiveStats collection thread for {}",
772 - sw.getStringId());
773 return false; 765 return false;
774 } 766 }
775 767
776 - log.debug("checkAndMoveLiveFlowInternal, FlowId=" + Long.toHexString(fe.id().value()) 768 + if (log.isTraceEnabled()) {
777 - + ", state=" + fe.state() 769 + log.trace(CHECK_AND_MOVE_LOG, fe.id(), fe.state(), fe.flowLiveType(),
778 - + ", After liveType=" + fe.flowLiveType() 770 + liveTime, fe.life(), fe.bytes(), fe.packets(), fromLastSeen,
779 - + ", liveTime=" + liveTime 771 + fe.priority(), fe.selector().criteria(), fe.treatment(),
780 - + ", life=" + fe.life()
781 - + ", bytes=" + fe.bytes()
782 - + ", packets=" + fe.packets()
783 - + ", fromLastSeen=" + fromLastSeen
784 - + ", priority=" + fe.priority()
785 - + ", selector=" + fe.selector().criteria()
786 - + ", treatment=" + fe.treatment()
787 - + " AdaptiveStats collection thread for {}",
788 sw.getStringId()); 772 sw.getStringId());
773 + }
789 774
790 return true; 775 return true;
791 } 776 }
792 777
793 /** 778 /**
794 - * Check and move live type for all type flow entries in table at every calAndPollInterval time. 779 + * Checks and moves live type for all type flow entries in table at every calAndPollInterval time.
795 - *
796 */ 780 */
797 public void checkAndMoveLiveFlowAll() { 781 public void checkAndMoveLiveFlowAll() {
798 Set<TypedStoredFlowEntry> typedFlowEntries = getFlowEntriesInternal(); 782 Set<TypedStoredFlowEntry> typedFlowEntries = getFlowEntriesInternal();
...@@ -805,7 +789,7 @@ public class NewAdaptiveFlowStatsCollector { ...@@ -805,7 +789,7 @@ public class NewAdaptiveFlowStatsCollector {
805 }); 789 });
806 790
807 // print table counts for debug 791 // print table counts for debug
808 - if (log.isDebugEnabled()) { 792 + if (log.isTraceEnabled()) {
809 synchronized (this) { 793 synchronized (this) {
810 long totalFlowCount = getFlowCount(); 794 long totalFlowCount = getFlowCount();
811 long shortFlowCount = shortFlows.size(); 795 long shortFlowCount = shortFlows.size();
...@@ -814,47 +798,32 @@ public class NewAdaptiveFlowStatsCollector { ...@@ -814,47 +798,32 @@ public class NewAdaptiveFlowStatsCollector {
814 long immediateFlowCount = totalFlowCount - shortFlowCount - midFlowCount - longFlowCount; 798 long immediateFlowCount = totalFlowCount - shortFlowCount - midFlowCount - longFlowCount;
815 long calTotalCount = addCount + addWithSetFlowLiveTypeCount - removeCount; 799 long calTotalCount = addCount + addWithSetFlowLiveTypeCount - removeCount;
816 800
817 - log.debug("--------------------------------------------------------------------------- for {}", 801 + log.trace(CHECK_AND_MOVE_COUNT_LOG, totalFlowCount, calTotalCount,
818 - sw.getStringId()); 802 + immediateFlowCount, shortFlowCount, midFlowCount, longFlowCount,
819 - log.debug("checkAndMoveLiveFlowAll, Total Flow_Count=" + totalFlowCount 803 + addCount, addWithSetFlowLiveTypeCount, removeCount, sw.getStringId());
820 - + ", add - remove_Count=" + calTotalCount 804 +
821 - + ", IMMEDIATE_FLOW_Count=" + immediateFlowCount
822 - + ", SHORT_FLOW_Count=" + shortFlowCount
823 - + ", MID_FLOW_Count=" + midFlowCount
824 - + ", LONG_FLOW_Count=" + longFlowCount
825 - + ", add_Count=" + addCount
826 - + ", addWithSetFlowLiveType_Count=" + addWithSetFlowLiveTypeCount
827 - + ", remove_Count=" + removeCount
828 - + " AdaptiveStats collection thread for {}", sw.getStringId());
829 - log.debug("--------------------------------------------------------------------------- for {}",
830 - sw.getStringId());
831 if (totalFlowCount != calTotalCount) { 805 if (totalFlowCount != calTotalCount) {
832 - log.error("checkAndMoveLiveFlowAll, Real total flow count and " 806 + log.error("Real total flow count and calculated total flow count do NOT match");
833 - + "calculated total flow count do NOT match, something is wrong internally "
834 - + "or check counter value bound is over!");
835 } 807 }
836 if (immediateFlowCount < 0) { 808 if (immediateFlowCount < 0) {
837 - log.error("checkAndMoveLiveFlowAll, IMMEDIATE_FLOW count is negative, " 809 + log.error("Immediate flow count is negative");
838 - + "something is wrong internally "
839 - + "or check counter value bound is over!");
840 } 810 }
841 } 811 }
842 } 812 }
843 - log.trace("checkAndMoveLiveFlowAll, AdaptiveStats for {}", sw.getStringId()); 813 + log.trace("checkAndMoveLiveFlowAll: adaptiveStats for {}", sw.getStringId());
844 } 814 }
845 815
846 /** 816 /**
847 - * Remove the typed flow entry from table. 817 + * Removes the typed flow entry from table.
848 * 818 *
849 * @param rule the flow rule 819 * @param rule the flow rule
850 - *
851 */ 820 */
852 public synchronized void remove(FlowRule rule) { 821 public synchronized void remove(FlowRule rule) {
853 checkNotNull(rule); 822 checkNotNull(rule);
854 823
855 TypedStoredFlowEntry removeStore = getFlowEntryInternal(rule); 824 TypedStoredFlowEntry removeStore = getFlowEntryInternal(rule);
856 if (removeStore != null) { 825 if (removeStore != null) {
857 - removeLiveFlowsInternal((TypedStoredFlowEntry) removeStore); 826 + removeLiveFlowsInternal(removeStore);
858 boolean result = getFlowEntriesInternal(rule.id()).remove(removeStore); 827 boolean result = getFlowEntriesInternal(rule.id()).remove(removeStore);
859 828
860 if (result) { 829 if (result) {
...@@ -879,7 +848,7 @@ public class NewAdaptiveFlowStatsCollector { ...@@ -879,7 +848,7 @@ public class NewAdaptiveFlowStatsCollector {
879 longFlows.remove(fe); 848 longFlows.remove(fe);
880 break; 849 break;
881 default: // error in Flow Live Type 850 default: // error in Flow Live Type
882 - log.error("removeLiveFlowsInternal, Unknown Live Type error!"); 851 + log.error("removeLiveFlowsInternal: unknown live type error");
883 break; 852 break;
884 } 853 }
885 } 854 }
......