343 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			343 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
Release notes for Gerrit 2.0.21
 | 
						|
===============================
 | 
						|
 | 
						|
Gerrit 2.0.21 is now available in the usual location:
 | 
						|
 | 
						|
link:https://www.gerritcodereview.com/download/index.html[https://www.gerritcodereview.com/download/index.html]
 | 
						|
 | 
						|
 | 
						|
Schema Change
 | 
						|
-------------
 | 
						|
 | 
						|
*WARNING: This version contains a schema change* (since 2.0.19)
 | 
						|
 | 
						|
* The schema change may be difficult to undo once applied.
 | 
						|
+
 | 
						|
Downgrading could be very difficult once the upgrade has been
 | 
						|
started.  Going back to 2.0.20 may not be possible.
 | 
						|
 | 
						|
* Do not run the schema change while the server is running.
 | 
						|
+
 | 
						|
This upgrade changes the primary key of a table, an operation
 | 
						|
which shouldn't occur while end-users are able to make
 | 
						|
modifications to the database.  I _strongly_ suggest a full
 | 
						|
shutdown, schema upgrade, then startup approach for this release.
 | 
						|
 | 
						|
* There may be some duplicate keys
 | 
						|
+
 | 
						|
This upgrade removes a column from the primary key of a table,
 | 
						|
which may result in duplicates being found.  You can search
 | 
						|
for these duplicates before updating:
 | 
						|
{{{
 | 
						|
SELECT account_id,external_id FROM account_external_ids e
 | 
						|
WHERE e.external_id IN (SELECT external_id
 | 
						|
FROM account_external_ids
 | 
						|
GROUP BY external_id
 | 
						|
HAVING COUNT(*) > 1);
 | 
						|
}}}
 | 
						|
Resolving duplicates is left up to the administrator, in
 | 
						|
general though you will probably want to remove one of the
 | 
						|
duplicate records.  E.g. in one case I had 3 users with the
 | 
						|
same mailing list email address registered.  I just deleted
 | 
						|
those and sent private email asking the users to use their
 | 
						|
personal/work address instead of a mailing list.
 | 
						|
Apply the database specific schema script:
 | 
						|
----
 | 
						|
  java -jar gerrit.war --cat sql/upgrade017_018_postgres.sql | psql reviewdb
 | 
						|
  java -jar gerrit.war --cat sql/upgrade017_018_mysql.sql    | mysql reviewdb
 | 
						|
----
 | 
						|
 | 
						|
 | 
						|
Important Notices
 | 
						|
-----------------
 | 
						|
 | 
						|
* Prior User Sessions
 | 
						|
+
 | 
						|
The cookie used to identify a signed-in user has been changed.
 | 
						|
Again.  All users will be automatically signed-out during
 | 
						|
this upgrade, and will need to sign-in again after the upgrade
 | 
						|
is complete.  The new schema has more room for extensions, so
 | 
						|
this might be the last time we will need to invalidate sessions.
 | 
						|
 | 
						|
* Harmless error on first startup
 | 
						|
+
 | 
						|
Starting 2.0.21 on an instance which previously had the diff
 | 
						|
cache stored on disk will result in the following non-fatal error
 | 
						|
in the server logs during the first launch of .21 on that system:
 | 
						|
----
 | 
						|
2009-09-02 18:50:07,446::INFO : com.google.gerrit.server.cache.CachePool  - Enabling disk cache /home/gerrit2/android_codereview/disk_cache
 | 
						|
Sep 2, 2009 6:50:07 PM net.sf.ehcache.store.DiskStore readIndex
 | 
						|
SEVERE: Class loading problem reading index. Creating new index. Initial cause was com.google.gerrit.server.patch.DiffCacheKey
 | 
						|
java.lang.ClassNotFoundException: com.google.gerrit.server.patch.DiffCacheKey
 | 
						|
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
 | 
						|
    at java.security.AccessController.doPrivileged(Native Method)
 | 
						|
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
 | 
						|
...
 | 
						|
----
 | 
						|
    This error can be safely ignored.  It is caused by a change
 | 
						|
    in the diff cache's on disk schema, invalidating all existing
 | 
						|
    cache entries.
 | 
						|
 | 
						|
* Significantly larger "diff" cache
 | 
						|
+
 | 
						|
The diff cache schema change noted above changed the element
 | 
						|
stored in the cache from per-file to per-patchset.  That is,
 | 
						|
a patch set which modifies 500 files will now occupy only 1
 | 
						|
element in the diff cache, rather than 500 distinct elements.
 | 
						|
Accordingly, the default `cache.diff.memoryLimit` setting has
 | 
						|
