[ 
https://issues.apache.org/jira/browse/DERBY-4857?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12923152#action_12923152
 ] 

Rick Hillegas commented on DERBY-4857:
--------------------------------------

Thanks for the patch, Kristian. I have taken a look at it and have a couple 
preliminary comments to offer. Unfortunately, I don't know enough about this 
technology to be able to test-drive the patch. Here are some things I tried in 
order to build this patch:

o I changed directory to the root of my client and typed "mvn -Pbuildclient". 
Nothing happened. The buildclient target was not recognized.

o I changed directory to maven2 and typed "mvn -Pbuildclient". Again, the 
buildclient target was not recognized.

o From the root of my client, I did an "ant clobber" followed by "ant all". 
This build failed because ReportParser was not found.

I would like to test-drive the patch. Could you expand the instructions? Think 
in terms of writing a cookbook for someone who knows absolutely nothing about 
SOAP and very little about maven. For instance, there seem to be some classes 
which are generated by the SOAP/maven machinery but I don't know how or when 
that generation is supposed to happen. Thanks.

---------------

Here are some preliminary comments on the patch:

o The name Client seems a little vague to me. Could this class be renamed to 
something which captures more of its behavior, like JiraFilterReader or 
FilteredIssueLister? There may be a small chunk of code in there which could be 
carved out into a generic Client or SoapClient or JiraSoapClient class, but 
most of the work seems focused on reading a Jira filter and writing a list of 
issues.

o If I understand the code correctly, the logic in Client.getAncestors() is 
trying to construct the upgrade trajectory which will be used to calculate the 
set of issues to include in the release notes. Most of the work is done in 
Client.getReleasedVersions(). Most of the time, I think that this logic will do 
the right thing. However, its concept of ancestor differs somewhat from the 
concept of ancestor which is assumed by our release notes process. That concept 
is discussed in this email thread: 
http://old.nabble.com/Release-Notes-to5931299.html#a6248974 Here's how I think 
the concepts differ:

a) For Client.getAncestors(), released distribution A is an ancestor of release 
candidate B if (A.releaseID < B.releaseID).

b) Given the discussion in the email thread referenced above, ancestry should 
be recursively defined by the precedingRelease function. If C is a release, 
then precedingRelease( C ) is the "preceding release" mentioned at the 
beginning of the release notes for C. The ancestry set of candidate B is { 
precedingRelease(B), precedingRelease(precedingRelease(B)), ...}. In this 
scheme, released distribution A is an ancestor of release candidate B if A is 
in that ancestry set.

Definition (a) yields a larger set of ancestors than definition (b) does. I 
believe that the logic in (a) will overaggressively filter issues. Here is the 
problem case:

i) We release 10.6.2.1.

ii) Then we release 10.7.1.0.

iii) Then we fix bug NNNN in both the 10.6 and 10.7 branches.

iv) Then we release 10.6.3.0, including the fix for NNNN.

v) Then we release 10.7.2.0, also including the fix for NNNN. Note that 
precedingRelease( 10.7.2.0 ) = 10.7.1.0 NOT 10.6.3.0.

vi) The fix for NNNN will not appear in the release notes for 10.7.2.0 under 
definition (a). However, the fix will appear in the release notes for 10.7.2.0 
under definition (b).

Unfortunately, I don't think that Jira contains enough information to calculate 
release ancestry under definition (b). I think that the information can be 
reconstructed by parsing the release notes in our subversion tags. 
Alternatively, we could maintain the ancestry graph in the codeline.

What you have so far is a big improvement over the current situation. I think 
it would be OK to fix getAncestors() later on.


> Utilize the SOAP API to fetch JIRA issue list for release notes generation
> --------------------------------------------------------------------------
>
>                 Key: DERBY-4857
>                 URL: https://issues.apache.org/jira/browse/DERBY-4857
>             Project: Derby
>          Issue Type: Improvement
>          Components: Build tools
>    Affects Versions: 10.7.0.0
>            Reporter: Kristian Waagan
>            Assignee: Kristian Waagan
>         Attachments: derby-4857-1a-jirasoap_relnotes.diff, 
> derby-4857-1a-jirasoap_relnotes.stat
>
>
> Somewhat simplified, the release manager (RM) must currently perform the 
> following manual steps to feed the release note generate the data it needs:
>  a) Create manual JIRA filter to select issues addressed by the release.
>  b) Save the filter result to disk as XML.
>  c) Write/modify the XML parser to be able to parse the report.
>  d) Determine and record all JIRA release note attachment ids for the issues 
> requiring a release note.
> By using the current version of the SOAP API (3.13.5), steps (b) to (d) can 
> be removed.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to