Click the "Start Progress" link
Check out appropriate cumulative patch branch, for instance for the AS4.0.2 release
svn checkout https://svn.jboss.org/repos/jbossas/branches/JBoss_4_0_2_CP
Implement the fix and check it in.
If a bug is in app server component such as Web Services or Hibernate, a cumulative patch branch must be created off of the component release that was included into the app server. For instance, for Hibernate 3.1.3:
Click "Resolve". In the "Patch Instructions" field enter installation instructions on how to apply the patch.
Use the Support Patch Template as a basis for these instructions.
QA will tag cumulative patch branch upon code freeze. For instance,
svn copy https://svn.jboss.org/repos/jbossas/branches/JBoss_4_0_2_CP https://svn.jboss.org/repos/jbossas/tags/JBoss_4_0_2_CP03
Click the "Start Progress" link to enter the CVS or SVN branch information.
Enter the branch for the patch. Using that JIRA ID and the tag for the release being patched, create a branch for the patch using the format ReleaseTag_JiraID.
For instance, if the patch issue ID is JBAS-1234 for JBoss 4.0.3, the patch's branch should be JBoss_4_0_3_JBAS-1234.
# svn svn copy https://svn.jboss.org/repos/jbossas/tags/JBoss_4_0_3_SP1/ http://svn.jboss.org/repos/jbossas/branches/JBoss_4_0_3_SP1_JBAS-1234 svn checkout https://svn.jboss.org/repos/jbossas/branches/JBoss_4_0_3_SP1_JBAS-1234 jbas-1234_local_dir # cvs cvs rtag -r JBoss_4_0_3 -b JBoss_4_0_3_JBAS-1234 jboss-4.0.x cvs co -r JBoss_4_0_3_JBAS-1234 jboss-4.0.x
If the project being patched is not in JBoss hosted CVS, attach the source diff to this case.
Build the patched jars from the above branch and attach them to the JIRA issue.
Click "Hand Over to QA". In the "Patch Instructions" field enter installation instructions on how to apply the patch to an existing installation.
Use the Support Patch Template as a basis for these instructions.
Below is the skeleton of the directions that should be entered in the "Patch Instructions" field in JIRA.
PATCH NAME: [Not needed for the Cumulative Patch tasks] JBAS-XXXX PRODUCT NAME: [Not needed for the Cumulative Patch tasks] JBoss Application Server VERSION: [Not needed for the Cumulative Patch tasks] 4.0.2 SHORT DESCRIPTION: [What problem this patch fixes.] ex: "A NullPointerException is no longer thrown when the password field is left blank." LONG DESCRIPTION: [Detailed explanation of the problem.] ex: "Prior to this fix, blah happened. With this fix blah will happen instead. This is because blah blah blah. MANUAL INSTALL INSTRUCTIONS: [How a user should manually install this patch.] ex: "Rename %JBOSS_HOME%/lib/someJar.jar to "someJar.replacedBy.JBAS-xxxx.jar.old" Copy the new someJar.jar to %JBOSS_HOME%/lib/" COMPATIBILITY: [known usages and known combinations that don't work] ex: "portal 2.x in a given jems bundle does not work with this change" DEPENDENCIES: [list any patches this patch is dependent on. Not needed for the Cumulative Patch tasks] ex: 4.0.2-SP2 SUPERSEDES: [list any patches this patch supersedes] ex: JBAS-1450 SUPERSEDED BY: [list any patches this patch is superseded by. Not needed for the Cumulative Patch tasks] ex: 4.0.2-SP3 CREATOR: [author of this patch] DATE: [date these instructions were written]
# Howto test a patch in the QA lab # create a directory which corresponds to the JIRA id for the patch mkdir JBAS-1234 cd JBAS-1234 #set your JAVA_HOME correctly #if jboss 3.x, use jdk 1.3 #export JAVA_HOME=/opt/jdk1.3.1_13/ #if jboss 4.x use jdk 1.4 export JAVA_HOME=/opt/j2sdk1.4.2_09/ #Make sure you are testing on a 32-bit box # get the source distribution of the *targetted* version of jboss tar xvzf /opt/src/jboss-4.0.2-src.tar.gz # build Jboss & save the original output cd jboss-4.0.2-src/build; sh build.sh cp -r output output-orig cd ../.. # download the patched binaries into a binaries directory mkdir binaries; cd binaries; #download them locally & upload via scp (if in qa lab) #TODO: look at using wget to retrieve patches # capture the md5 of each jar and add it as comment to jira md5sum *.jar #use 'find' to locate where in the output each jar is, in #order to create the right mirror of the install distro find ../jboss-4.0.2-src/build/output -name jboss.jar # create a mirror of the install distro using the patched jars #for each configuration 'find' listed mkdir -p jboss-4.0.2/server/all/lib cp jboss.jar jboss-4.0.2/server/all/lib # copy the jars to the output, verifying each jar copies correctly # NOTE: make sure to replace all the jars in the source tree # not just the ones under build/output since the client classpath # is affected by the jars under /thirdparty and */output/lib. cp -ivr jboss-4.0.2 ../jboss-4.0.2-src/build/output # save the patched version for later (to switch back & forth) cd ../jboss-4.0.2-src/build cp -r output output-patched # run the testsuite against the patched version (let node0 default to localhost) cd ../testsuite sh build.sh -Dnode1=$MYTESTIP_1 tests # tests will take 1-2 hours, to save time, verify pass rate every 15 min # if you see several failures, make sure no one else is on who ps --columns 1000 -ef | grep run.jar # once tests complete, save the text report and take a look at it cp output/reports/text/TESTS-Testsuite.txt ../../TESTS-patched.txt # verify any failures also fail on the unpatched version # upon any failure contact QA Lead for help cd ../build; mv output output-patched cp -r output-orig output #find out which mode the failing tests were using and #start the server using the particular configuration #the example below starts the 'all' mode cd output/jboss-4.0.2/ ./bin/run.sh -c all #different shell cd jboss-4.0.2-src/testsuite sh build.sh -Dtest=org.jboss.tests.the.FailingTest one-test # if failure only occurs on patched version, reject the patch # Attach necessary information to JIRA issue # ie, testuite/output/reports/TESTS-org.jboss.test.the.FailingTest.txt # When failing the patch notify developer that patched client jars # were note used, ie, add this as a comment: # NOTE: Patched client jars were not used to validate compatibility. # Upon failure tar up the issue directory and copy to /home/issues cd $ISSUE_HOME/.. tar cvzf JIRA-1234.tar.gz JIRA-1234 cp JIRA-1234.tar.gz /home/issues #note path to tar.gz on JIRA issue