been reduced to 128.
 | 
						|
 | 
						|
* Removed configuration settings
 | 
						|
+
 | 
						|
The following configuration settings are no longer honored:
 | 
						|
`cache.maxAge`, `cache.memoryLimit`, `cache.diskLimit`, and
 | 
						|
`cache.diskBuffer`.  These settings may now only be set on a
 | 
						|
per-cache basis (e.g. `cache.diff.maxAge`).
 | 
						|
 | 
						|
* Connection pool recommendation: Apache Commons DBCP
 | 
						|
+
 | 
						|
All of the servers I run now use Apache Commons DBCP instead
 | 
						|
of c3p0 for their connection pools, and the setup guide and
 | 
						|
sample jetty_gerrit.xml reference DBCP now.
 | 
						|
We've run into problems with c3p0 under high loads, or when
 | 
						|
the connection pool is completely exhausted.  DBCP seems to
 | 
						|
fail more gracefully, and seems to give us less trouble.
 | 
						|
Changing pool implementations is not required, c3p0 is still
 | 
						|
a supported provider.  I just want to make it clear that I no
 | 
						|
longer recommend it in production.
 | 
						|
 | 
						|
New Features
 | 
						|
------------
 | 
						|
 | 
						|
* GERRIT-189  Show approval status in account dashboards
 | 
						|
+
 | 
						|
Account dashboards now show a summary of the approval status on
 | 
						|
each change.  Unreviewed changes are now highlighted to bring
 | 
						|
the reviewer's attention to them.  Tooltips when hovering over
 | 
						|
a cell will bring up slightly more detailed information.
 | 
						|
 | 
						|
* GERRIT-276  Allow users to see what groups they are members of
 | 
						|
+
 | 
						|
Under Settings > Groups a user can now view what groups Gerrit
 | 
						|
has placed them into.  This may help administrators to debug
 | 
						|
a user's access problems, as they can ask the user to verify
 | 
						|
Gerrit is seeing what they expect.
 | 
						|
 | 
						|
* GERRIT-276  Show simple properties of an LDAP group
 | 
						|
+
 | 
						|
If auth.type is HTTP_LDAP, groups which are marked as automatic
 | 
						|
membership now show non-repeating LDAP attributes below their
 | 
						|
description under Admin > Groups.  This display should help an
 | 
						|
administrator to verify that Gerrit has mapped an LDAP group
 | 
						|
correctly.
 | 
						|
 | 
						|
* Move Patch entity out of database and store in cache
 | 
						|
+
 | 
						|
The `patches` database table has been deleted, Gerrit now makes
 | 
						|
the list of affected files on the fly and stores it within the
 | 
						|
diff cache.  This change is part of a long-running series to
 | 
						|
remove redundant information from the database before we switch
 | 
						|
to a pure Git backed data storage system.
 | 
						|
 | 
						|
* Only copy blocking negative votes to replacement patch
 | 
						|
+
 | 
						|
Previously Gerrit copied any negative vote in any approval
 | 
						|
category whenever a replacement patch set was uploaded to
 | 
						|
a change.  Now Gerrit only copies "Code Review -2".
 | 
						|
This change should make it easier for reviewers (and scripts
 | 
						|
scanning `patch_set_approvals`) to identify updated changes
 | 
						|
which might require a new review.
 | 
						|
Adminstrators who have created their own categories and want to
 | 
						|
copy the blocking negative vote should set `copy_min_score = 'Y'`
 | 
						|
in the corresponding approval_categories records.
 | 
						|
 | 
						|
* show-caches: Make output more concise
 | 
						|
+
 | 
						|
Instead of showing ~12 lines of output per cache, each cache is
 | 
						|
displayed as one line of a table.
 | 
						|
 | 
						|
* Handle multiple accountBase and groupBase
 | 
						|
+
 | 
						|
ldap.accountBase and ldap.groupBase may now be specified multiple
 | 
						|
times in gerrit.config, to search more than one subtree within
 | 
						|
the directory.
 | 
						|
 | 
						|
* Summarize collapsed comments
 | 
						|
+
 | 
						|
Collapsed comments (both inline on a file and on the change
 | 
						|
itself) now show a short summary of the comment message, making
 | 
						|
it faster to locate the relevant comment to expand for more
 | 
						|
detailed reading.
 | 
						|
 | 
						|
* Edit inline drafts on Publish Comments screen
 | 
						|
+
 | 
						|
Inline comment drafts may now be directly edited on the Publish
 | 
						|
Comments screen, which can be useful for fixing up a minor typo
 | 
						|
prior to publication.
 | 
						|
 | 
						|
* Less toggly thingies on change screen
 | 
						|
+
 | 
						|
The change description and the approvals are no longer nested
 | 
						|
inside of a foldy block.  Most users never collapse these, but
 | 
						|
instead just scroll the page to locate the information they are
 | 
						|
looking for.
 | 
						|
 | 
						|
* Restore Enter/o to toggle collapse state of comments
 | 
						|
+
 | 
						|
Enter and 'o' now expand or collapse an inline comment on the
 | 
						|
the current row of a file.
 | 
						|
 | 
						|
* Display abbreviated hexy Change-Id in screen titles
 | 
						|
* Use hexy Change-Id in emails sent from Gerrit
 | 
						|
+
 | 
						|
Change-Id abbreviations are now used through more of the UI,
 | 
						|
including emails sent by Gerrit and window/page titles.  This
 | 
						|
change breaks email threading for any existing review emails.
 | 
						|
That is comments on a change created before the upgrade will
 | 
						|
not appear under the original change notification thread.
 | 
						|
 | 
						|
* Add sendemail.from to control setting From header
 | 
						|
+
 | 
						|
Gerrit no longer forges the From header in notification emails.
 | 
						|
To enable the prior forging behavior, set `sendemail.from`
 | 
						|
to `USER` in gerrit.config.  For more details see
 | 
						|
link:http://gerrit.googlecode.com/svn/documentation/2.0/config-gerrit.html#sendemail.from[sendemail.from]
 | 
						|
 | 
						|
Bug Fixes
 | 
						|
---------
 | 
						|
 | 
						|
* Fix ReviewDb to actually be per-request scoped
 | 
						|
+
 | 
						|
When we switched to Guice a misconfiguration allowed Guice to
 | 
						|
give out multiple database connections per web or SSH request.
 | 
						|
This could exhaust the connection pool faster than expected.
 | 
						|
 | 
						|
* Send no-cache headers during HTTP login
 | 
						|
+
 | 
						|
An oversight in the HTTP login code path may have allowed a proxy
 | 
						|
server between the user's browser and the Gerrit server to cache
 | 
						|
a user's session cookie.  Fixed by sending the correct no-cache
 | 
						|
headers, disallowing any caching of the authentication response.
 | 
						|
 | 
						|
* Fix project owner permissions
 | 
						|
+
 | 
						|
Folks reported on repo-discuss that a project owner also had to
 | 
						|
have READ permission to use the Branches tab of their project.
 | 
						|
This was a regression introduced when we refactored some of the
 | 
						|
code when adding Guice to the project.  Fixed.
 | 
						|
 | 
						|
* GERRIT-277  Fix hyperlinks in messages
 | 
						|
+
 | 
						|
Hyperlinks in commit messages such as "<http://foo>" were
 | 
						|
including the trailing > in the URL, making the link broken.
 | 
						|
The trailing > is now properly not included in the URL.
 | 
						|
 | 
						|
* GERRIT-266  Fix web session cookie refresh time
 | 
						|
+
 | 
						|
In 2.0.19 we introduced web sessions stored in Ehcache, but the
 | 
						|
logic was causing sessions to expire roughly half-way through the
 | 
						|
`cache.web_sessions.maxAge` time.  At the default setting, active
 | 
						|
sessions were expiring after 6 hours.  The cache management has
 | 
						|
been refactored to make this a lot less likely.
 | 
						|
 | 
						|
* Cleanup not signed in error to be more user friendly
 | 
						|
+
 | 
						|
The error message which comes up when your session is expired
 | 
						|
is now much more useful.  From the dialog you can restart your
 | 
						|
session by clicking the "Sign-In" button, and return to the
 | 
						|
screen you are currently on.
 | 
						|
 | 
						|
* Fix commit-msg hook to work with commit -v option
 | 
						|
+
 | 
						|
The commit-msg hook was buggy and did not handle `git commit -v`
 | 
						|
correctly.  It also did some bad insertions, placing the magic
 | 
						|
`Change-Id: I...` line at the wrong position in the commit
 | 
						|
message.  The updated hook resolves most of these problems,
 | 
						|
but must be recopied to individual Git repositories by end-users.
 | 
						|
 | 
						|
* Identify PGP configuration errors during startup
 | 
						|
+
 | 
						|
If the encrypted contact store is enabled, the required encryption
 | 
						|
algorithms are checked at startup to ensure they are enabled
 | 
						|
in the underlying JVM.  This is necessary in case the JVM is
 | 
						|
updated and the administrator forgot to install the unlimited
 | 
						|
strength policy file in the new runtime directory.  Recently
 | 
						|
review.source.android.com was bitten by just such an upgrade.
 | 
						|
 | 
						|
* GERRIT-278  Fix missing reply comments on old patch set
 | 
						|
+
 | 
						|
Some comments were not visible because they were replies made
 | 
						|
to a comment on say patch set 1 while looking at the difference
 | 
						|
between patch set 1 and patch set 2 of a change.  Fixed.
 | 
						|
 | 
						|
* Make external_id primary key of account_external_ids
 | 
						|
+
 | 
						|
The database schema incorrectly allowed two user accounts to have
 | 
						|
the same email address, or to have the same OpenID auth token.
 | 
						|
Fixed by asserting a unique constraint on the column.
 | 
						|
 | 
						|
Other Changes
 | 
						|
-------------
 | 
						|
* Start 2.0.21 development
 | 
						|
* Support cleaning up a Commons DBCP connection pool
 | 
						|
* Clarify which Factory we are importing in ApproveComma...
 | 
						|
* Avoid loading Patch object in /cat/ servlet
 | 
						|
* Remove unnecessary reference of patch key in save draft
 | 
						|
* GERRIT-266  Tweak cache defaults to be more reasonable
 | 
						|
* Merge change I131e6c4c
 | 
						|
* Bring back the "No Differences" message when files are...
 | 
						|
* Pick up gwtorm 1.1.2-SNAPSHOT
 | 
						|
* Refactor GroupListScreen's inner table for reuse
 | 
						|
* Do not normalize approval scores on closed changes in ...
 | 
						|
* Don't obtain 0 approvals or submit approvals in dashbo...
 | 
						|
* Update JGit to 0.5.0-93-g5b89a2c
 | 
						|
* Add tests for Change-Id generating commit-msg hook
 | 
						|
* Add test for commit-msg with commit -v
 | 
						|
* Fix formatting error in ApprovalCategory
 | 
						|
* Fix typo in change table column header "Last Update"
 | 
						|
* Fix reference to the All Projects broken when we remov...
 | 
						|
* Use category abbreviations in the dashboard approval c...
 | 
						|
* Format approvals columns in change tables with minimal...
 | 
						|
* Shrink the Last Updated column in dashboards and chang...
 | 
						|
* Highlight changes which need to be reviewed by this us...
 | 
						|
* Fix typo in ChangeTable comment
 | 
						|
* Reduce the window used for "Mon dd" vs. "Mon dd yyyy" ...
 | 
						|
* Don't assume "Anonymous Users" and "Registered Users" ...
 | 
						|
* Log encrypted contact store failures
 | 
						|
* Identify PGP configuration errors during startup
 | 
						|
* Take the change description block out of the disclosure...
 | 
						|
* Move the approval table out of a disclosure panel
 | 
						|
* Explicitly show what value is needed to submit
 | 
						|
* Modernize the display of comments on a change
 | 
						|
* Modernize the display of inline comments on a file
 | 
						|
* Fix "Publish Comments" when there are no inline drafts
 | 
						|
* Merge change 11666
 | 
						|
* Fix display of "Gerrit Code Review" authored comments
 | 
						|
* Fix source code formatting error in FormatUtil
 | 
						|
* Remove unnecessary fake author on inline comments
 | 
						|
* Auto expand all drafts on publish comments screen
 | 
						|
* Remove unused local variable in PublishCommentsScreen
 | 
						|
* Remove unused import from PublishCommentsScreen
 | 
						|
* Use gwtorm, gwtexpui release versions
 | 
						|
* Add javadoc for Change.getKey
 | 
						|
* Updated documentation for eclipse development.
 | 
						|
* Merge change 11698
 | 
						|
* Merge change 11699
 | 
						|
* Merge change 11700
 | 
						|
* Merge change 11703
 | 
						|
* Merge change 11705
 | 
						|
* Moved creation of GerritPersonIdent to a separate provi...
 | 
						|
* Remove unused dependency on GerritServer.
 | 
						|
* Renamed GerritServert to GitRepositoryManager and moved...
 | 
						|
* Remove declaration of OrmException that is never thrown.
 | 
						|
* Increase margin space between buttons of comment editors
 | 
						|
* Simplify GerritCallback error handling
 | 
						|
* Correct comment documenting SignInDialog
 | 
						|
* Remove unused CSS class gerrit-ErrorDialog-ErrorMessage
 | 
						|
* Clarify become any account servlet errors
 | 
						|
* Fix anchor in sshd.reuseAddress documentation
 | 
						|
* Extract parametrized string formatting out of LdapQuery
 | 
						|
* Make cache APIs interfaces for mocking
 | 
						|
* Add easymock 2.5.1 to our test dependencies
 | 
						|
* Add sendemail.from to control setting From header
 | 
						|
* gerrit 2.0.21 |