-
Type:
Bug
-
Resolution: Timed out
-
Priority:
Low
-
Affects Version/s: 2.6.0
-
Component/s: Integrations
-
Severity 3 - Minor
from: https://bamboo.extranet.atlassian.com/browse/CRUCHG-CRU2-FUNC2-10/test/case/202247509
Adding a changeset to a review from the changeset dialog, when the changeset has never been added before to another review via the activity stream, will cause the line count for the file revision in the changeset to be wrong. This shows up in a rest request (but not the UI) - see the <changedLines> field below - should be 3, but is 1 for some of the revisions.
To reproduce:
- start a fresh server, with no reviews
- create a new review, via the masthead, so that it is a blank review
- click on add changeset in the review details dialog, and pick a changeset to add
- perform a rest call to http://localhost:6060/foo/rest-service/reviews-v1/CR-1/details
- see that the field <changedLines> is not correct for some of the revisions.
junit.framework.AssertionFailedError: Xml result does not match expected xml (reviews-v1/changeset.xml)
Actual document:
<?xml version="1.0" encoding="UTF-8"?>
<detailedReviewData>
<allowReviewersToJoin>false</allowReviewersToJoin>
<author>
<avatarUrl>_URL_/avatar/joe</avatarUrl>
<displayName>joe lowercase</displayName>
<userName>joe</userName>
</author>
<createDate>_DATE_</createDate>
<creator>
<avatarUrl>_URL_/avatar/joe</avatarUrl>
<displayName>joe lowercase</displayName>
<userName>joe</userName>
</creator>
<metricsVersion>1</metricsVersion>
<moderator>
<avatarUrl>_URL_/avatar/joe</avatarUrl>
<displayName>joe lowercase</displayName>
<userName>joe</userName>
</moderator>
<name>Changeset Review</name>
<permaId>
<id>CR-2</id>
</permaId>
<projectKey>CR</projectKey>
<state>Review</state>
<type>REVIEW</type>
<stats/>
<actions/>
<generalComments/>
<reviewItems>
<reviewItem>
<participants>
<participant>
<user>
<avatarUrl>_URL_/avatar/joe</avatarUrl>
<displayName>joe lowercase</displayName>
<userName>joe</userName>
</user>
<completed>false</completed>
</participant>
</participants>
<permId>
<id>_REVIEW_ITEM_ID_</id>
</permId>
<authorName>seb</authorName>
<commitDate>_DATE_</commitDate>
<commitType>_COMMIT_TYPE_</commitType>
<expandedRevisions>
<addDate>_DATE_</addDate>
<revision>13</revision>
<path>branches/iterativeReviewsBranch/file1</path>
<contentUrl>foo/cru/CR-2/rawcontent/_DIR_NO_/branches/iterativeReviewsBranch/file1</contentUrl>
<source>svn</source>
<changedLines>1</changedLines>
<fileType>_COMMIT_TYPE_</fileType>
<commitType>_COMMIT_TYPE_</commitType>
</expandedRevisions>
<expandedRevisions>
<addDate>_DATE_</addDate>
<revision>14</revision>
<path>branches/iterativeReviewsBranch/file1</path>
<contentUrl>foo/cru/CR-2/rawcontent/_DIR_NO_/branches/iterativeReviewsBranch/file1</contentUrl>
<source>svn</source>
<changedLines>3</changedLines>
<fileType>_COMMIT_TYPE_</fileType>
<commitType>_COMMIT_TYPE_</commitType>
</expandedRevisions>
<fileType>_COMMIT_TYPE_</fileType>
<fromContentUrl>foo/cru/CR-2/rawcontent/_DIR_NO_/branches/iterativeReviewsBranch/file1</fromContentUrl>
<fromPath>branches/iterativeReviewsBranch/file1</fromPath>
<fromRevision>13</fromRevision>
<repositoryName>svn</repositoryName>
<showAsDiff>true</showAsDiff>
<toContentUrl>foo/cru/CR-2/rawcontent/_DIR_NO_/branches/iterativeReviewsBranch/file1</toContentUrl>
<toPath>branches/iterativeReviewsBranch/file1</toPath>
<toRevision>14</toRevision>
</reviewItem>
<reviewItem>
<participants>
<participant>
<user>
<avatarUrl>_URL_/avatar/joe</avatarUrl>
<displayName>joe lowercase</displayName>
<userName>joe</userName>
</user>
<completed>false</completed>
</participant>
</participants>
<permId>
<id>_REVIEW_ITEM_ID_</id>
</permId>
<authorName>seb</authorName>
<commitDate>_DATE_</commitDate>
<commitType>_COMMIT_TYPE_</commitType>
<expandedRevisions>
<addDate>_DATE_</addDate>
<revision>13</revision>
<path>branches/iterativeReviewsBranch/file2</path>
<contentUrl>foo/cru/CR-2/rawcontent/_DIR_NO_/branches/iterativeReviewsBranch/file2</contentUrl>
<source>svn</source>
<changedLines>1</changedLines>
<fileType>_COMMIT_TYPE_</fileType>
<commitType>_COMMIT_TYPE_</commitType>
</expandedRevisions>
<expandedRevisions>
<addDate>_DATE_</addDate>
<revision>14</revision>
<path>branches/iterativeReviewsBranch/file2</path>
<contentUrl>foo/cru/CR-2/rawcontent/_DIR_NO_/branches/iterativeReviewsBranch/file2</contentUrl>
<source>svn</source>
<changedLines>3</changedLines>
<fileType>_COMMIT_TYPE_</fileType>
<commitType>_COMMIT_TYPE_</commitType>
</expandedRevisions>
<fileType>_COMMIT_TYPE_</fileType>
<fromContentUrl>foo/cru/CR-2/rawcontent/_DIR_NO_/branches/iterativeReviewsBranch/file2</fromContentUrl>
<fromPath>branches/iterativeReviewsBranch/file2</fromPath>
<fromRevision>13</fromRevision>
<repositoryName>svn</repositoryName>
<showAsDiff>true</showAsDiff>
<toContentUrl>foo/cru/CR-2/rawcontent/_DIR_NO_/branches/iterativeReviewsBranch/file2</toContentUrl>
<toPath>branches/iterativeReviewsBranch/file2</toPath>
<toRevision>14</toRevision>
</reviewItem>
</reviewItems>
<reviewers/>
<transitions/>
<versionedComments/>
</detailedReviewData>
Expected document:
<?xml version="1.0" encoding="UTF-8"?>
<detailedReviewData>
<allowReviewersToJoin>false</allowReviewersToJoin>
<author>
<avatarUrl>_URL_/avatar/joe</avatarUrl>
<displayName>joe lowercase</displayName>
<userName>joe</userName>
</author>
<createDate>_DATE_</createDate>
<creator>
<avatarUrl>_URL_/avatar/joe</avatarUrl>
<displayName>joe lowercase</displayName>
<userName>joe</userName>
</creator>
<metricsVersion>1</metricsVersion>
<moderator>
<avatarUrl>_URL_/avatar/joe</avatarUrl>
<displayName>joe lowercase</displayName>
<userName>joe</userName>
</moderator>
<name>Changeset Review</name>
<permaId>
<id>CR-2</id>
</permaId>
<projectKey>CR</projectKey>
<state>Review</state>
<type>REVIEW</type>
<stats/>
<actions/>
<generalComments/>
<reviewItems>
<reviewItem>
<participants>
<participant>
<user>
<avatarUrl>_URL_/avatar/joe</avatarUrl>
<displayName>joe lowercase</displayName>
<userName>joe</userName>
</user>
<completed>false</completed>
</participant>
</participants>
<permId>
<id>_REVIEW_ITEM_ID_</id>
</permId>
<authorName>seb</authorName>
<commitDate>_DATE_</commitDate>
<commitType>_COMMIT_TYPE_</commitType>
<expandedRevisions>
<addDate>_DATE_</addDate>
<revision>13</revision>
<path>branches/iterativeReviewsBranch/file1</path>
<contentUrl>foo/cru/CR-2/rawcontent/_DIR_NO_/branches/iterativeReviewsBranch/file1</contentUrl>
<source>svn</source>
<changedLines>3</changedLines>
<fileType>_COMMIT_TYPE_</fileType>
<commitType>_COMMIT_TYPE_</commitType>
</expandedRevisions>
<expandedRevisions>
<addDate>_DATE_</addDate>
<revision>14</revision>
<path>branches/iterativeReviewsBranch/file1</path>
<contentUrl>foo/cru/CR-2/rawcontent/_DIR_NO_/branches/iterativeReviewsBranch/file1</contentUrl>
<source>svn</source>
<changedLines>3</changedLines>
<fileType>_COMMIT_TYPE_</fileType>
<commitType>_COMMIT_TYPE_</commitType>
</expandedRevisions>
<fileType>_COMMIT_TYPE_</fileType>
<fromContentUrl>foo/cru/CR-2/rawcontent/_DIR_NO_/branches/iterativeReviewsBranch/file1</fromContentUrl>
<fromPath>branches/iterativeReviewsBranch/file1</fromPath>
<fromRevision>13</fromRevision>
<repositoryName>svn</repositoryName>
<showAsDiff>true</showAsDiff>
<toContentUrl>foo/cru/CR-2/rawcontent/_DIR_NO_/branches/iterativeReviewsBranch/file1</toContentUrl>
<toPath>branches/iterativeReviewsBranch/file1</toPath>
<toRevision>14</toRevision>
</reviewItem>
<reviewItem>
<participants>
<participant>
<user>
<avatarUrl>_URL_/avatar/joe</avatarUrl>
<displayName>joe lowercase</displayName>
<userName>joe</userName>
</user>
<completed>false</completed>
</participant>
</participants>
<permId>
<id>_REVIEW_ITEM_ID_</id>
</permId>
<authorName>seb</authorName>
<commitDate>_DATE_</commitDate>
<commitType>_COMMIT_TYPE_</commitType>
<expandedRevisions>
<addDate>_DATE_</addDate>
<revision>13</revision>
<path>branches/iterativeReviewsBranch/file2</path>
<contentUrl>foo/cru/CR-2/rawcontent/_DIR_NO_/branches/iterativeReviewsBranch/file2</contentUrl>
<source>svn</source>
<changedLines>3</changedLines>
<fileType>_COMMIT_TYPE_</fileType>
<commitType>_COMMIT_TYPE_</commitType>
</expandedRevisions>
<expandedRevisions>
<addDate>_DATE_</addDate>
<revision>14</revision>
<path>branches/iterativeReviewsBranch/file2</path>
<contentUrl>foo/cru/CR-2/rawcontent/_DIR_NO_/branches/iterativeReviewsBranch/file2</contentUrl>
<source>svn</source>
<changedLines>3</changedLines>
<fileType>_COMMIT_TYPE_</fileType>
<commitType>_COMMIT_TYPE_</commitType>
</expandedRevisions>
<fileType>_COMMIT_TYPE_</fileType>
<fromContentUrl>foo/cru/CR-2/rawcontent/_DIR_NO_/branches/iterativeReviewsBranch/file2</fromContentUrl>
<fromPath>branches/iterativeReviewsBranch/file2</fromPath>
<fromRevision>13</fromRevision>
<repositoryName>svn</repositoryName>
<showAsDiff>true</showAsDiff>
<toContentUrl>foo/cru/CR-2/rawcontent/_DIR_NO_/branches/iterativeReviewsBranch/file2</toContentUrl>
<toPath>branches/iterativeReviewsBranch/file2</toPath>
<toRevision>14</toRevision>
</reviewItem>
</reviewItems>
<reviewers/>
<transitions/>
<versionedComments/>
</detailedReviewData>
at com.atlassian.fecru.utils.XMLTestUtils.assertXmlDocumentEqual(XMLTestUtils.java:84)
at com.atlassian.fecru.utils.XMLTestUtils.assertXmlFileEqual(XMLTestUtils.java:114)
at com.atlassian.crucible.spi.rpc.RestServiceTestBase.assertRequestReturnsXml(RestServiceTestBase.java:85)
at com.atlassian.crucible.spi.rpc.RestReviewServiceTest.testAddChangeset(RestReviewServiceTest.java:685)
at com.atlassian.functestplugin.JUnitRunnerService.runSingleTest(JUnitRunnerService.java:232)
at com.atlassian.functestplugin.JUnitRunnerService.access$000(JUnitRunnerService.java:54)
at com.atlassian.functestplugin.JUnitRunnerService$2.write(JUnitRunnerService.java:154)
at com.sun.jersey.core.impl.provider.entity.StreamingOutputProvider.writeTo(StreamingOutputProvider.java:68)
at com.sun.jersey.core.impl.provider.entity.StreamingOutputProvider.writeTo(StreamingOutputProvider.java:55)
at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:254)
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:689)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:612)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:603)
at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:309)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:425)
at com.atlassian.plugins.rest.module.RestDelegatingServletFilter$JerseyOsgiServletContainer.doFilter(RestDelegatingServletFilter.java:128)
at com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:689)
at com.atlassian.plugins.rest.module.RestDelegatingServletFilter.doFilter(RestDelegatingServletFilter.java:62)
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74)
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77)
at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63)
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74)
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66)
at com.atlassian.plugins.rest.module.servlet.RestServletUtilsUpdaterFilter.doFilterInternal(RestServletUtilsUpdaterFilter.java:26)
at com.atlassian.plugins.rest.module.servlet.RestServletUtilsUpdaterFilter.doFilter(RestServletUtilsUpdaterFilter.java:40)
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74)
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66)
at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:25)
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74)
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77)
at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63)
at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1264)
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46)
at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77)
at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63)
at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1264)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:83)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1264)
at com.atlassian.crucible.filters.CrucibleFilter.doFilter(CrucibleFilter.java:142)
at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1264)
at com.cenqua.fisheye.web.filters.TotalityFilter.doFilter(TotalityFilter.java:263)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1264)
at com.atlassian.security.auth.trustedapps.filter.TrustedApplicationsFilter.doFilter(TrustedApplicationsFilter.java:98)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1264)
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46)
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66)
at com.atlassian.oauth.serviceprovider.internal.servlet.OAuthFilter.doFilter(OAuthFilter.java:71)
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74)
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66)
at com.atlassian.plugins.rest.module.servlet.RestSeraphFilter.doFilter(RestSeraphFilter.java:40)
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74)
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77)
at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63)
at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1264)
at org.mortbay.servlet.UserAgentFilter.doFilter(UserAgentFilter.java:78)
at org.mortbay.servlet.GzipFilter.doFilter(GzipFilter.java:154)
at com.cenqua.fisheye.web.filters.CustomIncludableGzipFilter.doFilter(CustomIncludableGzipFilter.java:21)
at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1264)
at com.cenqua.fisheye.web.filters.ProductInfoFilter.doFilter(ProductInfoFilter.java:36)
at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1264)
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46)
at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77)
at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63)
at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1264)
at com.cenqua.fisheye.web.filters.UpfrontFilter.doFilter(UpfrontFilter.java:52)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1264)
at com.atlassian.fecru.profiling.ProfilingServletFilter.doFilter(ProfilingServletFilter.java:73)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1264)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:451)