Return-Path: X-Original-To: apmail-drill-issues-archive@minotaur.apache.org Delivered-To: apmail-drill-issues-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 1E3F118785 for ; Wed, 23 Dec 2015 07:05:47 +0000 (UTC) Received: (qmail 2161 invoked by uid 500); 23 Dec 2015 07:05:47 -0000 Delivered-To: apmail-drill-issues-archive@drill.apache.org Received: (qmail 2140 invoked by uid 500); 23 Dec 2015 07:05:46 -0000 Mailing-List: contact issues-help@drill.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@drill.apache.org Delivered-To: mailing list issues@drill.apache.org Received: (qmail 2129 invoked by uid 99); 23 Dec 2015 07:05:46 -0000 Received: from arcas.apache.org (HELO arcas) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 23 Dec 2015 07:05:46 +0000 Received: from arcas.apache.org (localhost [127.0.0.1]) by arcas (Postfix) with ESMTP id B18D42C0451 for ; Wed, 23 Dec 2015 07:05:46 +0000 (UTC) Date: Wed, 23 Dec 2015 07:05:46 +0000 (UTC) From: "PIPELINE (JIRA)" To: issues@drill.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (DRILL-4216) Aggregate Window Function COUNT() With GROUP BY Clause expected: range(0, 32768) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/DRILL-4216?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15069334#comment-15069334 ] PIPELINE commented on DRILL-4216: --------------------------------- *drillbit.log* 2015-12-23 14:52:40,246 [2985bb47-1a0f-980d-b659-4d09abb877f7:foreman] INFO o.a.drill.exec.work.foreman.Foreman - Query text for query id 2985bb47-1a0f-980d-b659-4d09abb877f7: select count(*) `count`,count(wi.cf1.q5) over() total from hbase.web_initial_20151223 wi group by wi.cf1.q5 limit 3 2015-12-23 14:52:40,578 [2985bb47-1a0f-980d-b659-4d09abb877f7:foreman] INFO o.a.d.e.s.hbase.TableStatsCalculator - Region size calculation disabled. 2015-12-23 14:52:41,076 [2985bb47-1a0f-980d-b659-4d09abb877f7:frag:3:0] INFO o.a.d.e.w.fragment.FragmentExecutor - 2985bb47-1a0f-980d-b659-4d09abb877f7:3:0: State change requested AWAITING_ALLOCATION --> RUNNING 2015-12-23 14:52:41,076 [2985bb47-1a0f-980d-b659-4d09abb877f7:frag:3:0] INFO o.a.d.e.w.f.FragmentStatusReporter - 2985bb47-1a0f-980d-b659-4d09abb877f7:3:0: State to report: RUNNING 2015-12-23 14:52:41,115 [2985bb47-1a0f-980d-b659-4d09abb877f7:frag:2:0] INFO o.a.d.e.p.i.p.PartitionSenderRootExec - Preliminary number of sending threads is: 1 2015-12-23 14:52:41,115 [2985bb47-1a0f-980d-b659-4d09abb877f7:frag:2:0] INFO o.a.d.e.w.fragment.FragmentExecutor - 2985bb47-1a0f-980d-b659-4d09abb877f7:2:0: State change requested AWAITING_ALLOCATION --> RUNNING 2015-12-23 14:52:41,115 [2985bb47-1a0f-980d-b659-4d09abb877f7:frag:2:0] INFO o.a.d.e.w.f.FragmentStatusReporter - 2985bb47-1a0f-980d-b659-4d09abb877f7:2:0: State to report: RUNNING 2015-12-23 14:52:41,123 [2985bb47-1a0f-980d-b659-4d09abb877f7:frag:1:0] INFO o.a.d.e.w.fragment.FragmentExecutor - 2985bb47-1a0f-980d-b659-4d09abb877f7:1:0: State change requested AWAITING_ALLOCATION --> RUNNING 2015-12-23 14:52:41,123 [2985bb47-1a0f-980d-b659-4d09abb877f7:frag:1:0] INFO o.a.d.e.w.f.FragmentStatusReporter - 2985bb47-1a0f-980d-b659-4d09abb877f7:1:0: State to report: RUNNING 2015-12-23 14:52:41,139 [2985bb47-1a0f-980d-b659-4d09abb877f7:frag:0:0] INFO o.a.d.e.w.fragment.FragmentExecutor - 2985bb47-1a0f-980d-b659-4d09abb877f7:0:0: State change requested AWAITING_ALLOCATION --> RUNNING 2015-12-23 14:52:41,140 [2985bb47-1a0f-980d-b659-4d09abb877f7:frag:0:0] INFO o.a.d.e.w.f.FragmentStatusReporter - 2985bb47-1a0f-980d-b659-4d09abb877f7:0:0: State to report: RUNNING 2015-12-23 14:52:42,420 [2985bb47-1a0f-980d-b659-4d09abb877f7:frag:3:0] INFO o.a.d.e.w.fragment.FragmentExecutor - 2985bb47-1a0f-980d-b659-4d09abb877f7:3:0: State change requested RUNNING --> FINISHED 2015-12-23 14:52:42,420 [2985bb47-1a0f-980d-b659-4d09abb877f7:frag:3:0] INFO o.a.d.e.w.f.FragmentStatusReporter - 2985bb47-1a0f-980d-b659-4d09abb877f7:3:0: State to report: FINISHED 2015-12-23 14:52:42,477 [2985bb47-1a0f-980d-b659-4d09abb877f7:frag:2:0] INFO o.a.d.e.w.fragment.FragmentExecutor - 2985bb47-1a0f-980d-b659-4d09abb877f7:2:0: State change requested RUNNING --> FINISHED 2015-12-23 14:52:42,478 [2985bb47-1a0f-980d-b659-4d09abb877f7:frag:2:0] INFO o.a.d.e.w.f.FragmentStatusReporter - 2985bb47-1a0f-980d-b659-4d09abb877f7:2:0: State to report: FINISHED 2015-12-23 14:52:42,481 [2985bb47-1a0f-980d-b659-4d09abb877f7:frag:1:0] INFO o.a.d.e.w.fragment.FragmentExecutor - 2985bb47-1a0f-980d-b659-4d09abb877f7:1:0: State change requested RUNNING --> FINISHED 2015-12-23 14:52:42,481 [2985bb47-1a0f-980d-b659-4d09abb877f7:frag:1:0] INFO o.a.d.e.w.f.FragmentStatusReporter - 2985bb47-1a0f-980d-b659-4d09abb877f7:1:0: State to report: FINISHED 2015-12-23 14:52:42,513 [2985bb47-1a0f-980d-b659-4d09abb877f7:frag:0:0] INFO o.a.d.e.w.fragment.FragmentExecutor - 2985bb47-1a0f-980d-b659-4d09abb877f7:0:0: State change requested RUNNING --> FAILED 2015-12-23 14:52:42,513 [2985bb47-1a0f-980d-b659-4d09abb877f7:frag:0:0] INFO o.a.d.e.w.fragment.FragmentExecutor - 2985bb47-1a0f-980d-b659-4d09abb877f7:0:0: State change requested FAILED --> FAILED 2015-12-23 14:52:42,514 [2985bb47-1a0f-980d-b659-4d09abb877f7:frag:0:0] INFO o.a.d.e.w.fragment.FragmentExecutor - 2985bb47-1a0f-980d-b659-4d09abb877f7:0:0: State change requested FAILED --> FAILED 2015-12-23 14:52:42,514 [2985bb47-1a0f-980d-b659-4d09abb877f7:frag:0:0] INFO o.a.d.e.w.fragment.FragmentExecutor - 2985bb47-1a0f-980d-b659-4d09abb877f7:0:0: State change requested FAILED --> FINISHED 2015-12-23 14:52:42,516 [2985bb47-1a0f-980d-b659-4d09abb877f7:frag:0:0] ERROR o.a.d.e.w.fragment.FragmentExecutor - SYSTEM ERROR: IndexOutOfBoundsException: index: 0, length: 102516 (expected: range(0, 32768)) Fragment 0:0 [Error Id: f811b575-d63e-4f2a-ab84-666cf162f2f8 on slave1.hadoop:31010] org.apache.drill.common.exceptions.UserException: SYSTEM ERROR: IndexOutOfBoundsException: index: 0, length: 102516 (expected: range(0, 32768)) Fragment 0:0 [Error Id: f811b575-d63e-4f2a-ab84-666cf162f2f8 on slave1.hadoop:31010] at org.apache.drill.common.exceptions.UserException$Builder.build(UserException.java:534) ~[drill-common-1.4.0.jar:1.4.0] at org.apache.drill.exec.work.fragment.FragmentExecutor.sendFinalState(FragmentExecutor.java:321) [drill-java-exec-1.4.0.jar:1.4.0] at org.apache.drill.exec.work.fragment.FragmentExecutor.cleanup(FragmentExecutor.java:184) [drill-java-exec-1.4.0.jar:1.4.0] at org.apache.drill.exec.work.fragment.FragmentExecutor.run(FragmentExecutor.java:290) [drill-java-exec-1.4.0.jar:1.4.0] at org.apache.drill.common.SelfCleaningRunnable.run(SelfCleaningRunnable.java:38) [drill-common-1.4.0.jar:1.4.0] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_80] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_80] at java.lang.Thread.run(Thread.java:745) [na:1.7.0_80] Caused by: java.lang.IndexOutOfBoundsException: index: 0, length: 102516 (expected: range(0, 32768)) at io.netty.buffer.AbstractByteBuf.checkIndex(AbstractByteBuf.java:1134) ~[netty-buffer-4.0.27.Final.jar:4.0.27.Final] at io.netty.buffer.PooledUnsafeDirectByteBuf.setBytes(PooledUnsafeDirectByteBuf.java:250) ~[netty-buffer-4.0.27.Final.jar:4.0.27.Final] at io.netty.buffer.WrappedByteBuf.setBytes(WrappedByteBuf.java:378) ~[netty-buffer-4.0.27.Final.jar:4.0.27.Final] at io.netty.buffer.UnsafeDirectLittleEndian.setBytes(UnsafeDirectLittleEndian.java:26) ~[drill-memory-base-1.4.0.jar:4.0.27.Final] at io.netty.buffer.DrillBuf.setBytes(DrillBuf.java:685) ~[drill-memory-base-1.4.0.jar:4.0.27.Final] at org.apache.drill.exec.vector.UInt4Vector.reAlloc(UInt4Vector.java:219) ~[vector-1.4.0.jar:1.4.0] at org.apache.drill.exec.vector.UInt4Vector$Mutator.setSafe(UInt4Vector.java:412) ~[vector-1.4.0.jar:1.4.0] at org.apache.drill.exec.vector.VarBinaryVector$Mutator.setSafe(VarBinaryVector.java:519) ~[vector-1.4.0.jar:1.4.0] at org.apache.drill.exec.vector.NullableVarBinaryVector$Mutator.fillEmpties(NullableVarBinaryVector.java:457) ~[vector-1.4.0.jar:1.4.0] at org.apache.drill.exec.vector.NullableVarBinaryVector$Mutator.setValueCount(NullableVarBinaryVector.java:568) ~[vector-1.4.0.jar:1.4.0] at org.apache.drill.exec.test.generated.WindowFramerGen61.doWork(DefaultFrameTemplate.java:137) ~[na:na] at org.apache.drill.exec.physical.impl.window.WindowFrameRecordBatch.innerNext(WindowFrameRecordBatch.java:177) ~[drill-java-exec-1.4.0.jar:1.4.0] at org.apache.drill.exec.record.AbstractRecordBatch.next(AbstractRecordBatch.java:162) ~[drill-java-exec-1.4.0.jar:1.4.0] at org.apache.drill.exec.record.AbstractRecordBatch.next(AbstractRecordBatch.java:119) ~[drill-java-exec-1.4.0.jar:1.4.0] at org.apache.drill.exec.record.AbstractRecordBatch.next(AbstractRecordBatch.java:109) ~[drill-java-exec-1.4.0.jar:1.4.0] at org.apache.drill.exec.record.AbstractSingleRecordBatch.innerNext(AbstractSingleRecordBatch.java:51) ~[drill-java-exec-1.4.0.jar:1.4.0] at org.apache.drill.exec.physical.impl.project.ProjectRecordBatch.innerNext(ProjectRecordBatch.java:132) ~[drill-java-exec-1.4.0.jar:1.4.0] at org.apache.drill.exec.record.AbstractRecordBatch.next(AbstractRecordBatch.java:162) ~[drill-java-exec-1.4.0.jar:1.4.0] at org.apache.drill.exec.record.AbstractRecordBatch.next(AbstractRecordBatch.java:119) ~[drill-java-exec-1.4.0.jar:1.4.0] at org.apache.drill.exec.record.AbstractRecordBatch.next(AbstractRecordBatch.java:109) ~[drill-java-exec-1.4.0.jar:1.4.0] at org.apache.drill.exec.record.AbstractSingleRecordBatch.innerNext(AbstractSingleRecordBatch.java:51) ~[drill-java-exec-1.4.0.jar:1.4.0] at org.apache.drill.exec.physical.impl.limit.LimitRecordBatch.innerNext(LimitRecordBatch.java:115) ~[drill-java-exec-1.4.0.jar:1.4.0] at org.apache.drill.exec.record.AbstractRecordBatch.next(AbstractRecordBatch.java:162) ~[drill-java-exec-1.4.0.jar:1.4.0] at org.apache.drill.exec.record.AbstractRecordBatch.next(AbstractRecordBatch.java:119) ~[drill-java-exec-1.4.0.jar:1.4.0] at org.apache.drill.exec.record.AbstractRecordBatch.next(AbstractRecordBatch.java:109) ~[drill-java-exec-1.4.0.jar:1.4.0] at org.apache.drill.exec.record.AbstractSingleRecordBatch.innerNext(AbstractSingleRecordBatch.java:51) ~[drill-java-exec-1.4.0.jar:1.4.0] at org.apache.drill.exec.physical.impl.svremover.RemovingRecordBatch.innerNext(RemovingRecordBatch.java:94) ~[drill-java-exec-1.4.0.jar:1.4.0] at org.apache.drill.exec.record.AbstractRecordBatch.next(AbstractRecordBatch.java:162) ~[drill-java-exec-1.4.0.jar:1.4.0] at org.apache.drill.exec.record.AbstractRecordBatch.next(AbstractRecordBatch.java:119) ~[drill-java-exec-1.4.0.jar:1.4.0] at org.apache.drill.exec.record.AbstractRecordBatch.next(AbstractRecordBatch.java:109) ~[drill-java-exec-1.4.0.jar:1.4.0] at org.apache.drill.exec.record.AbstractSingleRecordBatch.innerNext(AbstractSingleRecordBatch.java:51) ~[drill-java-exec-1.4.0.jar:1.4.0] at org.apache.drill.exec.physical.impl.project.ProjectRecordBatch.innerNext(ProjectRecordBatch.java:132) ~[drill-java-exec-1.4.0.jar:1.4.0] at org.apache.drill.exec.record.AbstractRecordBatch.next(AbstractRecordBatch.java:162) ~[drill-java-exec-1.4.0.jar:1.4.0] at org.apache.drill.exec.physical.impl.BaseRootExec.next(BaseRootExec.java:104) ~[drill-java-exec-1.4.0.jar:1.4.0] at org.apache.drill.exec.physical.impl.ScreenCreator$ScreenRoot.innerNext(ScreenCreator.java:81) ~[drill-java-exec-1.4.0.jar:1.4.0] at org.apache.drill.exec.physical.impl.BaseRootExec.next(BaseRootExec.java:94) ~[drill-java-exec-1.4.0.jar:1.4.0] at org.apache.drill.exec.work.fragment.FragmentExecutor$1.run(FragmentExecutor.java:256) ~[drill-java-exec-1.4.0.jar:1.4.0] at org.apache.drill.exec.work.fragment.FragmentExecutor$1.run(FragmentExecutor.java:250) ~[drill-java-exec-1.4.0.jar:1.4.0] at java.security.AccessController.doPrivileged(Native Method) ~[na:1.7.0_80] at javax.security.auth.Subject.doAs(Subject.java:415) ~[na:1.7.0_80] at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657) ~[hadoop-common-2.7.1.jar:na] at org.apache.drill.exec.work.fragment.FragmentExecutor.run(FragmentExecutor.java:250) [drill-java-exec-1.4.0.jar:1.4.0] ... 4 common frames omitted 2015-12-23 14:52:42,543 [CONTROL-rpc-event-queue] WARN o.a.drill.exec.work.foreman.Foreman - Dropping request to move to COMPLETED state as query is already at FAILED state (which is terminal). 2015-12-23 14:52:42,543 [CONTROL-rpc-event-queue] WARN o.a.d.e.w.b.ControlMessageHandler - Dropping request to cancel fragment. 2985bb47-1a0f-980d-b659-4d09abb877f7:0:0 does not exist. > Aggregate Window Function COUNT() With GROUP BY Clause expected: range(0, 32768) > -------------------------------------------------------------------------------- > > Key: DRILL-4216 > URL: https://issues.apache.org/jira/browse/DRILL-4216 > Project: Apache Drill > Issue Type: Bug > Components: Functions - Drill > Affects Versions: 1.3.0 > Environment: Hadoop-2.5.2 > Hbase-0.9.15 > Java-1.7.0_85 > Reporter: PIPELINE > Assignee: Deneche A. Hakim > > *When column is row_key,it work well !* > 0: jdbc:drill:> select count(row_key) over() from hbase.web_initial_20151222 wi group by row_key limit 3; > +---------+ > | EXPR$0 | > +---------+ > | 102906 | > | 102906 | > | 102906 | > +---------+ > 3 rows selected (1.645 seconds) > *When column is Hbase.Talbename.ColumnFamily.Qualify, and count(column) less than 32768,it work well !* > 0: jdbc:drill:> select count(wi.cf1.q5) over() from hbase.web_initial_20151214 wi group by wi.cf1.q5 limit 3; > +---------+ > | EXPR$0 | > +---------+ > | 10383 | > | 10383 | > | 10383 | > +---------+ > 3 rows selected (1.044 seconds) > {color:red} > When column is Hbase.Talbename.ColumnFamily.Qualify, and count(column) more than 32768,IndexOutOfBoundsException > {color} > 0: jdbc:drill:> select count(wi.cf1.q5) over() from hbase.web_initial_20151222 wi group by wi.cf1.q5 limit 3; > Error: SYSTEM ERROR: IndexOutOfBoundsException: index: 0, length: 62784 (expected: range(0, 32768)) > Fragment 0:0 > [Error Id: 77406a8a-8389-4f1b-af6c-d26d811379b7 on slave4.hadoop:31010] (state=,code=0) > java.sql.SQLException: SYSTEM ERROR: IndexOutOfBoundsException: index: 0, length: 62784 (expected: range(0, 32768)) > Fragment 0:0 > [Error Id: 77406a8a-8389-4f1b-af6c-d26d811379b7 on slave4.hadoop:31010] > at org.apache.drill.jdbc.impl.DrillCursor.nextRowInternally(DrillCursor.java:247) > at org.apache.drill.jdbc.impl.DrillCursor.next(DrillCursor.java:320) > at net.hydromatic.avatica.AvaticaResultSet.next(AvaticaResultSet.java:187) > at org.apache.drill.jdbc.impl.DrillResultSetImpl.next(DrillResultSetImpl.java:160) > at sqlline.IncrementalRows.hasNext(IncrementalRows.java:62) > at sqlline.TableOutputFormat$ResizingRowsProvider.next(TableOutputFormat.java:87) > at sqlline.TableOutputFormat.print(TableOutputFormat.java:118) > at sqlline.SqlLine.print(SqlLine.java:1593) > at sqlline.Commands.execute(Commands.java:852) > at sqlline.Commands.sql(Commands.java:751) > at sqlline.SqlLine.dispatch(SqlLine.java:746) > at sqlline.SqlLine.begin(SqlLine.java:621) > at sqlline.SqlLine.start(SqlLine.java:375) > at sqlline.SqlLine.main(SqlLine.java:268) > Caused by: org.apache.drill.common.exceptions.UserRemoteException: SYSTEM ERROR: IndexOutOfBoundsException: index: 0, length: 62784 (expected: range(0, 32768)) > Fragment 0:0 > [Error Id: 77406a8a-8389-4f1b-af6c-d26d811379b7 on slave4.hadoop:31010] > at org.apache.drill.exec.rpc.user.QueryResultHandler.resultArrived(QueryResultHandler.java:118) > at org.apache.drill.exec.rpc.user.UserClient.handleReponse(UserClient.java:112) > at org.apache.drill.exec.rpc.BasicClientWithConnection.handle(BasicClientWithConnection.java:47) > at org.apache.drill.exec.rpc.BasicClientWithConnection.handle(BasicClientWithConnection.java:32) > at org.apache.drill.exec.rpc.RpcBus.handle(RpcBus.java:69) > at org.apache.drill.exec.rpc.RpcBus$RequestEvent.run(RpcBus.java:400) > at org.apache.drill.common.SerializedExecutor$RunnableProcessor.run(SerializedExecutor.java:105) > at org.apache.drill.exec.rpc.RpcBus$SameExecutor.execute(RpcBus.java:264) > at org.apache.drill.common.SerializedExecutor.execute(SerializedExecutor.java:142) > at org.apache.drill.exec.rpc.RpcBus$InboundHandler.decode(RpcBus.java:298) > at org.apache.drill.exec.rpc.RpcBus$InboundHandler.decode(RpcBus.java:269) > at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89) > at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:339) > at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:324) > at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:254) > at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:339) > at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:324) > at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) > at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:339) > at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:324) > at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:242) > at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:339) > at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:324) > at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86) > at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:339) > at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:324) > at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:847) > at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:618) > at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:329) > at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:250) > at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:111) > at java.lang.Thread.run(Thread.java:745) -- This message was sent by Atlassian JIRA (v6.3.4#6332)