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
Showing
2 changed files
with
90 additions
and
105 deletions
... | @@ -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 | } | ... | ... |
-
Please register or login to post a comment