Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id B0A60200C06 for ; Fri, 27 Jan 2017 07:32:36 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id AF509160B5B; Fri, 27 Jan 2017 06:32:36 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 83012160B47 for ; Fri, 27 Jan 2017 07:32:35 +0100 (CET) Received: (qmail 54868 invoked by uid 500); 27 Jan 2017 06:32:34 -0000 Mailing-List: contact issues-help@ambari.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ambari.apache.org Delivered-To: mailing list issues@ambari.apache.org Received: (qmail 54859 invoked by uid 99); 27 Jan 2017 06:32:34 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 27 Jan 2017 06:32:34 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id D1ED5C1988 for ; Fri, 27 Jan 2017 06:32:33 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -1.198 X-Spam-Level: X-Spam-Status: No, score=-1.198 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, KAM_LAZY_DOMAIN_SECURITY=1, RP_MATCHES_RCVD=-2.999, WEIRD_PORT=0.001] autolearn=disabled Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id 7_cJj0NmEkcb for ; Fri, 27 Jan 2017 06:32:32 +0000 (UTC) Received: from mailrelay1-us-west.apache.org (mailrelay1-us-west.apache.org [209.188.14.139]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with ESMTP id D03525F472 for ; Fri, 27 Jan 2017 06:32:31 +0000 (UTC) Received: from jira-lw-us.apache.org (unknown [207.244.88.139]) by mailrelay1-us-west.apache.org (ASF Mail Server at mailrelay1-us-west.apache.org) with ESMTP id 99276E03A4 for ; Fri, 27 Jan 2017 06:32:25 +0000 (UTC) Received: from jira-lw-us.apache.org (localhost [127.0.0.1]) by jira-lw-us.apache.org (ASF Mail Server at jira-lw-us.apache.org) with ESMTP id 9F68A2528C for ; Fri, 27 Jan 2017 06:32:24 +0000 (UTC) Date: Fri, 27 Jan 2017 06:32:24 +0000 (UTC) From: "Hudson (JIRA)" To: issues@ambari.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (AMBARI-19610) User is not able to import the draft version for a coordinator MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 archived-at: Fri, 27 Jan 2017 06:32:36 -0000 [ https://issues.apache.org/jira/browse/AMBARI-19610?page=3Dcom.atlassi= an.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=3D15= 842316#comment-15842316 ]=20 Hudson commented on AMBARI-19610: --------------------------------- FAILURE: Integrated in Jenkins build Ambari-branch-2.5 #816 (See [https://b= uilds.apache.org/job/Ambari-branch-2.5/816/]) AMBARI-19610. User is not able to import the draft version for a (grvngr: [= http://git-wip-us.apache.org/repos/asf?p=3Dambari.git&a=3Dcommit&h=3D9c3602= 5a47612b20b8e78595e9fe916c735b2b98]) * (edit) contrib/views/wfmanager/src/main/resources/ui/app/components/bundl= e-config.js * (edit) contrib/views/wfmanager/src/main/resources/ui/app/templates/compon= ents/coord-config.hbs * (edit) contrib/views/wfmanager/src/main/resources/ui/app/templates/compon= ents/flow-designer.hbs * (edit) contrib/views/wfmanager/src/main/resources/ui/app/services/workspa= ce-manager.js * (edit) contrib/views/wfmanager/src/main/resources/ui/app/components/desig= ner-workspace.js * (edit) contrib/views/wfmanager/src/main/java/org/apache/oozie/ambari/view= /workflowmanager/WorkflowManagerService.java * (edit) contrib/views/wfmanager/src/main/resources/ui/app/components/coord= -config.js * (edit) contrib/views/wfmanager/src/main/java/org/apache/oozie/ambari/view= /OozieProxyImpersonator.java * (edit) contrib/views/wfmanager/src/main/java/org/apache/oozie/ambari/view= /Constants.java * (edit) contrib/views/wfmanager/src/main/resources/ui/app/components/flow-= designer.js * (edit) contrib/views/wfmanager/src/main/resources/ui/app/templates/compon= ents/bundle-config.hbs * (edit) contrib/views/wfmanager/src/main/resources/ui/app/components/save-= wf.js * (edit) contrib/views/wfmanager/src/main/java/org/apache/oozie/ambari/view= /WorkflowFilesService.java * (edit) contrib/views/wfmanager/src/main/java/org/apache/oozie/ambari/view= /WorkflowFileInfo.java > User is not able to import the draft version for a coordinator > -------------------------------------------------------------- > > Key: AMBARI-19610 > URL: https://issues.apache.org/jira/browse/AMBARI-19610 > Project: Ambari > Issue Type: Bug > Components: ambari-views > Affects Versions: 2.5.0 > Reporter: Supreeth Sharma > Assignee: Padma Priya Nagaraj > Labels: WFD > Fix For: 2.5.0 > > Attachments: AMBARI-19610_trunk.patch > > > User is not able to import the draft version for a coordinator.=20 > Steps to reproduce : > 1) Create a coordinator and save it. > 2) Now in a new window, try to import the draft version of the save coord= inator. > 3) Action is failing with below error : > {code} > {"message":"Access Error to file due to access control","status":"error.f= ile.access.control","stackTrace":"org.apache.hadoop.security.AccessControlE= xception: Permission denied: user\u003dadmin, access\u003dEXECUTE, inode\u0= 03d\"/tmp/coordinator.wfdraft/coordinator.xml\":admin:hdfs:-rw-r--r--\n\tat= sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)\n\ta= t sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAc= cessorImpl.java:57)\n\tat sun.reflect.DelegatingConstructorAccessorImpl.new= Instance(DelegatingConstructorAccessorImpl.java:45)\n\tat java.lang.reflect= .Constructor.newInstance(Constructor.java:526)\n\tat org.apache.hadoop.ipc.= RemoteException.instantiateException(RemoteException.java:106)\n\tat org.ap= ache.hadoop.ipc.RemoteException.unwrapRemoteException(RemoteException.java:= 95)\n\tat org.apache.hadoop.hdfs.web.WebHdfsFileSystem.toIOException(WebHdf= sFileSystem.java:390)\n\tat org.apache.hadoop.hdfs.web.WebHdfsFileSystem.ac= cess$600(WebHdfsFileSystem.java:90)\n\tat org.apache.hadoop.hdfs.web.WebHdf= sFileSystem$AbstractRunner.shouldRetry(WebHdfsFileSystem.java:661)\n\tat or= g.apache.hadoop.hdfs.web.WebHdfsFileSystem$AbstractRunner.runWithRetry(WebH= dfsFileSystem.java:627)\n\tat org.apache.hadoop.hdfs.web.WebHdfsFileSystem$= AbstractRunner.access$100(WebHdfsFileSystem.java:463)\n\tat org.apache.hado= op.hdfs.web.WebHdfsFileSystem$AbstractRunner$1.run(WebHdfsFileSystem.java:4= 92)\n\tat java.security.AccessController.doPrivileged(Native Method)\n\tat = javax.security.auth.Subject.doAs(Subject.java:415)\n\tat org.apache.hadoop.= security.UserGroupInformation.doAs(UserGroupInformation.java:1657)\n\tat or= g.apache.hadoop.hdfs.web.WebHdfsFileSystem$AbstractRunner.run(WebHdfsFileSy= stem.java:488)\n\tat org.apache.hadoop.hdfs.web.WebHdfsFileSystem$Unresolve= dUrlOpener.connect(WebHdfsFileSystem.java:1217)\n\tat org.apache.hadoop.hdf= s.web.ByteRangeInputStream.openInputStream(ByteRangeInputStream.java:121)\n= \tat org.apache.hadoop.hdfs.web.ByteRangeInputStream.getInputStream(ByteRan= geInputStream.java:105)\n\tat org.apache.hadoop.hdfs.web.ByteRangeInputStre= am.\u003cinit\u003e(ByteRangeInputStream.java:90)\n\tat org.apache.hadoop.h= dfs.web.WebHdfsFileSystem$OffsetUrlInputStream.\u003cinit\u003e(WebHdfsFile= System.java:1274)\n\tat org.apache.hadoop.hdfs.web.WebHdfsFileSystem.open(W= ebHdfsFileSystem.java:1188)\n\tat org.apache.hadoop.fs.FileSystem.open(File= System.java:767)\n\tat org.apache.ambari.view.utils.hdfs.HdfsApi$14.run(Hdf= sApi.java:324)\n\tat org.apache.ambari.view.utils.hdfs.HdfsApi$14.run(HdfsA= pi.java:322)\n\tat java.security.AccessController.doPrivileged(Native Metho= d)\n\tat javax.security.auth.Subject.doAs(Subject.java:415)\n\tat org.apach= e.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657)= \n\tat org.apache.ambari.view.utils.hdfs.HdfsApi.execute(HdfsApi.java:397)\= n\tat org.apache.ambari.view.utils.hdfs.HdfsApi.open(HdfsApi.java:322)\n\ta= t org.apache.oozie.ambari.view.HDFSFileUtils.read(HDFSFileUtils.java:57)\n\= tat org.apache.oozie.ambari.view.WorkflowFilesService.readWorkflowXml(Workf= lowFilesService.java:54)\n\tat org.apache.oozie.ambari.view.OozieProxyImper= sonator.readWorkflowXxml(OozieProxyImpersonator.java:393)\n\tat sun.reflect= .GeneratedMethodAccessor536.invoke(Unknown Source)\n\tat sun.reflect.Delega= tingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat j= ava.lang.reflect.Method.invoke(Method.java:606)\n\tat com.sun.jersey.spi.co= ntainer.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)= \n\tat com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMet= hodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDisp= atchProvider.java:205)\n\tat com.sun.jersey.server.impl.model.method.dispat= ch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:= 75)\n\tat com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMe= thodRule.java:302)\n\tat com.sun.jersey.server.impl.uri.rules.RightHandPath= Rule.accept(RightHandPathRule.java:147)\n\tat com.sun.jersey.server.impl.ur= i.rules.SubLocatorRule.accept(SubLocatorRule.java:137)\n\tat com.sun.jersey= .server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)= \n\tat com.sun.jersey.server.impl.uri.rules.SubLocatorRule.accept(SubLocato= rRule.java:137)\n\tat com.sun.jersey.server.impl.uri.rules.RightHandPathRul= e.accept(RightHandPathRule.java:147)\n\tat com.sun.jersey.server.impl.uri.r= ules.SubLocatorRule.accept(SubLocatorRule.java:137)\n\tat com.sun.jersey.se= rver.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)\n\= tat com.sun.jersey.server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRu= le.java:137)\n\tat com.sun.jersey.server.impl.uri.rules.RightHandPathRule.a= ccept(RightHandPathRule.java:147)\n\tat com.sun.jersey.server.impl.uri.rule= s.ResourceClassRule.accept(ResourceClassRule.java:108)\n\tat com.sun.jersey= .server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)= \n\tat com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(= RootResourceClassesRule.java:84)\n\tat com.sun.jersey.server.impl.applicati= on.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)\n\tat co= m.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebA= pplicationImpl.java:1473)\n\tat com.sun.jersey.server.impl.application.WebA= pplicationImpl.handleRequest(WebApplicationImpl.java:1419)\n\tat com.sun.je= rsey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicatio= nImpl.java:1409)\n\tat com.sun.jersey.spi.container.servlet.WebComponent.se= rvice(WebComponent.java:409)\n\tat com.sun.jersey.spi.container.servlet.Ser= vletContainer.service(ServletContainer.java:558)\n\tat com.sun.jersey.spi.c= ontainer.servlet.ServletContainer.service(ServletContainer.java:733)\n\tat = javax.servlet.http.HttpServlet.service(HttpServlet.java:848)\n\tat org.ecli= pse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)\n\tat org.ec= lipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java= :1507)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilte= rChain.doFilter(FilterChainProxy.java:330)\n\tat org.springframework.securi= ty.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInte= rceptor.java:118)\n\tat org.springframework.security.web.access.intercept.F= ilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)\n\tat = org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilt= er(FilterChainProxy.java:342)\n\tat org.apache.ambari.server.security.autho= rization.AmbariAuthorizationFilter.doFilter(AmbariAuthorizationFilter.java:= 287)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterC= hain.doFilter(FilterChainProxy.java:342)\n\tat org.springframework.security= .web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.= java:113)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFi= lterChain.doFilter(FilterChainProxy.java:342)\n\tat org.springframework.sec= urity.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.= java:103)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFi= lterChain.doFilter(FilterChainProxy.java:342)\n\tat org.springframework.sec= urity.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAu= thenticationFilter.java:113)\n\tat org.springframework.security.web.FilterC= hainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)\n\tat org.= springframework.security.web.servletapi.SecurityContextHolderAwareRequestFi= lter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)\n\tat org.sp= ringframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(Fil= terChainProxy.java:342)\n\tat org.springframework.security.web.savedrequest= .RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)\n\tat or= g.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter= (FilterChainProxy.java:342)\n\tat org.springframework.security.web.authenti= cation.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.jav= a:201)\n\tat org.apache.ambari.server.security.authentication.AmbariBasicAu= thenticationFilter.doFilter(AmbariBasicAuthenticationFilter.java:129)\n\tat= org.apache.ambari.server.security.authentication.AmbariDelegatingAuthentic= ationFilter.doFilter(AmbariDelegatingAuthenticationFilter.java:120)\n\tat o= rg.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilte= r(FilterChainProxy.java:342)\n\tat org.apache.ambari.server.security.author= ization.AmbariUserAuthorizationFilter.doFilter(AmbariUserAuthorizationFilte= r.java:91)\n\tat org.springframework.security.web.FilterChainProxy$VirtualF= ilterChain.doFilter(FilterChainProxy.java:342)\n\tat org.springframework.se= curity.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContex= tPersistenceFilter.java:87)\n\tat org.springframework.security.web.FilterCh= ainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)\n\tat org.s= pringframework.security.web.FilterChainProxy.doFilterInternal(FilterChainPr= oxy.java:192)\n\tat org.springframework.security.web.FilterChainProxy.doFil= ter(FilterChainProxy.java:160)\n\tat org.springframework.web.filter.Delegat= ingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)\n\tat org.spr= ingframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProx= y.java:167)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFi= lter(ServletHandler.java:1478)\n\tat org.apache.ambari.server.api.MethodOve= rrideFilter.doFilter(MethodOverrideFilter.java:72)\n\tat org.eclipse.jetty.= servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1478)\n\tat= org.apache.ambari.server.api.AmbariPersistFilter.doFilter(AmbariPersistFil= ter.java:47)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doF= ilter(ServletHandler.java:1478)\n\tat org.apache.ambari.server.view.AmbariV= iewsMDCLoggingFilter.doFilter(AmbariViewsMDCLoggingFilter.java:54)\n\tat or= g.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.= java:1478)\n\tat org.apache.ambari.server.view.ViewThrottleFilter.doFilter(= ViewThrottleFilter.java:161)\n\tat org.eclipse.jetty.servlet.ServletHandler= $CachedChain.doFilter(ServletHandler.java:1478)\n\tat org.apache.ambari.ser= ver.security.AbstractSecurityHeaderFilter.doFilter(AbstractSecurityHeaderFi= lter.java:109)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.d= oFilter(ServletHandler.java:1478)\n\tat org.apache.ambari.server.security.A= bstractSecurityHeaderFilter.doFilter(AbstractSecurityHeaderFilter.java:109)= \n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(Servle= tHandler.java:1478)\n\tat org.eclipse.jetty.servlets.UserAgentFilter.doFilt= er(UserAgentFilter.java:82)\n\tat org.eclipse.jetty.servlets.GzipFilter.doF= ilter(GzipFilter.java:294)\n\tat org.eclipse.jetty.servlet.ServletHandler$C= achedChain.doFilter(ServletHandler.java:1478)\n\tat org.eclipse.jetty.servl= et.ServletHandler.doHandle(ServletHandler.java:499)\n\tat org.eclipse.jetty= .server.handler.ScopedHandler.handle(ScopedHandler.java:137)\n\tat org.ecli= pse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)\n\tat o= rg.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java= :231)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(Contex= tHandler.java:1086)\n\tat org.eclipse.jetty.servlet.ServletHandler.doScope(= ServletHandler.java:427)\n\tat org.eclipse.jetty.server.session.SessionHand= ler.doScope(SessionHandler.java:193)\n\tat org.eclipse.jetty.server.handler= .ContextHandler.doScope(ContextHandler.java:1020)\n\tat org.eclipse.jetty.s= erver.handler.ScopedHandler.handle(ScopedHandler.java:135)\n\tat org.apache= .ambari.server.controller.AmbariHandlerList.processHandlers(AmbariHandlerLi= st.java:212)\n\tat org.apache.ambari.server.controller.AmbariHandlerList.pr= ocessHandlers(AmbariHandlerList.java:201)\n\tat org.apache.ambari.server.co= ntroller.AmbariHandlerList.handle(AmbariHandlerList.java:150)\n\tat org.ecl= ipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)\n\= tat org.eclipse.jetty.server.Server.handle(Server.java:370)\n\tat org.eclip= se.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection= .java:494)\n\tat org.eclipse.jetty.server.AbstractHttpConnection.headerComp= lete(AbstractHttpConnection.java:973)\n\tat org.eclipse.jetty.server.Abstra= ctHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:= 1035)\n\tat org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:641= )\n\tat org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:23= 1)\n\tat org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConne= ction.java:82)\n\tat org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(= SelectChannelEndPoint.java:696)\n\tat org.eclipse.jetty.io.nio.SelectChanne= lEndPoint$1.run(SelectChannelEndPoint.java:53)\n\tat org.eclipse.jetty.util= .thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)\n\tat org.eclips= e.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)\n\tat= java.lang.Thread.run(Thread.java:745)\nCaused by: org.apache.hadoop.ipc.Re= moteException(org.apache.hadoop.security.AccessControlException): Permissio= n denied: user\u003dadmin, access\u003dEXECUTE, inode\u003d\"/tmp/coordinat= or.wfdraft/coordinator.xml\":admin:hdfs:-rw-r--r--\n\tat org.apache.hadoop.= hdfs.web.JsonUtil.toRemoteException(JsonUtil.java:112)\n\tat org.apache.had= oop.hdfs.web.WebHdfsFileSystem.validateResponse(WebHdfsFileSystem.java:358)= \n\tat org.apache.hadoop.hdfs.web.WebHdfsFileSystem.access$200(WebHdfsFileS= ystem.java:90)\n\tat org.apache.hadoop.hdfs.web.WebHdfsFileSystem$AbstractR= unner.connect(WebHdfsFileSystem.java:534)\n\tat org.apache.hadoop.hdfs.web.= WebHdfsFileSystem$AbstractRunner.runWithRetry(WebHdfsFileSystem.java:610)\n= \t... 121 more\n"} > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)