[ 
https://issues.apache.org/jira/browse/ARTEMIS-2057?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16595073#comment-16595073
 ] 

ASF GitHub Bot commented on ARTEMIS-2057:
-----------------------------------------

Github user gemmellr commented on a diff in the pull request:

    https://github.com/apache/activemq-artemis/pull/2272#discussion_r213342138
  
    --- Diff: 
artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPSessionCallbackTest.java
 ---
    @@ -0,0 +1,185 @@
    +/*
    + * Licensed to the Apache Software Foundation (ASF) under one or more
    + * contributor license agreements.  See the NOTICE file distributed with
    + * this work for additional information regarding copyright ownership.
    + * The ASF licenses this file to You under the Apache License, Version 2.0
    + * (the "License"); you may not use this file except in compliance with
    + * the License.  You may obtain a copy of the License at
    + *
    + *      http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + */
    +package org.apache.activemq.artemis.protocol.amqp.broker;
    +
    +import static 
org.apache.activemq.artemis.protocol.amqp.proton.AmqpSupport.AMQP_CREDITS_DEFAULT;
    +import static 
org.apache.activemq.artemis.protocol.amqp.proton.AmqpSupport.AMQP_LOW_CREDITS_DEFAULT;
    +import static org.junit.Assert.assertNotNull;
    +import static org.mockito.ArgumentMatchers.any;
    +import static org.mockito.ArgumentMatchers.anyInt;
    +import static org.mockito.Mockito.never;
    +
    +import java.util.concurrent.Executor;
    +
    +import org.apache.activemq.artemis.api.core.SimpleString;
    +import org.apache.activemq.artemis.core.paging.PagingManager;
    +import org.apache.activemq.artemis.core.paging.PagingStore;
    +import org.apache.activemq.artemis.core.persistence.OperationContext;
    +import org.apache.activemq.artemis.core.server.ActiveMQServer;
    +import 
org.apache.activemq.artemis.protocol.amqp.proton.AMQPConnectionContext;
    +import org.apache.activemq.artemis.spi.core.remoting.Connection;
    +import org.apache.qpid.proton.engine.Receiver;
    +import org.junit.Rule;
    +import org.junit.Test;
    +import org.mockito.ArgumentCaptor;
    +import org.mockito.Mock;
    +import org.mockito.Mockito;
    +import org.mockito.junit.MockitoJUnit;
    +import org.mockito.junit.MockitoRule;
    +import org.mockito.quality.Strictness;
    +
    +public class AMQPSessionCallbackTest {
    +
    +   @Rule public MockitoRule rule = 
MockitoJUnit.rule().strictness(Strictness.STRICT_STUBS);
    +
    +   @Mock private AMQPConnectionCallback protonSPI;
    +   @Mock private ProtonProtocolManager manager;
    +   @Mock private AMQPConnectionContext connection;
    +   @Mock private Connection transportConnection;
    +   @Mock private Executor executor;
    +   @Mock private OperationContext operationContext;
    +   @Mock private Receiver receiver;
    +   @Mock private ActiveMQServer server;
    +   @Mock private PagingManager pagingManager;
    +   @Mock private PagingStore pagingStore;
    +
    +   /**
    +    * Test that the AMQPSessionCallback grants no credit when not at 
threshold
    +    */
    +   @Test
    +   public void 
testOfferProducerWithNoAddressDoesNMotTopOffCreditAboveThresholdN() {
    --- End diff --
    
    Typos in name 
testOfferProducerWithNoAddressDoesN**M**otTopOffCreditAboveThreshold**N**


> AMQP: Credit window can grow beyond max credit configuration
> ------------------------------------------------------------
>
>                 Key: ARTEMIS-2057
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-2057
>             Project: ActiveMQ Artemis
>          Issue Type: Improvement
>          Components: AMQP
>    Affects Versions: 2.6.2
>            Reporter: Timothy Bish
>            Assignee: Timothy Bish
>            Priority: Blocker
>             Fix For: 2.6.3
>
>
> The broker currently grants credit based on the 'amqpCredit' configuration 
> which default to 1000 using a check on the "remote credit" view which 
> includes messages currently queued into proton but not processed by the 
> protocol head yet.  This accounting can lead to a runaway credit situation if 
> the sender is particularly fast or a significant number of small messages are 
> batched into one TCP frame and the broker isn't able to clear the backlog 
> from the proton queue fast enough such that the queue grows to the point that 
> the granting algorithm starts granting "amqpCredit" number of credits on each 
> new messages it processes from proton.
> Another smaller issue is that the granting of credit allows for a client to 
> have an outstanding balance of more than the configured "amqpCredits" which 
> may not be what was originally intended by that option and doesn't match what 
> many of the clients do when topping off credit at a low water mark. 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to