[GitHub] activemq-artemis pull request #2467: ARTEMIS-2205 Performance improvements o...

2018-12-18 Thread michaelandrepearce
Github user michaelandrepearce commented on a diff in the pull request:

https://github.com/apache/activemq-artemis/pull/2467#discussion_r242788099
  
--- Diff: 
artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/ProtonServerSenderContext.java
 ---
@@ -469,20 +530,17 @@ public void close(ErrorCondition condition) throws 
ActiveMQAMQPException {
  sender.setCondition(condition);
   }
   protonSession.removeSender(sender);
-  connection.lock();
-  try {
- sender.close();
-  } finally {
- connection.unlock();
-  }
-  connection.flush();
 
-  try {
- sessionSPI.closeSender(brokerConsumer);
-  } catch (Exception e) {
- log.warn(e.getMessage(), e);
- throw new ActiveMQAMQPInternalErrorException(e.getMessage());
-  }
+  connection.runLater(() -> {
+ sender.close();
+ try {
+sessionSPI.closeSender(brokerConsumer);
+ } catch (Exception e) {
+log.warn(e.getMessage(), e);
--- End diff --

Static logger method needed


---


[GitHub] activemq-artemis pull request #2467: ARTEMIS-2205 Performance improvements o...

2018-12-18 Thread michaelandrepearce
Github user michaelandrepearce commented on a diff in the pull request:

https://github.com/apache/activemq-artemis/pull/2467#discussion_r242788013
  
--- Diff: 
artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/ProtonServerSenderContext.java
 ---
@@ -730,22 +793,29 @@ public int deliverMessage(MessageReference 
messageReference, int deliveryCount,
 
 if (preSettle) {
// Presettled means the client implicitly accepts any 
delivery we send it.
-   sessionSPI.ack(null, brokerConsumer, 
messageReference.getMessage());
+   try {
+  sessionSPI.ack(null, brokerConsumer, 
messageReference.getMessage());
+   } catch (Exception e) {
+  log.debug(e.getMessage(), e);
+   }
delivery.settle();
 } else {
sender.advance();
 }
 
 connection.flush();
  } finally {
-connection.unlock();
+synchronized (creditsLock) {
+   pending.decrementAndGet();
+}
+if (releaseRequired) {
+   ((NettyReadable) sendBuffer).getByteBuf().release();
+}
  }
+  } catch (Exception e) {
+ log.warn(e.getMessage(), e);
--- End diff --

Static logger method needed


---


[GitHub] activemq-artemis pull request #2467: ARTEMIS-2205 Performance improvements o...

2018-12-18 Thread michaelandrepearce
Github user michaelandrepearce commented on a diff in the pull request:

https://github.com/apache/activemq-artemis/pull/2467#discussion_r242787638
  
--- Diff: 
artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/AMQPConnectionContext.java
 ---
@@ -359,59 +371,77 @@ public boolean flowControl(ReadyListener 
readyListener) {
 
@Override
public void onRemoteOpen(Connection connection) throws Exception {
-  lock();
+  handler.requireHandler();
   try {
- try {
-initInternal();
- } catch (Exception e) {
-log.error("Error init connection", e);
- }
- if (!validateConnection(connection)) {
-connection.close();
- } else {
-connection.setContext(AMQPConnectionContext.this);
-connection.setContainer(containerId);
-connection.setProperties(connectionProperties);
-
connection.setOfferedCapabilities(getConnectionCapabilitiesOffered());
-connection.open();
- }
-  } finally {
- unlock();
+ initInternal();
+  } catch (Exception e) {
+ log.error("Error init connection", e);
+  }
+  if (!validateConnection(connection)) {
+ connection.close();
+  } else {
+ connection.setContext(AMQPConnectionContext.this);
+ connection.setContainer(containerId);
+ connection.setProperties(connectionProperties);
+ 
connection.setOfferedCapabilities(getConnectionCapabilitiesOffered());
+ connection.open();
   }
   initialise();
 
- /*
- * This can be null which is in effect an empty map, also we 
really don't need to check this for in bound connections
- * but its here in case we add support for outbound connections.
- * */
+  /*
+  * This can be null which is in effect an empty map, also we really 
don't need to check this for in bound connections
+  * but its here in case we add support for outbound connections.
+  * */
   if (connection.getRemoteProperties() == null || 
!connection.getRemoteProperties().containsKey(CONNECTION_OPEN_FAILED)) {
  long nextKeepAliveTime = handler.tick(true);
  if (nextKeepAliveTime != 0 && scheduledPool != null) {
-scheduledPool.schedule(new Runnable() {
-   @Override
-   public void run() {
-  Long rescheduleAt = handler.tick(false);
-  if (rescheduleAt == null) {
- // this mean tick could not acquire a lock, we will 
just retry in 10 milliseconds.
- scheduledPool.schedule(this, 10, 
TimeUnit.MILLISECONDS);
-  } else if (rescheduleAt != 0) {
- scheduledPool.schedule(this, rescheduleAt - 
TimeUnit.NANOSECONDS.toMillis(System.nanoTime()), TimeUnit.MILLISECONDS);
-  }
-   }
-}, (nextKeepAliveTime - 
TimeUnit.NANOSECONDS.toMillis(System.nanoTime())), TimeUnit.MILLISECONDS);
+scheduledPool.schedule(new ScheduleRunnable(), 
(nextKeepAliveTime - TimeUnit.NANOSECONDS.toMillis(System.nanoTime())), 
TimeUnit.MILLISECONDS);
  }
   }
}
 
+   class TickerRunnable implements Runnable {
+
+  final ScheduleRunnable scheduleRunnable;
+
+  TickerRunnable(ScheduleRunnable scheduleRunnable) {
+ this.scheduleRunnable = scheduleRunnable;
+  }
+
+  @Override
+  public void run() {
+ try {
+Long rescheduleAt = handler.tick(false);
+if (rescheduleAt == null) {
+   // this mean tick could not acquire a lock, we will just 
retry in 10 milliseconds.
+   scheduledPool.schedule(scheduleRunnable, 10, 
TimeUnit.MILLISECONDS);
+} else if (rescheduleAt != 0) {
+   scheduledPool.schedule(scheduleRunnable, rescheduleAt - 
TimeUnit.NANOSECONDS.toMillis(System.nanoTime()), TimeUnit.MILLISECONDS);
+}
+ } catch (Exception e) {
+log.warn(e.getMessage(), e);
+ }
--- End diff --

This should have a static logger method with a code


---


[GitHub] activemq-artemis pull request #2467: ARTEMIS-2205 Performance improvements o...

2018-12-18 Thread michaelandrepearce
Github user michaelandrepearce commented on a diff in the pull request:

https://github.com/apache/activemq-artemis/pull/2467#discussion_r242787783
  
--- Diff: 
artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/ProtonServerSenderContext.java
 ---
@@ -122,7 +136,53 @@ public Object getBrokerConsumer() {
 
@Override
public void onFlow(int currentCredits, boolean drain) {
-  sessionSPI.onFlowConsumer(brokerConsumer, currentCredits, drain);
+  connection.requireInHandler();
+
+  setupCredit();
+
+  ServerConsumerImpl serverConsumer = (ServerConsumerImpl) 
brokerConsumer;
+  if (drain) {
+ // If the draining is already running, then don't do anything
+ if (draining.compareAndSet(false, true)) {
+final ProtonServerSenderContext plugSender = 
(ProtonServerSenderContext) serverConsumer.getProtocolContext();
+serverConsumer.forceDelivery(1, new Runnable() {
+   @Override
+   public void run() {
+  try {
+ connection.runNow(() -> {
+plugSender.reportDrained();
+setupCredit();
+ });
+  } finally {
+ draining.set(false);
+  }
+   }
+});
+ }
+  } else {
+ serverConsumer.receiveCredits(-1);
+  }
+   }
+
+   public boolean hasCredits() {
+  if (!connection.flowControl(onflowControlReady)) {
+ return false;
+  }
+
+  //return true;
+  //return getSender().getCredit() > 0;
--- End diff --

Remove commented out code


---


[GitHub] activemq-artemis pull request #2467: ARTEMIS-2205 Performance improvements o...

2018-12-18 Thread michaelandrepearce
Github user michaelandrepearce commented on a diff in the pull request:

https://github.com/apache/activemq-artemis/pull/2467#discussion_r242788241
  
--- Diff: 
artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/ProtonServerSenderContext.java
 ---
@@ -730,22 +793,29 @@ public int deliverMessage(MessageReference 
messageReference, int deliveryCount,
 
 if (preSettle) {
// Presettled means the client implicitly accepts any 
delivery we send it.
-   sessionSPI.ack(null, brokerConsumer, 
messageReference.getMessage());
+   try {
+  sessionSPI.ack(null, brokerConsumer, 
messageReference.getMessage());
+   } catch (Exception e) {
+  log.debug(e.getMessage(), e);
+   }
delivery.settle();
 } else {
sender.advance();
 }
 
 connection.flush();
  } finally {
-connection.unlock();
+synchronized (creditsLock) {
+   pending.decrementAndGet();
+}
+if (releaseRequired) {
+   ((NettyReadable) sendBuffer).getByteBuf().release();
+}
  }
+  } catch (Exception e) {
+ log.warn(e.getMessage(), e);
 
- return size;
-  } finally {
- if (releaseRequired) {
-((NettyReadable) sendBuffer).getByteBuf().release();
- }
+ // important todo: Error treatment
--- End diff --

Looks like some work left todo here


---


[GitHub] activemq-artemis pull request #2467: ARTEMIS-2205 Performance improvements o...

2018-12-18 Thread michaelandrepearce
Github user michaelandrepearce commented on a diff in the pull request:

https://github.com/apache/activemq-artemis/pull/2467#discussion_r242787574
  
--- Diff: 
artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/AMQPConnectionContext.java
 ---
@@ -471,40 +494,42 @@ public void onFlow(Link link) throws Exception {
 
@Override
public void onRemoteClose(Link link) throws Exception {
-  lock();
-  try {
+  handler.requireHandler();
+
+  // We scheduled it for later, as that will work through anything 
that's pending on the current deliveries.
+  runLater(() -> {
  link.close();
  link.free();
-  } finally {
- unlock();
-  }
 
-  ProtonDeliveryHandler linkContext = (ProtonDeliveryHandler) 
link.getContext();
-  if (linkContext != null) {
- linkContext.close(true);
-  }
+ ProtonDeliveryHandler linkContext = (ProtonDeliveryHandler) 
link.getContext();
+ if (linkContext != null) {
+try {
+   linkContext.close(true);
+} catch (Exception e) {
+   log.error(e.getMessage(), e);
--- End diff --

 this should have a static logger method


---


[GitHub] activemq-artemis pull request #2471: ARTEMIS-2207 Page Showing Log.warns for...

2018-12-18 Thread asfgit
Github user asfgit closed the pull request at:

https://github.com/apache/activemq-artemis/pull/2471


---


[GitHub] activemq-artemis pull request #2467: ARTEMIS-2205 Performance improvements o...

2018-12-18 Thread clebertsuconic
Github user clebertsuconic commented on a diff in the pull request:

https://github.com/apache/activemq-artemis/pull/2467#discussion_r242745363
  
--- Diff: 
artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ServerSessionImpl.java
 ---
@@ -159,7 +160,7 @@
 
private final SimpleString managementAddress;
 
-   protected final RoutingContext routingContext = new 
RoutingContextImpl(null);
+   protected final RoutingContext _routingContext;
--- End diff --

@franz1981 I reverted the change that's not needed any longer. 


all amended.


---


[GitHub] activemq-artemis pull request #2471: ARTEMIS-2207 Page Showing Log.warns for...

2018-12-18 Thread clebertsuconic
GitHub user clebertsuconic opened a pull request:

https://github.com/apache/activemq-artemis/pull/2471

ARTEMIS-2207 Page Showing Log.warns for regular acked messages



You can merge this pull request into a Git repository by running:

$ git pull https://github.com/clebertsuconic/activemq-artemis paging

Alternatively you can review and apply these changes as the patch at:

https://github.com/apache/activemq-artemis/pull/2471.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

This closes #2471


commit 9984b638af54ac6c2270604e046d739ed6b6f328
Author: Clebert Suconic 
Date:   2018-12-18T23:17:03Z

ARTEMIS-2207 Page Showing Log.warns for regular acked messages




---


[GitHub] activemq-artemis pull request #2467: ARTEMIS-2205 Performance improvements o...

2018-12-18 Thread clebertsuconic
Github user clebertsuconic commented on a diff in the pull request:

https://github.com/apache/activemq-artemis/pull/2467#discussion_r242727332
  
--- Diff: 
artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ServerSessionImpl.java
 ---
@@ -159,7 +160,7 @@
 
private final SimpleString managementAddress;
 
-   protected final RoutingContext routingContext = new 
RoutingContextImpl(null);
+   protected final RoutingContext _routingContext;
--- End diff --

@franz1981 I don't follow you


---


[GitHub] activemq-artemis pull request #2467: ARTEMIS-2205 Performance improvements o...

2018-12-18 Thread clebertsuconic
Github user clebertsuconic commented on a diff in the pull request:

https://github.com/apache/activemq-artemis/pull/2467#discussion_r242727059
  
--- Diff: 
artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/handler/ExecutorNettyAdapter.java
 ---
@@ -0,0 +1,221 @@
+/*
+ * Copyright 2005-2014 Red Hat, Inc.
+ * Red Hat 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.proton.handler;
+
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+import io.netty.channel.Channel;
+import io.netty.channel.ChannelFuture;
+import io.netty.channel.ChannelPromise;
+import io.netty.channel.EventLoop;
+import io.netty.channel.EventLoopGroup;
+import io.netty.util.concurrent.EventExecutor;
+import io.netty.util.concurrent.Future;
+import io.netty.util.concurrent.ProgressivePromise;
+import io.netty.util.concurrent.Promise;
+import io.netty.util.concurrent.ScheduledFuture;
+import org.apache.activemq.artemis.utils.actors.ArtemisExecutor;
+
+/** Test cases may supply a simple executor instead of the real Netty 
Executor
+ *  On that case this is a simple adapter for what's needed from these 
tests.
+ *  Not intended to be used in production.
+ *
+ *  TODO: This could be refactored out of the main codebase but at a high 
cost.
+ *We may do it some day if we find an easy way that won't clutter 
the code too much.
+ *  */
+public class ExecutorNettyAdapter implements EventLoop {
--- End diff --

@franz1981 this is basically for unit testing, I did not want to invest a 
lot of code on it.


---


[GitHub] activemq-artemis pull request #2467: ARTEMIS-2205 Performance improvements o...

2018-12-18 Thread clebertsuconic
Github user clebertsuconic commented on a diff in the pull request:

https://github.com/apache/activemq-artemis/pull/2467#discussion_r242725348
  
--- Diff: 
artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/ActiveMQProtonRemotingConnection.java
 ---
@@ -119,10 +119,15 @@ public boolean isDestroyed() {
 
@Override
public void disconnect(boolean criticalError) {
-  ErrorCondition errorCondition = new ErrorCondition();
-  errorCondition.setCondition(AmqpSupport.CONNECTION_FORCED);
-  amqpConnection.close(errorCondition);
-  getTransportConnection().close();
+  amqpConnection.runLater(() -> {
+ ErrorCondition errorCondition = new ErrorCondition();
+ errorCondition.setCondition(AmqpSupport.CONNECTION_FORCED);
+ amqpConnection.close(errorCondition);
+ amqpConnection.flush();
+  });
+  amqpConnection.runLater(() -> {
--- End diff --

@franz1981 During my work, the first one was runNow, the second Later. (I 
would accept better names BTW)

later I changed the first to later and forgot the other one :) 


fixing it on my next ammend


---


[GitHub] activemq-artemis issue #2199: ARTEMIS-1996 MappedSequentialFileFactory may c...

2018-12-18 Thread jbertram
Github user jbertram commented on the issue:

https://github.com/apache/activemq-artemis/pull/2199
  
IMO this PR should be closed based on the commits from #2250. @morefuntang, 
can you close it?


---


[GitHub] activemq-artemis issue #2467: ARTEMIS-2205 Performance improvements on AMQP ...

2018-12-18 Thread jbertram
Github user jbertram commented on the issue:

https://github.com/apache/activemq-artemis/pull/2467
  
I've read through this and it looks fine, although I can't say I understood 
it all.  :)


---


[GitHub] activemq-artemis pull request #2467: ARTEMIS-2205 Performance improvements o...

2018-12-18 Thread franz1981
Github user franz1981 commented on a diff in the pull request:

https://github.com/apache/activemq-artemis/pull/2467#discussion_r242700956
  
--- Diff: 
artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ServerSessionImpl.java
 ---
@@ -159,7 +160,7 @@
 
private final SimpleString managementAddress;
 
-   protected final RoutingContext routingContext = new 
RoutingContextImpl(null);
+   protected final RoutingContext _routingContext;
--- End diff --

we can use just `routingContext` name, dropping `_`


---


[GitHub] activemq-artemis pull request #2467: ARTEMIS-2205 Performance improvements o...

2018-12-18 Thread franz1981
Github user franz1981 commented on a diff in the pull request:

https://github.com/apache/activemq-artemis/pull/2467#discussion_r242702260
  
--- Diff: 
artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/handler/ExecutorNettyAdapter.java
 ---
@@ -0,0 +1,221 @@
+/*
+ * Copyright 2005-2014 Red Hat, Inc.
+ * Red Hat 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.proton.handler;
+
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+import io.netty.channel.Channel;
+import io.netty.channel.ChannelFuture;
+import io.netty.channel.ChannelPromise;
+import io.netty.channel.EventLoop;
+import io.netty.channel.EventLoopGroup;
+import io.netty.util.concurrent.EventExecutor;
+import io.netty.util.concurrent.Future;
+import io.netty.util.concurrent.ProgressivePromise;
+import io.netty.util.concurrent.Promise;
+import io.netty.util.concurrent.ScheduledFuture;
+import org.apache.activemq.artemis.utils.actors.ArtemisExecutor;
+
+/** Test cases may supply a simple executor instead of the real Netty 
Executor
+ *  On that case this is a simple adapter for what's needed from these 
tests.
+ *  Not intended to be used in production.
+ *
+ *  TODO: This could be refactored out of the main codebase but at a high 
cost.
+ *We may do it some day if we find an easy way that won't clutter 
the code too much.
+ *  */
+public class ExecutorNettyAdapter implements EventLoop {
--- End diff --

Instead of using `ExecutorNettyAdapter` we couldn't reuse `OrderedExecutor` 
interface adding `inEventLoop()` on it?
`OrderedExecutor::inEventLoop()` could just be `== inHandler()`


---


[GitHub] activemq-artemis pull request #2467: ARTEMIS-2205 Performance improvements o...

2018-12-18 Thread franz1981
Github user franz1981 commented on a diff in the pull request:

https://github.com/apache/activemq-artemis/pull/2467#discussion_r242686500
  
--- Diff: 
artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/ActiveMQProtonRemotingConnection.java
 ---
@@ -119,10 +119,15 @@ public boolean isDestroyed() {
 
@Override
public void disconnect(boolean criticalError) {
-  ErrorCondition errorCondition = new ErrorCondition();
-  errorCondition.setCondition(AmqpSupport.CONNECTION_FORCED);
-  amqpConnection.close(errorCondition);
-  getTransportConnection().close();
+  amqpConnection.runLater(() -> {
+ ErrorCondition errorCondition = new ErrorCondition();
+ errorCondition.setCondition(AmqpSupport.CONNECTION_FORCED);
+ amqpConnection.close(errorCondition);
+ amqpConnection.flush();
+  });
+  amqpConnection.runLater(() -> {
--- End diff --

Probably it is a naive question, but why 2 separate runLater calls instead 
of one?


---


[GitHub] activemq-artemis issue #1793: ARTEMIS-1498: Openwire internal headers should...

2018-12-18 Thread jbertram
Github user jbertram commented on the issue:

https://github.com/apache/activemq-artemis/pull/1793
  
@RaiSaurabh, at this point there are lots of conflicts on this PR. They 
either need to be fixed and this PR can move forward or it needs to be closed.


---


[GitHub] activemq-artemis pull request #2290: Add LGTM code quality badges

2018-12-18 Thread xcorail
Github user xcorail closed the pull request at:

https://github.com/apache/activemq-artemis/pull/2290


---


[GitHub] activemq-artemis issue #2290: Add LGTM code quality badges

2018-12-18 Thread xcorail
Github user xcorail commented on the issue:

https://github.com/apache/activemq-artemis/pull/2290
  
Hello @jbertram 
Done


---


[GitHub] activemq-artemis issue #2290: Add LGTM code quality badges

2018-12-18 Thread jbertram
Github user jbertram commented on the issue:

https://github.com/apache/activemq-artemis/pull/2290
  
I don't think there's currently any plan to merge this. Could you close 
this PR, @xcorail?


---


[GitHub] activemq-artemis pull request #2470: Fixes for alerts from lgtm.com

2018-12-18 Thread jbertram
GitHub user jbertram opened a pull request:

https://github.com/apache/activemq-artemis/pull/2470

Fixes for alerts from lgtm.com 

After reviewing lgtm.com based on #2290 I decided to fix a handful of the 
warnings and errors they reported.

You can merge this pull request into a Git repository by running:

$ git pull https://github.com/jbertram/activemq-artemis lgtm

Alternatively you can review and apply these changes as the patch at:

https://github.com/apache/activemq-artemis/pull/2470.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

This closes #2470


commit 99e69b27a0a117d3c5736968ff1c542d2a57004d
Author: Justin Bertram 
Date:   2018-09-05T18:49:13Z

NO-JIRA fix lgtm.com warnings

Warnings enumerated at

https://lgtm.com/projects/g/apache/activemq-artemis/alerts/?mode=tree=warning

commit e71ff0826cd17544f4b264354ccb54cc033e381e
Author: Justin Bertram 
Date:   2018-09-06T03:04:03Z

NO-JIRA fix lgtm.com errors

Errors enumerated at

https://lgtm.com/projects/g/apache/activemq-artemis/alerts/?mode=tree=error




---


[GitHub] activemq-artemis pull request #2458: ARTEMIS-2199 PagingStore leak when dele...

2018-12-18 Thread jbertram
Github user jbertram commented on a diff in the pull request:

https://github.com/apache/activemq-artemis/pull/2458#discussion_r242640005
  
--- Diff: 
artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/impl/JMSServerManagerImpl.java
 ---
@@ -1719,11 +1720,11 @@ public void callback(SimpleString queueName) throws 
Exception {
   @Override
   public void callback(SimpleString address, SimpleString queueName) 
throws Exception {
  Queue queue = server.locateQueue(address);
- Collection bindings = 
server.getPostOffice().getBindingsForAddress(address).getBindings();
--- End diff --

I opened #2469 as a result of my investigation on the master branch.


---


[GitHub] activemq-artemis pull request #2469: NO-JIRA avoid unnecessary Bindings inst...

2018-12-18 Thread jbertram
GitHub user jbertram opened a pull request:

https://github.com/apache/activemq-artemis/pull/2469

NO-JIRA avoid unnecessary Bindings instance creation

When trying to get the bindings for an address the getBindingsForAddress
method will create a Bindings instance if there are no bindings for the
address. This is unnecessary in most circumstances so use the
lookupBindingsForAddress method instead and check for null.

You can merge this pull request into a Git repository by running:

$ git pull https://github.com/jbertram/activemq-artemis 
avoidBindingsInstance

Alternatively you can review and apply these changes as the patch at:

https://github.com/apache/activemq-artemis/pull/2469.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

This closes #2469


commit 9fe86f3507a4b483a131c0af9ead62d8f77a0efa
Author: Justin Bertram 
Date:   2018-12-18T17:48:12Z

NO-JIRA avoid unnecessary Bindings instance creation

When trying to get the bindings for an address the getBindingsForAddress
method will create a Bindings instance if there are no bindings for the
address. This is unnecessary in most circumstances so use the
lookupBindingsForAddress method instead and check for null.




---


[GitHub] activemq-artemis issue #2466: ARTEMIS-2206 The MQTT consumer reconnection ca...

2018-12-18 Thread clebertsuconic
Github user clebertsuconic commented on the issue:

https://github.com/apache/activemq-artemis/pull/2466
  
If you don't know git, do some googling about squash and interactive rebase.

git push -f will update the Pull Request.


---


[GitHub] activemq-artemis issue #2466: ARTEMIS-2206 The MQTT consumer reconnection ca...

2018-12-18 Thread clebertsuconic
Github user clebertsuconic commented on the issue:

https://github.com/apache/activemq-artemis/pull/2466
  
you do this on your branch:

git rebase -i HEAD~4

for each line, squash all 3 later commits into the first one,

Once you squash you will be sent to a vim (or another editor you 
configured) where you can change the tittle.

make the title reflect the JIRA,



git push origin -f (your branch name)


That will be enough to update this PR.


---


[GitHub] activemq-artemis pull request #1761: [ARTEMIS-1527] - [Artemis Testsuite] Ac...

2018-12-18 Thread JiriOndrusek
Github user JiriOndrusek closed the pull request at:

https://github.com/apache/activemq-artemis/pull/1761


---


[GitHub] activemq-artemis issue #1761: [ARTEMIS-1527] - [Artemis Testsuite] ActiveMQM...

2018-12-18 Thread JiriOndrusek
Github user JiriOndrusek commented on the issue:

https://github.com/apache/activemq-artemis/pull/1761
  
I agree, closing as requested in previous comment.


---


[GitHub] activemq-artemis issue #1761: [ARTEMIS-1527] - [Artemis Testsuite] ActiveMQM...

2018-12-18 Thread jbertram
Github user jbertram commented on the issue:

https://github.com/apache/activemq-artemis/pull/1761
  
@JiriOndrusek, I don't think this is going to get merged. Can you go ahead 
and close this PR?


---


Re: HEADS-UP ActiveMQ artemis 2.6.4 release

2018-12-18 Thread Clebert Suconic
I was going to release today, however these tests are failing on the
2.6.x branch:


org.apache.activemq.artemis.tests.integration.management.QueueControlTest.testGetMessagesAdded[durable=false]
org.apache.activemq.artemis.tests.integration.openwire.OpenWireGroupingTest.testGrouping[core-send=true
core-receive=true]
org.apache.activemq.artemis.tests.integration.openwire.OpenWireGroupingTest.testGrouping[core-send=false
core-receive=true]
org.apache.activemq.artemis.tests.integration.openwire.cluster.TemporaryQueueClusterTest.testClusteredQueue




On Tue, Dec 18, 2018 at 6:21 AM Christopher Shannon
 wrote:
>
> I agree that 2.7.0 can wait until January at this point because of the
> holidays coming up for a lot of people however it is way past due in my
> opinion.
>
> In general I would like to see Artemis released much more frequently than
> it currently is.  Artemis is very active with constant new features and bug
> fixes so we should be releasing consistently to get things out there so
> people can use them.  With as much stuff going into it every day we could
> probably do something like a monthly release and have plenty to show for it.
>
> I don't really see a reason to hold up a release for any new feature (bug
> fixes are different of course) because there are already so many features
> that are done that haven't been released.  For example, I added support for
> changing the defaultConsumerWindowSize per address back in October and at
> least 3 people have asked about that feature and I keep having to tell them
> it's not out yet.
>
> If AMQP large message support isn't quite ready then no big deal...you just
> put it into 2.8.0 and release it relatively soon after.  There's no reason
> a feature has to be tied to a specific version when you can always just
> increase the version number by 1 (the exception being breaking changes
> obviously and major things that would make more sense in a major version
> number change)
>
> On Mon, Dec 17, 2018 at 1:43 PM Clebert Suconic 
> wrote:
>
> > Thanks.  i had a heads up before on another thread but I couldn’t do
> > because of my workload on the task I was working on.
> >
> >
> > I will cut today and the vote thread sent tomorrow morning or later
> > tonight.
> >
> > I personally want 2.7.0 out early next year.  I will work proactively on
> > that (and welcome anyone’s help on that)
> >
> > It would be nice to have large message streamed in AMQP as we convert to
> > core right now. That’s the main thing I held a 2.7.0 release before.  If I
> > can’t do it I will still do it.  But if anyone is willing to help here it
> > would be awesome.
> >
> >
> > On Mon, Dec 17, 2018 at 11:57 AM Robbie Gemmell 
> > wrote:
> >
> > > I'd say it has already been too long since the last one so I wouldnt
> > > wait until next year. A heads up is nice, and somewhat required when
> > > its been a long cycle and especially so if previous heads up have been
> > > missed. In this case I'd personally say it would be fine to proceed
> > > even later today if it seems ready and noone specifically objects, so
> > > it is out before people start to disappear for holidays. Other
> > > versions numbers are still available if anyone needs to do another
> > > release after.
> > >
> > > Robbie
> > >
> > > On Mon, 17 Dec 2018 at 16:03, Clebert Suconic  > >
> > > wrote:
> > > >
> > > > Would be too bad if I cut this tomorrow? So we have time for a vote
> > > before
> > > > the Christmas week.  Or anyone would rather have it next year ?
> > > >
> > > > I had promised few weeks back but i was busy with a big chunk of work
> > > > around performance on AMQP.
> > > > --
> > > > Clebert Suconic
> > >
> > --
> > Clebert Suconic
> >



-- 
Clebert Suconic


[GitHub] activemq-artemis issue #2466: ARTEMIS-2206 The MQTT consumer reconnection ca...

2018-12-18 Thread onlyMIT
Github user onlyMIT commented on the issue:

https://github.com/apache/activemq-artemis/pull/2466
  
@clebertsuconic this is my first pull request on GitHub。Thank you for 
your understanding, I will try to use JIRA to submit the code, if you find the 
problem, I hope you correct me.


---


[GitHub] activemq-artemis issue #2468: Add CR in sanity check

2018-12-18 Thread jbertram
Github user jbertram commented on the issue:

https://github.com/apache/activemq-artemis/pull/2468
  
Could you create a JIRA for this at 
https://issues.apache.org/jira/projects/ARTEMIS and also add a test to 
reproduce the failure you were seeing without the fix? Something simple in 
`org.apache.activemq.artemis.tests.integration.stomp.StompTest` should suffice.


---


[GitHub] activemq-artemis pull request #2466: ARTEMIS-2206 The MQTT consumer reconnec...

2018-12-18 Thread onlyMIT
Github user onlyMIT commented on a diff in the pull request:

https://github.com/apache/activemq-artemis/pull/2466#discussion_r242583621
  
--- Diff: 
artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java
 ---
@@ -113,32 +113,7 @@
 import org.apache.activemq.artemis.core.security.SecurityAuth;
 import org.apache.activemq.artemis.core.security.SecurityStore;
 import org.apache.activemq.artemis.core.security.impl.SecurityStoreImpl;
-import org.apache.activemq.artemis.core.server.ActivateCallback;
--- End diff --

Thanks, this is my IDE problem, I will pay attention to it.


---


[GitHub] activemq-artemis pull request #2468: Add CR in sanity check

2018-12-18 Thread BiNZGi
GitHub user BiNZGi opened a pull request:

https://github.com/apache/activemq-artemis/pull/2468

Add CR in sanity check

Specified in 
https://stomp.github.io/stomp-specification-1.2.html#STOMP_Frames also carriage 
return (octet 13) is allowed:

> The frame starts with a command string terminated by an end-of-line 
(EOL), which consists of an OPTIONAL carriage return (octet 13) followed by a 
REQUIRED line feed (octet 10).

You can merge this pull request into a Git repository by running:

$ git pull https://github.com/BiNZGi/activemq-artemis patch-2

Alternatively you can review and apply these changes as the patch at:

https://github.com/apache/activemq-artemis/pull/2468.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

This closes #2468


commit 30a45a5b8f591fcad3eb9c105fffbdf6b4986cfa
Author: BiNZGi 
Date:   2018-12-18T15:29:25Z

Add CR in sanity check

Specified in 
https://stomp.github.io/stomp-specification-1.2.html#STOMP_Frames also carriage 
return (octet 13) is allowed.




---


[GitHub] activemq-artemis pull request #2466: ARTEMIS-2206 The MQTT consumer reconnec...

2018-12-18 Thread onlyMIT
Github user onlyMIT commented on a diff in the pull request:

https://github.com/apache/activemq-artemis/pull/2466#discussion_r242582946
  
--- Diff: 
artemis-protocols/artemis-mqtt-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/mqtt/MQTTSubscriptionManager.java
 ---
@@ -194,12 +191,13 @@ private synchronized void removeSubscription(String 
address) throws Exception {
   SimpleString internalQueueName = 
getQueueNameForTopic(internalAddress);
   session.getSessionState().removeSubscription(address);
 
-
-  ServerConsumer consumer = consumers.get(address);
+  Set queueConsumers = 
session.getServer().queueConsumersQuery(internalQueueName);
--- End diff --

In the ‘queueConsumersQuery’ method, use 'queueName' to query 'Binding' 
and get a queue through ‘Binding’. I think I am getting all the consumers 
in the specified queue, not all consumers at the same address.You can check the 
details of the 'queueConsumersQuery' method.
In the ‘ActiveMQServerImpl.destroyQueue’ method, the number of 
consumers on a queue is also obtained in this way.Originally I wanted to put 
the shutdown consumer code here, and later found that there were multiple calls 
to the ‘ActiveMQServerImpl.destroyQueue’ method, and I abandoned the idea 
of putting the consumer code off here.


---


[GitHub] activemq-artemis issue #2466: ARTEMIS-2206 The MQTT consumer reconnection ca...

2018-12-18 Thread clebertsuconic
Github user clebertsuconic commented on the issue:

https://github.com/apache/activemq-artemis/pull/2466
  
Please... squash your commits, and use the JIRA on the commit.

It's kind of hard for me to review your changes here.


what I saw on the first commit makes this a nogo.. but I didn't know if you 
fixed it on a later commit or not?


---


[GitHub] activemq-artemis pull request #2466: ARTEMIS-2206 The MQTT consumer reconnec...

2018-12-18 Thread clebertsuconic
Github user clebertsuconic commented on a diff in the pull request:

https://github.com/apache/activemq-artemis/pull/2466#discussion_r242541448
  
--- Diff: 
artemis-protocols/artemis-mqtt-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/mqtt/MQTTSubscriptionManager.java
 ---
@@ -194,12 +191,13 @@ private synchronized void removeSubscription(String 
address) throws Exception {
   SimpleString internalQueueName = 
getQueueNameForTopic(internalAddress);
   session.getSessionState().removeSubscription(address);
 
-
-  ServerConsumer consumer = consumers.get(address);
+  Set queueConsumers = 
session.getServer().queueConsumersQuery(internalQueueName);
--- End diff --

I think this is wrong. You should only check for consumers on this Session.

Your logic is closing every consumer to the same address. You keep multiple 
connections and you have a failure.


---


[GitHub] activemq-artemis pull request #2466: ARTEMIS-2206 The MQTT consumer reconnec...

2018-12-18 Thread clebertsuconic
Github user clebertsuconic commented on a diff in the pull request:

https://github.com/apache/activemq-artemis/pull/2466#discussion_r242540859
  
--- Diff: 
artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java
 ---
@@ -113,32 +113,7 @@
 import org.apache.activemq.artemis.core.security.SecurityAuth;
 import org.apache.activemq.artemis.core.security.SecurityStore;
 import org.apache.activemq.artemis.core.security.impl.SecurityStoreImpl;
-import org.apache.activemq.artemis.core.server.ActivateCallback;
--- End diff --

This will fail checkstyle. no * imports


---


Re: HEADS-UP ActiveMQ artemis 2.6.4 release

2018-12-18 Thread Christopher Shannon
I agree that 2.7.0 can wait until January at this point because of the
holidays coming up for a lot of people however it is way past due in my
opinion.

In general I would like to see Artemis released much more frequently than
it currently is.  Artemis is very active with constant new features and bug
fixes so we should be releasing consistently to get things out there so
people can use them.  With as much stuff going into it every day we could
probably do something like a monthly release and have plenty to show for it.

I don't really see a reason to hold up a release for any new feature (bug
fixes are different of course) because there are already so many features
that are done that haven't been released.  For example, I added support for
changing the defaultConsumerWindowSize per address back in October and at
least 3 people have asked about that feature and I keep having to tell them
it's not out yet.

If AMQP large message support isn't quite ready then no big deal...you just
put it into 2.8.0 and release it relatively soon after.  There's no reason
a feature has to be tied to a specific version when you can always just
increase the version number by 1 (the exception being breaking changes
obviously and major things that would make more sense in a major version
number change)

On Mon, Dec 17, 2018 at 1:43 PM Clebert Suconic 
wrote:

> Thanks.  i had a heads up before on another thread but I couldn’t do
> because of my workload on the task I was working on.
>
>
> I will cut today and the vote thread sent tomorrow morning or later
> tonight.
>
> I personally want 2.7.0 out early next year.  I will work proactively on
> that (and welcome anyone’s help on that)
>
> It would be nice to have large message streamed in AMQP as we convert to
> core right now. That’s the main thing I held a 2.7.0 release before.  If I
> can’t do it I will still do it.  But if anyone is willing to help here it
> would be awesome.
>
>
> On Mon, Dec 17, 2018 at 11:57 AM Robbie Gemmell 
> wrote:
>
> > I'd say it has already been too long since the last one so I wouldnt
> > wait until next year. A heads up is nice, and somewhat required when
> > its been a long cycle and especially so if previous heads up have been
> > missed. In this case I'd personally say it would be fine to proceed
> > even later today if it seems ready and noone specifically objects, so
> > it is out before people start to disappear for holidays. Other
> > versions numbers are still available if anyone needs to do another
> > release after.
> >
> > Robbie
> >
> > On Mon, 17 Dec 2018 at 16:03, Clebert Suconic  >
> > wrote:
> > >
> > > Would be too bad if I cut this tomorrow? So we have time for a vote
> > before
> > > the Christmas week.  Or anyone would rather have it next year ?
> > >
> > > I had promised few weeks back but i was busy with a big chunk of work
> > > around performance on AMQP.
> > > --
> > > Clebert Suconic
> >
> --
> Clebert Suconic
>


[GitHub] activemq-artemis issue #2466: NO-JIRA The MQTT consumer reconnection caused ...

2018-12-18 Thread onlyMIT
Github user onlyMIT commented on the issue:

https://github.com/apache/activemq-artemis/pull/2466
  
@michaelandrepearce  JIRA has been created : 
https://issues.apache.org/jira/projects/ARTEMIS/issues/ARTEMIS-2206?filter=addedrecently

Regarding automated testing, in addition to the simulation method that I 
said, do you have any better suggestions?



---


[GitHub] activemq-artemis issue #2466: NO-JIRA The MQTT consumer reconnection caused ...

2018-12-18 Thread michaelandrepearce
Github user michaelandrepearce commented on the issue:

https://github.com/apache/activemq-artemis/pull/2466
  
This looks like it needs a JIRA and some automated tests.


---