You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by du...@apache.org on 2021/06/29 07:36:00 UTC
[rocketmq] branch 5.0.0-preview updated (df1d93f -> efe598d)
This is an automated email from the ASF dual-hosted git repository.
duhengforever pushed a change to branch 5.0.0-preview
in repository https://gitbox.apache.org/repos/asf/rocketmq.git.
from df1d93f [maven-release-plugin] prepare for next development iteration
add 86bea21 [RIP-19] Pop Consuming (common)
add 60ad9ab Merge pull request #2721 from ayanamist/pop_consumer
add c29d5fd [RIP-19] Pop Consuming (store)
add ea36854 Merge pull request #2733 from ayanamist/pop_consumer
add ced6b02 [RIP-19] Pop Consuming (broker)
add f868d99 Init pop retry consumer offset when create
add d54629c Add abbreviation for fields of PopCheckPoint to save commit log size.
add d3d0207 Merge pull request #2757 from ayanamist/dev_pop_consume
add 9d8f4c2 [RIP-19] Pop Consuming (client)
add cd44623 Merge pull request #2808 from hill007299/pop_consumer
add 8847fb8 [RIP-19] Pop Consuming (tools)
add bc55a65 feat(test) ignore it for now, wait for the next PR
add b91b95b feat(test) remove unnessary stub
add c3578dd Merge pull request #2825 from hill007299/pop_consumer
add 80bc36c [RIP-19] Pop Consuming (integration test)
add 0938aab Merge pull request #2835 from hill007299/pop_consumer
add 16262fc [RIP-19] Pop Consuming (add example & doc)
add 9a7c61c fix rat-check
add 7d32c02 Merge pull request #2862 from hill007299/pop_consumer
add e84221d Merge remote-tracking branch 'origin/develop' into pop_consumer
add e22f9d5 Fix comment for ci
add d98192b Merge pull request #2908 from duhenglucky/duheng_pop_consumer
add 48fa70b Merge branch 5.0.0-preview into pop_consumer
new efe598d Merge pull request #2867 from apache/pop_consumer
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
broker/pom.xml | 4 +
.../apache/rocketmq/broker/BrokerController.java | 154 +++-
.../rocketmq/broker/BrokerPathConfigHelper.java | 8 +
.../broker/loadbalance/AssignmentManager.java | 149 ++++
.../loadbalance/MessageRequestModeManager.java | 99 +++
.../longpolling/NotifyMessageArrivingListener.java | 9 +-
.../rocketmq/broker/longpolling/PopRequest.java | 87 ++
.../broker/offset/ConsumerOrderInfoManager.java | 426 +++++++++
.../apache/rocketmq/broker/out/BrokerOuterAPI.java | 42 +-
.../broker/processor/AckMessageProcessor.java | 188 ++++
.../processor/ChangeInvisibleTimeProcessor.java | 195 +++++
.../broker/processor/PopBufferMergeService.java | 731 ++++++++++++++++
.../broker/processor/PopMessageProcessor.java | 967 +++++++++++++++++++++
.../broker/processor/PopReviveService.java | 470 ++++++++++
.../broker/processor/QueryAssignmentProcessor.java | 307 +++++++
.../org/apache/rocketmq/broker/util/MsgUtil.java} | 14 +-
...essorTest.java => AckMessageProcessorTest.java} | 94 +-
....java => ChangeInvisibleTimeProcessorTest.java} | 97 +--
.../processor/PopBufferMergeServiceTest.java | 124 +++
...essorTest.java => PopMessageProcessorTest.java} | 166 ++--
.../processor/QueryAssignmentProcessorTest.java | 153 ++++
.../{PullCallback.java => AckCallback.java} | 7 +-
.../apache/rocketmq/client/consumer/AckResult.java | 36 +-
.../consumer/{PullCallback.java => AckStatus.java} | 16 +-
.../client/consumer/DefaultMQPushConsumer.java | 51 ++
.../{PullCallback.java => PopCallback.java} | 6 +-
.../consumer/{PullResult.java => PopResult.java} | 59 +-
.../consumer/{PullStatus.java => PopStatus.java} | 13 +-
.../rebalance/AllocateMessageQueueAveragely.java | 12 +-
.../AllocateMessageQueueAveragelyByCircle.java | 12 +-
.../rocketmq/client/impl/BaseInvokeCallback.java | 19 +-
.../rocketmq/client/impl/MQClientAPIImpl.java | 286 +++++-
.../ConsumeMessageConcurrentlyService.java | 8 +-
.../consumer/ConsumeMessageOrderlyService.java | 14 +-
...a => ConsumeMessagePopConcurrentlyService.java} | 265 +++---
.../consumer/ConsumeMessagePopOrderlyService.java | 408 +++++++++
.../impl/consumer/ConsumeMessageService.java | 5 +
.../impl/consumer/DefaultLitePullConsumerImpl.java | 8 +-
.../impl/consumer/DefaultMQPushConsumerImpl.java | 331 ++++++-
.../client/impl/consumer/MessageQueueLock.java | 29 +-
.../client/impl/consumer/MessageRequest.java | 6 +-
.../client/impl/consumer/PopProcessQueue.java | 84 ++
.../consumer/{PullRequest.java => PopRequest.java} | 71 +-
.../client/impl/consumer/PullAPIWrapper.java | 55 +-
.../client/impl/consumer/PullMessageService.java | 47 +-
.../rocketmq/client/impl/consumer/PullRequest.java | 8 +-
.../client/impl/consumer/RebalanceImpl.java | 482 ++++++++--
.../impl/consumer/RebalanceLitePullImpl.java | 25 +-
.../client/impl/consumer/RebalancePullImpl.java | 26 +-
.../client/impl/consumer/RebalancePushImpl.java | 56 +-
.../client/impl/factory/MQClientInstance.java | 37 +-
.../consumer/DefaultLitePullConsumerTest.java | 8 +
.../client/consumer/DefaultMQPushConsumerTest.java | 121 ++-
.../rocketmq/client/impl/MQClientAPIImplTest.java | 490 ++++++++++-
.../consumer/DefaultMQPushConsumerImplTest.java | 69 ++
.../impl/consumer/RebalancePushImplTest.java | 53 +-
.../client/impl/factory/MQClientInstanceTest.java | 1 +
.../client/producer/DefaultMQProducerTest.java | 5 +-
.../powermock/extensions/configuration.properties | 6 +-
.../org/apache/rocketmq/common/BrokerConfig.java | 154 ++++
...{BrokerConfigSingleton.java => KeyBuilder.java} | 26 +-
.../apache/rocketmq/common/PopAckConstants.java | 29 +-
.../{DBMsgConstants.java => ConsumeInitMode.java} | 6 +-
.../rocketmq/common/constant/LoggerName.java | 1 +
.../rocketmq/common/message/MessageConst.java | 4 +
.../rocketmq/common/message/MessageDecoder.java | 2 +-
.../common/message/MessageQueueAssignment.java | 83 ++
.../{MessageType.java => MessageRequestMode.java} | 30 +-
.../rocketmq/common/protocol/RequestCode.java | 7 +
.../rocketmq/common/protocol/ResponseCode.java | 3 +
.../common/protocol/body/ConsumerRunningInfo.java | 32 +
.../{Connection.java => PopProcessQueueInfo.java} | 48 +-
...stBody.java => QueryAssignmentRequestBody.java} | 39 +-
...eBody.java => QueryAssignmentResponseBody.java} | 17 +-
.../SetMessageRequestModeRequestBody.java} | 59 +-
...estHeader.java => AckMessageRequestHeader.java} | 37 +-
....java => ChangeInvisibleTimeRequestHeader.java} | 51 +-
...java => ChangeInvisibleTimeResponseHeader.java} | 36 +-
.../common/protocol/header/ExtraInfoUtil.java | 258 ++++++
...estHeader.java => PopMessageRequestHeader.java} | 133 +--
.../protocol/header/PopMessageResponseHeader.java | 102 +++
.../utils/{ChannelUtil.java => DataConverter.java} | 30 +-
distribution/conf/logback_broker.xml | 29 +
docs/en/Feature.md | 7 +-
example/pom.xml | 4 +
.../rocketmq/example/simple/PopPushConsumer.java | 62 ++
pom.xml | 5 +
.../rocketmq/remoting/common/RemotingHelper.java | 9 +-
.../apache/rocketmq/store/DefaultMessageStore.java | 3 +-
.../apache/rocketmq/store/GetMessageResult.java | 10 +
.../org/apache/rocketmq/store/MessageStore.java | 4 +-
.../java/org/apache/rocketmq/store/pop/AckMsg.java | 68 +-
.../apache/rocketmq/store/pop/PopCheckPoint.java | 174 ++++
.../store/schedule/ScheduleMessageService.java | 20 +-
...QBroadCastConsumer.java => RMQPopConsumer.java} | 10 +-
.../rocketmq/test/factory/ConsumerFactory.java | 10 +
.../rocketmq/test/base/IntegrationTestBase.java | 13 +-
.../consumer/balance/NormalMsgStaticBalanceIT.java | 18 +-
.../test/client/consumer/pop/PopSubCheckIT.java | 92 ++
.../test/smoke/NormalMessageSendAndRecvIT.java | 6 +
.../rocketmq/tools/admin/DefaultMQAdminExt.java | 15 +-
.../tools/admin/DefaultMQAdminExtImpl.java | 20 +-
.../apache/rocketmq/tools/admin/MQAdminExt.java | 30 +-
.../rocketmq/tools/command/MQAdminStartup.java | 4 +-
.../SetConsumeModeSubCommand.java} | 71 +-
105 files changed, 8652 insertions(+), 938 deletions(-)
create mode 100644 broker/src/main/java/org/apache/rocketmq/broker/loadbalance/AssignmentManager.java
create mode 100644 broker/src/main/java/org/apache/rocketmq/broker/loadbalance/MessageRequestModeManager.java
create mode 100644 broker/src/main/java/org/apache/rocketmq/broker/longpolling/PopRequest.java
create mode 100644 broker/src/main/java/org/apache/rocketmq/broker/offset/ConsumerOrderInfoManager.java
create mode 100644 broker/src/main/java/org/apache/rocketmq/broker/processor/AckMessageProcessor.java
create mode 100644 broker/src/main/java/org/apache/rocketmq/broker/processor/ChangeInvisibleTimeProcessor.java
create mode 100644 broker/src/main/java/org/apache/rocketmq/broker/processor/PopBufferMergeService.java
create mode 100644 broker/src/main/java/org/apache/rocketmq/broker/processor/PopMessageProcessor.java
create mode 100644 broker/src/main/java/org/apache/rocketmq/broker/processor/PopReviveService.java
create mode 100644 broker/src/main/java/org/apache/rocketmq/broker/processor/QueryAssignmentProcessor.java
copy broker/src/{test/java/org/apache/rocketmq/broker/util/LogTransactionalMessageCheckListener.java => main/java/org/apache/rocketmq/broker/util/MsgUtil.java} (57%)
copy broker/src/test/java/org/apache/rocketmq/broker/processor/{ReplyMessageProcessorTest.java => AckMessageProcessorTest.java} (61%)
copy broker/src/test/java/org/apache/rocketmq/broker/processor/{ReplyMessageProcessorTest.java => ChangeInvisibleTimeProcessorTest.java} (60%)
create mode 100644 broker/src/test/java/org/apache/rocketmq/broker/processor/PopBufferMergeServiceTest.java
copy broker/src/test/java/org/apache/rocketmq/broker/processor/{PullMessageProcessorTest.java => PopMessageProcessorTest.java} (50%)
create mode 100644 broker/src/test/java/org/apache/rocketmq/broker/processor/QueryAssignmentProcessorTest.java
copy client/src/main/java/org/apache/rocketmq/client/consumer/{PullCallback.java => AckCallback.java} (88%)
copy common/src/main/java/org/apache/rocketmq/common/protocol/header/ResumeCheckHalfMessageRequestHeader.java => client/src/main/java/org/apache/rocketmq/client/consumer/AckResult.java (56%)
copy client/src/main/java/org/apache/rocketmq/client/consumer/{PullCallback.java => AckStatus.java} (83%)
copy client/src/main/java/org/apache/rocketmq/client/consumer/{PullCallback.java => PopCallback.java} (88%)
copy client/src/main/java/org/apache/rocketmq/client/consumer/{PullResult.java => PopResult.java} (58%)
copy client/src/main/java/org/apache/rocketmq/client/consumer/{PullStatus.java => PopStatus.java} (78%)
copy remoting/src/main/java/org/apache/rocketmq/remoting/InvokeCallback.java => client/src/main/java/org/apache/rocketmq/client/impl/BaseInvokeCallback.java (62%)
copy client/src/main/java/org/apache/rocketmq/client/impl/consumer/{ConsumeMessageConcurrentlyService.java => ConsumeMessagePopConcurrentlyService.java} (64%)
create mode 100644 client/src/main/java/org/apache/rocketmq/client/impl/consumer/ConsumeMessagePopOrderlyService.java
copy acl/src/main/java/org/apache/rocketmq/acl/AccessResource.java => client/src/main/java/org/apache/rocketmq/client/impl/consumer/MessageRequest.java (80%)
create mode 100644 client/src/main/java/org/apache/rocketmq/client/impl/consumer/PopProcessQueue.java
copy client/src/main/java/org/apache/rocketmq/client/impl/consumer/{PullRequest.java => PopRequest.java} (59%)
copy distribution/bin/cleancache.sh => client/src/test/resources/org/powermock/extensions/configuration.properties (92%)
copy common/src/main/java/org/apache/rocketmq/common/{BrokerConfigSingleton.java => KeyBuilder.java} (56%)
copy broker/src/main/java/org/apache/rocketmq/broker/transaction/queue/TransactionalMessageUtil.java => common/src/main/java/org/apache/rocketmq/common/PopAckConstants.java (58%)
copy common/src/main/java/org/apache/rocketmq/common/constant/{DBMsgConstants.java => ConsumeInitMode.java} (89%)
create mode 100644 common/src/main/java/org/apache/rocketmq/common/message/MessageQueueAssignment.java
copy common/src/main/java/org/apache/rocketmq/common/message/{MessageType.java => MessageRequestMode.java} (69%)
copy common/src/main/java/org/apache/rocketmq/common/protocol/body/{Connection.java => PopProcessQueueInfo.java} (53%)
copy common/src/main/java/org/apache/rocketmq/common/protocol/body/{LockBatchRequestBody.java => QueryAssignmentRequestBody.java} (64%)
copy common/src/main/java/org/apache/rocketmq/common/protocol/body/{LockBatchResponseBody.java => QueryAssignmentResponseBody.java} (66%)
copy common/src/main/java/org/apache/rocketmq/common/protocol/{header/QueryConsumeQueueRequestHeader.java => body/SetMessageRequestModeRequestBody.java} (58%)
copy common/src/main/java/org/apache/rocketmq/common/protocol/header/{UpdateConsumerOffsetRequestHeader.java => AckMessageRequestHeader.java} (74%)
copy common/src/main/java/org/apache/rocketmq/common/protocol/header/{UpdateConsumerOffsetRequestHeader.java => ChangeInvisibleTimeRequestHeader.java} (69%)
copy common/src/main/java/org/apache/rocketmq/common/protocol/header/{QueryConsumeTimeSpanRequestHeader.java => ChangeInvisibleTimeResponseHeader.java} (66%)
create mode 100644 common/src/main/java/org/apache/rocketmq/common/protocol/header/ExtraInfoUtil.java
copy common/src/main/java/org/apache/rocketmq/common/protocol/header/{PullMessageRequestHeader.java => PopMessageRequestHeader.java} (50%)
create mode 100644 common/src/main/java/org/apache/rocketmq/common/protocol/header/PopMessageResponseHeader.java
copy common/src/main/java/org/apache/rocketmq/common/utils/{ChannelUtil.java => DataConverter.java} (58%)
create mode 100644 example/src/main/java/org/apache/rocketmq/example/simple/PopPushConsumer.java
copy common/src/main/java/org/apache/rocketmq/common/protocol/header/QueryConsumeQueueRequestHeader.java => store/src/main/java/org/apache/rocketmq/store/pop/AckMsg.java (56%)
create mode 100644 store/src/main/java/org/apache/rocketmq/store/pop/PopCheckPoint.java
copy test/src/main/java/org/apache/rocketmq/test/client/rmq/{RMQBroadCastConsumer.java => RMQPopConsumer.java} (74%)
create mode 100644 test/src/test/java/org/apache/rocketmq/test/client/consumer/pop/PopSubCheckIT.java
copy tools/src/main/java/org/apache/rocketmq/tools/command/{broker/UpdateBrokerConfigSubCommand.java => consumer/SetConsumeModeSubCommand.java} (52%)
[rocketmq] 01/01: Merge pull request #2867 from apache/pop_consumer
Posted by du...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
duhengforever pushed a commit to branch 5.0.0-preview
in repository https://gitbox.apache.org/repos/asf/rocketmq.git
commit efe598db98ad3ad328cbd3804da83715ac4ab2b7
Merge: df1d93f 48fa70b
Author: Heng Du <du...@apache.org>
AuthorDate: Tue Jun 29 15:34:16 2021 +0800
Merge pull request #2867 from apache/pop_consumer
[RIP-19] Server-side rebalance, lightweight consumer client support
broker/pom.xml | 4 +
.../apache/rocketmq/broker/BrokerController.java | 154 +++-
.../rocketmq/broker/BrokerPathConfigHelper.java | 8 +
.../broker/loadbalance/AssignmentManager.java | 149 ++++
.../loadbalance/MessageRequestModeManager.java | 99 +++
.../longpolling/NotifyMessageArrivingListener.java | 9 +-
.../rocketmq/broker/longpolling/PopRequest.java | 87 ++
.../broker/offset/ConsumerOrderInfoManager.java | 426 +++++++++
.../apache/rocketmq/broker/out/BrokerOuterAPI.java | 42 +-
.../broker/processor/AckMessageProcessor.java | 188 ++++
.../processor/ChangeInvisibleTimeProcessor.java | 195 +++++
.../broker/processor/PopBufferMergeService.java | 731 ++++++++++++++++
.../broker/processor/PopMessageProcessor.java | 967 +++++++++++++++++++++
.../broker/processor/PopReviveService.java | 470 ++++++++++
.../broker/processor/QueryAssignmentProcessor.java | 307 +++++++
.../org/apache/rocketmq/broker/util/MsgUtil.java | 34 +-
.../broker/processor/AckMessageProcessorTest.java | 132 +++
.../ChangeInvisibleTimeProcessorTest.java | 133 +++
.../processor/PopBufferMergeServiceTest.java | 124 +++
.../broker/processor/PopMessageProcessorTest.java | 191 ++++
.../processor/QueryAssignmentProcessorTest.java | 153 ++++
.../rocketmq/client/consumer/AckCallback.java | 22 +-
.../apache/rocketmq/client/consumer/AckResult.java | 38 +-
.../apache/rocketmq/client/consumer/AckStatus.java | 29 +-
.../client/consumer/DefaultMQPushConsumer.java | 51 ++
.../rocketmq/client/consumer/PopCallback.java | 25 +-
.../apache/rocketmq/client/consumer/PopResult.java | 82 ++
.../apache/rocketmq/client/consumer/PopStatus.java | 38 +-
.../rebalance/AllocateMessageQueueAveragely.java | 12 +-
.../AllocateMessageQueueAveragelyByCircle.java | 12 +-
.../rocketmq/client/impl/BaseInvokeCallback.java | 23 +-
.../rocketmq/client/impl/MQClientAPIImpl.java | 286 +++++-
.../ConsumeMessageConcurrentlyService.java | 8 +-
.../consumer/ConsumeMessageOrderlyService.java | 14 +-
...a => ConsumeMessagePopConcurrentlyService.java} | 265 +++---
.../consumer/ConsumeMessagePopOrderlyService.java | 408 +++++++++
.../impl/consumer/ConsumeMessageService.java | 5 +
.../impl/consumer/DefaultLitePullConsumerImpl.java | 8 +-
.../impl/consumer/DefaultMQPushConsumerImpl.java | 331 ++++++-
.../client/impl/consumer/MessageQueueLock.java | 29 +-
...sumeMessageService.java => MessageRequest.java} | 27 +-
.../client/impl/consumer/PopProcessQueue.java | 84 ++
.../consumer/{PullRequest.java => PopRequest.java} | 71 +-
.../client/impl/consumer/PullAPIWrapper.java | 55 +-
.../client/impl/consumer/PullMessageService.java | 47 +-
.../rocketmq/client/impl/consumer/PullRequest.java | 8 +-
.../client/impl/consumer/RebalanceImpl.java | 482 ++++++++--
.../impl/consumer/RebalanceLitePullImpl.java | 25 +-
.../client/impl/consumer/RebalancePullImpl.java | 26 +-
.../client/impl/consumer/RebalancePushImpl.java | 56 +-
.../client/impl/factory/MQClientInstance.java | 37 +-
.../consumer/DefaultLitePullConsumerTest.java | 8 +
.../client/consumer/DefaultMQPushConsumerTest.java | 121 ++-
.../rocketmq/client/impl/MQClientAPIImplTest.java | 490 ++++++++++-
.../consumer/DefaultMQPushConsumerImplTest.java | 69 ++
.../impl/consumer/RebalancePushImplTest.java | 53 +-
.../client/impl/factory/MQClientInstanceTest.java | 1 +
.../client/producer/DefaultMQProducerTest.java | 5 +-
.../powermock/extensions/configuration.properties | 16 +
.../org/apache/rocketmq/common/BrokerConfig.java | 154 ++++
.../org/apache/rocketmq/common/KeyBuilder.java | 28 +-
.../apache/rocketmq/common/PopAckConstants.java | 28 +-
.../rocketmq/common/constant/ConsumeInitMode.java | 23 +-
.../rocketmq/common/constant/LoggerName.java | 1 +
.../rocketmq/common/message/MessageConst.java | 4 +
.../rocketmq/common/message/MessageDecoder.java | 2 +-
.../common/message/MessageQueueAssignment.java | 83 ++
.../common/message/MessageRequestMode.java | 30 +-
.../rocketmq/common/protocol/RequestCode.java | 7 +
.../rocketmq/common/protocol/ResponseCode.java | 3 +
.../common/protocol/body/ConsumerRunningInfo.java | 32 +
.../common/protocol/body/PopProcessQueueInfo.java | 59 ++
.../protocol/body/QueryAssignmentRequestBody.java | 74 ++
.../protocol/body/QueryAssignmentResponseBody.java | 23 +-
.../body/SetMessageRequestModeRequestBody.java | 70 ++
.../protocol/header/AckMessageRequestHeader.java | 85 ++
.../header/ChangeInvisibleTimeRequestHeader.java | 97 +++
.../header/ChangeInvisibleTimeResponseHeader.java | 61 ++
.../common/protocol/header/ExtraInfoUtil.java | 258 ++++++
.../protocol/header/PopMessageRequestHeader.java | 155 ++++
.../protocol/header/PopMessageResponseHeader.java | 102 +++
.../rocketmq/common/utils/DataConverter.java | 31 +-
distribution/conf/logback_broker.xml | 29 +
docs/en/Feature.md | 7 +-
example/pom.xml | 4 +
.../rocketmq/example/simple/PopPushConsumer.java | 62 ++
pom.xml | 5 +
.../rocketmq/remoting/common/RemotingHelper.java | 9 +-
.../apache/rocketmq/store/DefaultMessageStore.java | 3 +-
.../apache/rocketmq/store/GetMessageResult.java | 10 +
.../org/apache/rocketmq/store/MessageStore.java | 4 +-
.../java/org/apache/rocketmq/store/pop/AckMsg.java | 87 ++
.../apache/rocketmq/store/pop/PopCheckPoint.java | 174 ++++
.../store/schedule/ScheduleMessageService.java | 20 +-
.../rocketmq/test/client/rmq/RMQPopConsumer.java | 33 +
.../rocketmq/test/factory/ConsumerFactory.java | 10 +
.../rocketmq/test/base/IntegrationTestBase.java | 13 +-
.../consumer/balance/NormalMsgStaticBalanceIT.java | 18 +-
.../test/client/consumer/pop/PopSubCheckIT.java | 92 ++
.../test/smoke/NormalMessageSendAndRecvIT.java | 6 +
.../rocketmq/tools/admin/DefaultMQAdminExt.java | 15 +-
.../tools/admin/DefaultMQAdminExtImpl.java | 20 +-
.../apache/rocketmq/tools/admin/MQAdminExt.java | 30 +-
.../rocketmq/tools/command/MQAdminStartup.java | 4 +-
.../command/consumer/SetConsumeModeSubCommand.java | 135 +++
105 files changed, 9560 insertions(+), 610 deletions(-)