BUG-1075: ingress back pressure 58/7458/9
authorMichal Rehak <mirehak@cisco.com>
Tue, 27 May 2014 11:43:42 +0000 (13:43 +0200)
committerPrasanna Huddar <prasanna.k.huddar@gmail.com>
Wed, 18 Jun 2014 15:19:32 +0000 (15:19 +0000)
commitb0e8d777920a430776efe07c625637fe75204505
treecf27861a3a65c48a7cfdb416663ed7d0bfc8713b
parent3a48f57d58c9c55ccbf290af2e087f9cabb3c9bd
BUG-1075: ingress back pressure

- added fair competition queue keeper implementation
- added queueProcessor (harvesting and processing messages)
- per-connection-queues register for queueProcessor and are blocked if polling queue is full
- removed netty thread blocking by publish
- added dropping of messages
- added meaningful names to threads
- added harvester, queues zipper, messageSource registration stuff
- changed ticketPool to blocking if poolQueue full
- doubleCheckedLocking for harverster starving
- handshake pool switched to logging implementation
- onHello method is no more synchronized
- for messages {hello, features} timeout = 8s
- optimized synchronized singleton methods
- used ThreadFactoryBuilder
- processed comments

Change-Id: Ic0b4ebc2df4e19793fa1d1d125a0d31dd2f9c6c8
Signed-off-by: Michal Rehak <mirehak@cisco.com>
33 files changed:
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/ConnectionConductor.java
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/ConnectionConductorFactory.java
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/ConnectionConductorImpl.java
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/HandshakeManagerImpl.java
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/MDController.java
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/SwitchConnectionHandlerImpl.java
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/ThreadPoolLoggingExecutor.java
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/session/SessionManagerOFImpl.java
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/queue/Enqueuer.java [new file with mode: 0644]
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/queue/HarvesterHandle.java [moved from openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/queue/VersionExtractor.java with 57% similarity]
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/queue/MessageSourcePollRegistration.java [new file with mode: 0644]
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/queue/MessageSourcePollRegistrator.java [new file with mode: 0644]
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/queue/QueueItem.java [new file with mode: 0644]
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/queue/QueueItemOFImpl.java [new file with mode: 0644]
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/queue/QueueKeeper.java
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/queue/QueueKeeperFactory.java [new file with mode: 0644]
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/queue/QueueKeeperFairImpl.java [new file with mode: 0644]
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/queue/QueueKeeperHarvester.java [new file with mode: 0644]
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/queue/QueueKeeperLightImpl.java [deleted file]
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/queue/QueueProcessor.java [new file with mode: 0644]
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/queue/QueueProcessorLightImpl.java [new file with mode: 0644]
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/queue/RegisteredTypeExtractor.java [deleted file]
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/queue/Ticket.java
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/queue/TicketFinisher.java
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/queue/TicketFinisherImpl.java [new file with mode: 0644]
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/queue/TicketImpl.java
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/queue/TicketProcessorFactory.java
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/queue/TicketProcessorFactoryImpl.java [new file with mode: 0644]
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/queue/TicketResult.java
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/util/PollableQueuesZipper.java [new file with mode: 0644]
openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/ConnectionConductorImplTest.java
openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/session/MessageDispatchServiceImplTest.java
openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/util/PollableQueuesZipperTest.java [new file with mode: 0644]