Release Notes for P4, the Helix Command Line, P4D, the Helix Versioning Engine P4P, the Helix Proxy and P4Broker, the Helix Broker Version 2017.2 Introduction This document lists all user-visible changes to: * Helix Versioning Engine (P4D) * Command line client (P4) * Helix Proxy (P4P) * Helix Broker (P4Broker) in 2017.2 release. Release notes for other Perforce Helix products are available separately on the Perforce Documentation web page. Developer notes for Perforce API programming, the Helix Broker and also a separate document which programmers should read in addition to this release note document. Perforce numbers releases YYYY.R/CCCCC, e.g. 2002.1/30547. YYYY is the year; R is the release of that year; CCCCC is the bugfix change level. Each bugfix in these release notes is marked by its change number. Any build includes (1) all bugfixes of all previous releases and (2) all bugfixes of the current release up to the bugfix change level. Both 'p4' and 'p4d' will report their version information by passing the '-V' flag. Additionally, 'p4' can report the server's information with the 'p4 info' command. Version information includes a release version and a build change number. The build change number can be compared with change numbers and patch information mentioned in the matching version release notes file to determine if a paticular build of a version includes the change mentioned. Supported Platforms for p4d Linux kernel 2.6+ for Intel(x86, x86_64) Windows 8 for Intel(x86, x64) Windows 8.1 for Intel(x86, x64) Windows 10 for Intel(x86, x64) Windows 2008 for Intel(x86, x64) Windows 2012 for Intel(x64) Windows 2016 for Intel(x64) Apple Darwin 9.0+ for Intel(x86, x86_64) Supported Platforms for p4 Linux kernel 2.6+ for Intel(x86, x86_64) Windows 8 for Intel(x86, x64) Windows 8.1 for Intel(x86, x64) Windows 10 for Intel(x86, x64) Windows 2008 for Intel(x86, x64) Windows 2012 for Intel (x64) Windows 2016 for Intel(x64) Mac OS X 10.5, 10.6, 10.7, 10.8, 10.9, 10.10(x86, x86_64) Apple Darwin 9.0+ for Intel(x86, x86_64) Supported Platforms for p4p and p4broker Linux kernel 2.6+ for Intel(x86, x86_64) Windows for Intel(ntx86, ntx64) Apple Darwin 9.0+ for Intel(x86, x86_64) -------------------------------------------------------------------------- Important security note This release links OpenSSL version 1.0.2n. Note: 2017.2 Patch 2 upgrades to OpenSSL 1.0.2n -------------------------------------------------------------------------- Important export note This product is subject to U.S. export control laws and regulations including, but not limited to, the U.S. Export Administration Regulations, the International Traffic in Arms Regulation requirements, and all applicable end-use, end-user and destination restrictions. Licensee shall not permit, directly or indirectly, use of any Perforce technology in or by any U.S. embargoed country or otherwise in violation of any U.S. export control laws and regulations. -------------------------------------------------------------------------- Upgrading the Server ** IMPORTANT UPGRADE NOTES ** CHANGES TO UNLICENSED SERVER FOR THIS RELEASE For v16.1 onwards of the Helix Versioning Engine (P4D) the number of free users allowed with an unlicensed server has changed to 5, the number of clients remains at 20. Previous versions of the server will continue to support the 20/20 usage allowance. ------------------------------------------------------------------- BEFORE UPGRADING To upgrade your Helix Versioning Engine (P4D), your Perforce license file must be current. Expired licenses do not work with upgraded servers. In addition to your usual checkpointing scheme, always checkpoint your server immediately before undertaking an upgrade. DOWNGRADING A 2017.2 SERVER IS NOT POSSIBLE UPGRADING PROCEDURE IS DIFFERENT DEPENDING ON WHAT YOUR CURRENT PERFORCE VERSION IS: UPDATE DATABASE SCHEMA vs UPDATE DATABASE FORMAT ------------------------------------------------------------------- ** UPDATE DATABASE SCHEMA If your current server version is 2013.3 or above, then this upgrade is a UPDATE DATABASE SCHEMA upgrade: Unix Platforms 1. Issue the 'p4d -r -J -xu' command. This command performs the significant schema upgrades, then exits. 2. Restart your server with your site's usual parameters. Windows Platforms 1. Issue the 'p4d -r -J -xu' command from a command prompt window. This command performs the significant schema upgrades, then exits. 2. Restart your Helix Versioning Engine (P4D) service. Note: Personal DVCS servers will automatically perform any database schema upgrades; whilst the upgrade steps described above are unnecessary for these servers, they are safe to run. ------------------------------------------------------------------- ** UPDATE DATABASE FORMAT If your current server version is 2013.2 or a previous release then this upgrade is an UPDATE DATABASE FORMAT upgrade: Due to the new btree format introduced in 2013.3 this is not an UPDATE DATABASE SCHEMA upgrade. A checkpoint using your old server and then a restore using the 2017.2 server is required before the internal upgrades 'p4d -xu' (if required) can be performed. Note: If you have made use of the (undocumented) '+T' modifier (storing file content in the tiny.db database) this data is not checkpointed (and therefore not restored). See 'p4 help undoc' for backup/restore procedures for this table. Once the database has been restored with the 2017.2 version, update your database schema: Unix Platforms 1. Issue the 'p4d -r -J -xu' command. This command performs the significant schema upgrades, then exits. 2. Restart your server with your site's usual parameters. Windows Platforms 1. Issue the 'p4d -r -J -xu' command from a command prompt window. This command performs the significant schema upgrades, then exits. 2. Restart your Helix Versioning Engine (P4D) service. -------------------------------------------------------------------------- Interoperating With Previous Releases 1. Unless stated otherwise you can intermix any release of Helix Command Line (P4) with any release of the Helix Versioning Engine (P4D), but any functionality new to 2017.2 requires you to upgrade the client and/or P4D. See marks in the notes below. * -- requires new p4 client program including all client applications and derived APIs ** -- requires new p4d server program *** -- requires new p4p proxy program **** -- requires new p4broker broker program Any replica servers must be at the same release levels as the master server; any functionality that requires an upgrade for the master requires an upgrade for the replica, and vice versa. 2. Beginning with 99.2, remote depots will interoperate between UNIX and NT. Beginning with 98.2, remote depots will interoperate across (98.2 and higher) releases. In 98.1 and before, remote depots will only operate with another server of the same release. 3. As of 2005.1, remote depot support for 98.2 and 99.1 servers has been dropped. Attempts by 98.2 and 99.1 servers to contact 2005.1 servers still works, but the depots will appear devoid of files. -------------------------------------------------------------------------- Technology Preview features: Technology Preview features are currently unsupported, might not be functionally complete, and are not suitable for deployment in production. These features are provided to the customer to solicit interest and feedback, with the goal of full support in future releases. Customers are encouraged to provide feedback and functionality suggestions for Technology Preview features before they become fully supported. -------------------------------------------------------------------------- Important note: Please refer to: http://www.perforce.com/perforce/r17.2/user/relnotes.txt to get up to date GA and post-GA information about this release. -------------------------------------------------------------------------- Major new functionality in 2017.2 #1547263 (Bug #92369) ** Edge servers now support syncing file content from graph depots. Replication for graph depot archives in both pack file and loose file formats is supported. #1538827 (Bug #90551, #90550) ** Replication now supports a method for providing external transfer of archive data. Pull threads may be configured to run with the --trigger option and a pull-archive trigger that will perform the external archive file transfers. In addition, 'p4 submit' can be configured to use external transfer of archives from Edge to Commit servers using ordinary edge-content triggers. This edge-content trigger must call 'p4 fstat -Ob' and an external file transfer command to perform the transfer. For details and examples, see http://answers.perforce.com/articles/KB/15337 Technology Preview features in 2017.2 #1566758 (Bug #92605) ** Further Graph Depot enhancements. The following commands, used in conjunction with the git data model are now documented as technology preview features: add, delete, diff, edit, filelog, fstat, merge, opened, revert, submit, switch and graph tag. Those commands that would allow changes to be committed will require the client workspace's Type field to be set to graph. This switches which data model is writable. (For more information see 'p4 help-graph'). #1520950 (Bug #48959) ** Second factor authentication support. Users can now be configured to require second factor authentication on a per host basis. This involves first enabling second factor authentication by adding 3 new auth triggers and then setting the 2FA modifier on the user's AuthMethod in the user spec (it can be used with either 'perforce' or 'ldap'). The new triggers are: * auth-pre-2fa - returns a list of second factor authentication methods that the user may use. * auth-init-2fa - begins the second factor authentication process for a given method. * auth-check-2fa - verifies a one-time-password/token/passphrase/etc against the second factor authentication service or checks the status of an ongoing session. The output of these triggers is complex. For details and examples, see the 'p4 help 2fa' documentation and http://answers.perforce.com/articles/KB/15334 Minor new functionality in 2017.2 #1559712 (Bug #50586) ** A new command 'p4 bgtask' has been added that allows super users to remotely run programs on the server, or to run them as startup commands. #1558406 (Bug #75754) ** 'p4 pull -R' provides an easy way to retry failed 'p4 pull -u' failures. #1556644 (Bug #88636) ** 'p4 pull -l' (and 'p4 pull -ls') can now be done on commit server to list submits occurring in an Edge server that are to be replicated to the Commit server. #1553712 (Bug #92324) * ** The filesys.checklinks configurable will now allow directory symlinks to be added/reconciled when it's set to the value '3'. #1538126 (Bug #91517) ** 'p4 pull -u --batch' can use new --min-size and --max-size options to assign differently sized files to different pull threads. #1536638 (Bug #92216) ** All triggers now provide a new 'language' variable that provides the user's specified language. If the user has not specified a language the variable will be set to 'unset'. #1536367 (Bug #80896) ** 'p4 shelve' now accepts the '--parallel' flag, to specify that multiple files should be transferred in parallel, using independent network connections from automatically-invoked child processes. In addition, new configurables net.parallel.shelve.* allow 'p4 shelve' to automatically use parallel threads to transfer files. Please see 'p4 help shelve' and 'p4 help configurables' for complete information. #1531997 (Bug #29410) ** The 'p4 describe' command now has a '-a' flag that displays the content of added files. #1519158 (Bug #14944, #15488) ** The 'p4 changes' command now has a '-r' flag that reverses the command output. Bugs fixed in 2017.2 Patch 8 #1821146 (Bug #99117) ** 'p4 protects -M' was not displaying the correct result in P4AUTH environments. Additionally, the path handling for this command was only considering protections that matched all of the provided path not just a portion of that path. This has been fixed. #1805432 (Bug #97669) * ** *** **** SSL connections that negotiated with TLS 1.1 and above handshakes were rejected as plaintext. This has been fixed. Note that successful negotiation would still result in the use up to TLS 1.2 regardless of the version used for negotiation. #1782921 (Bug #92961) ** Successful OTP based 2FA events logged to the auth.csv structured log were incorrectly recorded as failures. This has been fixed. Bugs fixed in 2017.2 Patch 7 #1760183 (Bug #97155) ** Deletion of a shelf during a 'p4 submit -e' could leave opened files that could not be reverted. This has been fixed. #1753593 (Bug #97618) ** Edge servers no longer allow deletion of a shelf created during the edge server submit process while the submit is in progress. Bugs fixed in 2017.2 Patch 6 #1747844 (Bug #95435) ** 'p4 undo' was recording the incorrect resolve action when files being undone were modified with 'p4 edit' before submit. This has been fixed. #1737174 (Bug #97134) ** Group protections entries containing wildcards in the group name could cause a server crash. This has been fixed. #1728431 (Bug #96335) ** Admin/super user cannot unlock files after failed/rejected DVCS push Running p4 -c unlock -f -r //path/to/file returns a permission error when done by admin while it should be allowed because of the -f option. This has been fixed. #1727659 (Bug #96662 ) ** Parallel submit could fail to transfer archive content if the file transfer threads exit without error. This has been fixed by insuring that archives exist on the server before the submit continues and reports success. #1709635 (Bug #96468) ** A graph merge -n operation with a conflicting file incorrectly stated that the merge will succeed. This has been fixed. #1709629 (Bug #96469) ** A graph merge -n operation did not clean up correctly, failing a subsequent graph merge request. This has been fixed. Bugs fixed in 2017.2 Patch 5 #1720726 (Bug #94695) ** 'p4 integ' of a stream with a +S moved file could propagate wrong content. This has been fixed. #1715429 (Bug #96569) ** The 'p4 switch stream@change' command now takes into account stream imports when syncing files. #1709174 (Bug #96381) ** The 'p4 journals' command when run during a checkpoint operation could hang the server. This has been fixed. #1703335 (Bugs #92403, #95219) ** 'p4 revert -C client' would fail to revert files in the target workspace if that workspace was locked or specified a host other than the one the command was run from. This has been fixed. #1692145 (Bug #96155) ** Improve the performance of group protections. #1690836 (Bug #95656) ** Ensure all clients see stream view changes after 'p4 stream edit'. #1674913 (Bug #94847) ** The filesys.checklinks configurable may now be set to '4', providing the same checking as '3' but disallows using '-f' to override the check. #1672655 (Bug #94877) *** Fix new proxytotals reporting accuracy. #1653657 (Bug #95033) ** A scheduled checkpoint on a 'standby' or 'forwarding-standby' server executed when the master server's journal is rotated no longer corrupts the prior journalcopy'd journal. Bugs fixed in 2017.2 Patch 4 #1648489 (Bug #94825) ** 'p4 fstat using a revision specification on an opened file would hang if the file had ditto mapping. This has been fixed. #1647697 (Bug #94951) ** Referencing autoreloaded labels uses much less memory. #1646839 (Bug #94877) *** Additional logging is now reported by the proxy when track=1 is set. The new proxytotals line records the number of files and the total file size (in MB) transferred to the client from the upstream server and from the proxy's cache. Bugs fixed in 2017.2 Patch 3 #1620423 (Bug #90502) ** 'p4 resolve' in a federated environment could leave orphaned locks after a filetype resolve that changed files from '+l' to filetypes without '+l'. This has been fixed. #1618401 (Bug #94152) ** Concurrent label create/delete of the same label no longer hangs. #1616808 (Bug #94116) ** 'p4 shelve -d' without any file arguments leaks memory. This change fixes the issue. #1614169 (Bug #94050) ** Fix for 'p4 keys -e nameFilter' to support a period in key names. #1611860 (Bug #92645) ** Parallel sync performance through the proxy has been improved for some scenarios. #1609806 (Bug #93947) ** A shelve delete trigger does not fire if the file is specifed in the command and does not exist in the changelist. This has been fixed. #1609792 (Bug #93973) ** 'p4 ldapsync -u' would only delete users if a spec depot were present. This has been fixed. Bugs fixed in 2017.2 Patch 2 #1607486 (Bug #93936) ** The graph mode of 'p4 merge' would perform a fast-forward when possible, ignoring the --squash flag. This has been fixed. #1606983 (Bug #93931) ** The graph mode of 'p4 merge' no longer accepts both --no-ff and --squash at the same time. #1606951 (Bug #93857) ** Corrupt git pack indexes now cause errors to be returned. #1606799 (Bug #93925) ** 'p4 copy' and 'p4 integ' requests are now rejected for graph clients. #1605825 (Bug #93871) ** 'p4 where' run against replica using a partitioned or readonly client could suppress output from additional commands run within the same connection. #1605817 (Bug #93794) ** 'p4 files' correctly reports 'no such file(s).' for an empty repo branch. Upgrade to SSL 1.0.2n #1603922 (Bug #93716) ** The revert of open files during a 'client -d -f' command are now batched into fewer larger transactions, resulting in more efficient replication of this command. #1600238 (Bug #93691) ** 'p4 describe' correctly reports commits containing deleted files. Bugs fixed in 2017.2 Patch 1 #1588156 (Bug #92867) ** p4 describe -n will have misleading message when the wrong repo is used for a given commitsha of another repo. Rather than "Blob data not found for sha..." it will display "Commit not found in repo" This has been fixed. #1588156 (Bug #92123) ** p4 describe -n repo did not specify file name between each diff segments. Whenever more than 1 file had been changed, there would be no way for a user to know when the first diff segment ends and when the next starts. This has been fixed. #1590975 (Bug #93382) ** The use of clients bound to specific servers were not being restricted to those servers in all circumstances. This has been fixed. #1589629 (Bug #92849) ** 'p4 rec -a ...' or 'p4 add ...' could cause the client to crash when invoked from the client root and the root directory name has an excessive number of ellipses. This has been fixed. #1587659 (Bug #92240) * ** *** **** An experimental fix has been made to solve the write/write deadlock issue that affected the 2017.1 TCP performance improvements. The default behaviour is still for this functionality to be disabled until enough reports of the fix's success have been collected. To enable and test this fix, the configurable 'net.autotune' must be set to 1 on the client, any intermediaries and the server. For example, to enable this in P4V, 'net.autotune=1' must be set in a P4CONFIG file in P4V's startup directory. #1587040 (Bug #93117) ** 'p4 pull --trigger' would fail to pull archive files from graph depots and would report "Permission denied" errors in the log. This has been fixed. #1586858 (Bug #93136) ** LDAP based user auto-creation, run against a replica not using 'rpl.forward.login', would only create the user on the replica (not on the master). This has been fixed. #1584626 (Bug #92894) ** 'p4 -ztag describe -S' would update the shelveAccess date even though the shelved content was not displayed. This has been fixed. #1583727 (Bug #93160) ** 'p4 edit -t type' run against a file in a graph depot would not update the filetype in the committed tree object. This has been fixed. #1579211 (Bug #92972) ** The help output of 'p4 help-graph opened' and 'p4 help-graph revert' now show graph depot-specific help for those commands (tech preview). Upgrade of OpenSSL to 1.0.2m Bugs fixed in 2017.2 #1577859 (Bug #93001) ** 'p4 annotate -I' will no longer terminate abnormally if access to a branch is excluded within some integration histories. #1577673 (Bug #92882) ** Archive file transfer failure from the Edge Server to the Commit Server during parallel submit could sometimes be undetected. If submit succeeded in this scenario, the archives would be missing on the Commit Server. This has been fixed to insure that the command fails when the transfer fails. #1573540 (Bug #92777, #92817) ** 'p4 reconcile -a' and 'p4 clean' would fail to detect files to add or clean if the command was invoked without arguments from a directory containing the '@' character. This has been fixed. #1572571 (Bug #91927) ** A 'p4 have' without a valid login run through a routing Broker could receive a 'restricted to use' message or an 'invalid or unset' depending on which replica responded - now it always gets the 'invalid or unset' error. #1570784 (Bug #92648) ** Logins forwarded through a broker to a replica could have the replica<->master connection left open if the client dropped at the wrong time. #1568172 (Bug #91885) ** Submitting a moved 'utf8' file using a pre-15.2 client no longer results in a missing archive. #1567257 (Bug #92360) ** Graph depot archive data must utilize server.depot.root configurable. Caveat: 17.1 -> 17.2 upgrade will require any graph depot archive data to be manually moved if server.depot.root had been set prior to the upgrade. #1561151 (Bug #92417) ** A delay in the replication of a consistency point will no longer corrupt the journal written by a 'journalcopy' thread. #1558115 (Bug #92327) ** A submit of a +Sn file will no longer cause a failure of a concurrent 'clone' or 'fetch' operation. #1529453 (Bug #91971) ** Parallel sync performance has been improved for some scenarios in which distribution of load across the transmit threads was not an issue. #1526861 (Bug #90476) ** 'p4 sync -r ' would error if the file was either the 'to' or 'from' half of a moved file. #1526302 (Bug #90686) ** Increase receive buffer sizes for the Perforce API to 1 megabyte which shows substantial performance improvement for several wide area network operations and prevents network hangs in some cases. Old value was 32k. Can be adjusted with net.rcvbufsize #1526247 (Bug #90798) ** 'p4 sync' against a repo (graph depot) would not honor the client option 'noclobber'. #1525293 (Bug #90697) ** Parallel submit from an Edge Server could corrupt the archives of non-ktext files if they contain RCS keywords. This has been fixed. #1523244 (Bug #89630) ** The 'net.parallel.sync.svrthreads' configurable reduces the number of parallel transmit threads used by sync commands when the total number of 'user-transmit' threads (from all commands) running concurrently in the server would exceed the value of this configurable. Server monitoring must be enabled for this new configurable to have any effect. #1521469 (Bug #88774) ** Errors reported from 'p4 describe -I' and 'p4 change -I' from using unknown change identity values were confusing. These errors are now more specific and less confusing. #1519323 (Bug #91682) ** Setting the 'track' configurable to a value of zero now correctly supresses reporting the tracking metrics for 'rdb.lbr' in the replica's server log. #1519279 (Bug #91568) ** Tagged output for 'p4 shelve' and 'p4 submit' from an edge server didn't report the 'change' number when dm.shelve.promote=1 and security=3 are set on the edge server. This has been fixed. #1516923 (Bug #91055) ** The 'annotate -I' command now correctly considers all the needed revisions of a depot file that is a "from" file into multiple branches as permitted by access through the integration history. #1506651 (Bug #90330) ** 'p4 copy' could miss needed copies in a complex case of moves and earlier copies.