Uploaded image for project: 'Crucible'
  1. Crucible
  2. CRUC-7507

Allow customised retrieval of review data using expandable API

    • Our product teams collect and evaluate feedback from a number of different sources. To learn more about how we use customer feedback in the planning process, check out our new feature policy.

      We are having trouble obtaining review data including revision/repository info in an efficient manner.

      Here is our current approach

      1. We use Crucible's ReviewService.getCustomFilterReviews(filter, true) to get a list of ReviewData per crucible project.
      2. We go through this list and call ReviewService.getReviewDetails(reviewData.permaId()) which returns a DetailedReviewData object.
      3. Populate our own object class from the DetailedReviewData object and return the data.

      Our current approach can take a very long time (10+ mins) for some projects to return data.
      https://docs.atlassian.com/fisheye-crucible/3.6.3/javadoc/index.html?com/atlassian/crucible/spi/services/ReviewService.html

            [CRUC-7507] Allow customised retrieval of review data using expandable API

            Atlassian Update – 4 February 2019

            Hi everyone,

            We have recently reviewed this issue and the overall interest in the problem. As the issue hasn't collect votes, watchers, comments, or support cases from many customers during its lifetime, it's very low on our priority list, and will not be fixed in the foreseeable future. That's why we've decided to close it.

            Although we're aware the issue is still important to those of you who were involved in the conversations around it, we want to be clear in managing your expectations. The Fisheye & Crucible team is focusing on issues that have broad impact and high value, reflected by the number of comments, votes, support cases, and customers interested. Please consult the Implementation of New Features Policy for more details.

            We understand how disappointing this decision may be, but we hope you'll appreciate our transparent approach and communication. Atlassian will continue to watch this issue for further updates, so please feel free to share your thoughts in the comments.

            Regards
            Marek Parfianowicz
            Fisheye/Crucible TL

            Marek Parfianowicz added a comment - Atlassian Update – 4 February 2019 Hi everyone, We have recently reviewed this issue and the overall interest in the problem. As the issue hasn't collect votes, watchers, comments, or support cases from many customers during its lifetime, it's very low on our priority list, and will not be fixed in the foreseeable future. That's why we've decided to close it. Although we're aware the issue is still important to those of you who were involved in the conversations around it, we want to be clear in managing your expectations. The Fisheye & Crucible team is focusing on issues that have broad impact and high value, reflected by the number of comments, votes, support cases, and customers interested. Please consult the Implementation of New Features Policy for more details. We understand how disappointing this decision may be, but we hope you'll appreciate our transparent approach and communication. Atlassian will continue to watch this issue for further updates, so please feel free to share your thoughts in the comments. Regards Marek Parfianowicz Fisheye/Crucible TL

            I see. Unfortunately we do want real-time data so a scheduled daily job would not fit our requirement.
            Here is the whole description of what we are trying to do.

            We have a dashboard widget in JIRA which displays all the data from iTracks and its associated Reviews.
            So one row on the dashboard will contain the following info:
            JIRA Project, iTrack, Revisions, iTrack Status, Code Review Task, Code Review Task Status, Code Review Task Assignee, and Due Date

            We can do pagination in our dashboard instead if there was a way for us to filter which reviews we want, from a range of iTracks.
            For example: If I want to get all the review data associated with iTrack-1 through iTrack-50, we can implement a paginated dashboard instead of displaying hundreds or thousands of pieces of data.

            As far as I know we can't request data from crucible in such a manner.
            Do you have any suggestions with our approach?

            Justin Cheng added a comment - I see. Unfortunately we do want real-time data so a scheduled daily job would not fit our requirement. Here is the whole description of what we are trying to do. We have a dashboard widget in JIRA which displays all the data from iTracks and its associated Reviews. So one row on the dashboard will contain the following info: JIRA Project, iTrack, Revisions, iTrack Status, Code Review Task, Code Review Task Status, Code Review Task Assignee, and Due Date We can do pagination in our dashboard instead if there was a way for us to filter which reviews we want, from a range of iTracks. For example: If I want to get all the review data associated with iTrack-1 through iTrack-50, we can implement a paginated dashboard instead of displaying hundreds or thousands of pieces of data. As far as I know we can't request data from crucible in such a manner. Do you have any suggestions with our approach?

            justin.cheng, it is not on our current backlog, I can't really advise when that would be delivered if at all - it depends how much value such feature would bring to other users.

            Regarding ad-hoc suggestion, I would need to understand what goal are you trying to achieve. Do you really need real time details for all the reviews in the project? Can you limit number of reviews somehow and only retrieve full details for few of them only? Or perhaps the information is not required real time - perhaps you want some ways to retrieve and materialise the details as a scheduled daily job so then you have all the details handy when you need them?

            Piotr Swiecicki added a comment - justin.cheng , it is not on our current backlog, I can't really advise when that would be delivered if at all - it depends how much value such feature would bring to other users. Regarding ad-hoc suggestion, I would need to understand what goal are you trying to achieve. Do you really need real time details for all the reviews in the project? Can you limit number of reviews somehow and only retrieve full details for few of them only? Or perhaps the information is not required real time - perhaps you want some ways to retrieve and materialise the details as a scheduled daily job so then you have all the details handy when you need them?

            I see that you've updated this item as an improvement. Is this something I can expect to use in the near future?
            If not, in the mean time is there any suggestion you have that I may do to get the data in a faster way?

            Justin Cheng added a comment - I see that you've updated this item as an improvement. Is this something I can expect to use in the near future? If not, in the mean time is there any suggestion you have that I may do to get the data in a faster way?

            We could perhaps implement "expandable" API so the client could specify which review details to retrieve

            Piotr Swiecicki added a comment - We could perhaps implement "expandable" API so the client could specify which review details to retrieve

            The performance of our whole widget can vary depending on the size of the project. Some in a few seconds, others 10+ mins.
            Right now I am not sure which method is the main source of delay, but my suspicion is our implementation of getReviewDetails.
            Once we get the list ReviewData objects, we iterate through this list and call ReviewService.getReviewDetails(reviewData.permaId())
            on each list element. Our project sizes range from small to very large (in the hundreds/thousands) of reviews.

            The problem is we want to get a lot of info out of crucible.
            We are trying to get info on all review data from a Crucible project. For each review we want the following: reviewID, revisions/repository, review status, review assignees, and due date.

            Justin Cheng added a comment - The performance of our whole widget can vary depending on the size of the project. Some in a few seconds, others 10+ mins. Right now I am not sure which method is the main source of delay, but my suspicion is our implementation of getReviewDetails. Once we get the list ReviewData objects, we iterate through this list and call ReviewService.getReviewDetails(reviewData.permaId()) on each list element. Our project sizes range from small to very large (in the hundreds/thousands) of reviews. The problem is we want to get a lot of info out of crucible. We are trying to get info on all review data from a Crucible project. For each review we want the following: reviewID, revisions/repository, review status, review assignees, and due date .

            Could you provide more details please? Is it ReviewService.getCustomFilterReviews call that is time consuming (how long does it take?) or rather ReviewService.getReviewDetails calls (how many of them, what's the average, best and worst times of execution)?

            Basically, the ReviewService.getReviewDetails retrieves all related review data, including files, revisions and comments. It is expected this will be called for carefully selected reviews only, not for batches of hundreds or thousands of reviews. You haven't explained what kind of problem you are trying to solve, but perhaps there is a way you can use getCustomFilterReviews with carefully crafted filter so you only get few results that you would need full review data for? Or, if you don't need full details of those reviews, perhaps basic ReviewData obtained from call to ReviewService.getCustomFilterReviews is sufficient?

            Piotr Swiecicki added a comment - Could you provide more details please? Is it ReviewService.getCustomFilterReviews call that is time consuming (how long does it take?) or rather ReviewService.getReviewDetails calls (how many of them, what's the average, best and worst times of execution)? Basically, the ReviewService.getReviewDetails retrieves all related review data, including files, revisions and comments. It is expected this will be called for carefully selected reviews only, not for batches of hundreds or thousands of reviews. You haven't explained what kind of problem you are trying to solve, but perhaps there is a way you can use getCustomFilterReviews with carefully crafted filter so you only get few results that you would need full review data for? Or, if you don't need full details of those reviews, perhaps basic ReviewData obtained from call to ReviewService.getCustomFilterReviews is sufficient?

            I am having similar poor performance with getAllReviews() in the Flyover Reports add-on available on the Marketplace.

            Alexander Taler added a comment - I am having similar poor performance with getAllReviews() in the Flyover Reports add-on available on the Marketplace.

              Unassigned Unassigned
              justin.cheng Justin Cheng
              Votes:
              2 Vote for this issue
              Watchers:
              4 Start watching this issue

                Created:
                Updated: