Details
-
Bug
-
Resolution: Timed out
-
Low
-
2.6.0
-
Severity 3 - Minor
-
Description
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)