Major Enhancements

#555450 (Bug #59844) ** This release provides support for lightweight short-lived branches when using Perforce streams. This new type of branch is utilized by creating a stream of type 'task'. This special type of stream behaves similarly to a 'development' stream except that branched data is not stored in the regular repository tables. Submitting revisions that are not simple branches will promote file data to regular (visible) database tables, otherwise most meta-data for the 'task' stream will remain private. Task streams come with some caveats, they cannot be re-parented, they cannot have child streams and private data (un-promoted) is not visible except to clients of the task. When a 'task' stream is completed it should be either deleted or unloaded, this keeps task meta-data to a minimum and reduces checkpoint time.

#521779 (Bug #11379) * ** *** IPv6 network connections are now fully supported (in addition to the existing IPv4 support). An IPv4 or an IPv6 address may be used wherever an address literal is allowed, and hostnames may now resolve to an IPv6 address. Servers can now listen on either an IPv4 address or on an IPv6 address, and by listening on the IPv6 wildcard address ([::]) they can accept both IPv6 and IPv4 connections (if the host OS supports it). P4PORT strings can require either IPv4 or IPv6, or allow both (in which case they can specify a preference). See 'p4 help networkaddress' for additional details on syntax.

In particular, IPv6 addresses may be used in the host field of the protects table. IPv4 addresses in the host field will also apply to the corresponding IPv4-mapped IPv6 address, and vice-versa.

For backwards compatibility, IPv6 is disabled unless explicitly requested or allowed, via either P4PORT or the net.rfc3484 tunable. When IPv6 is allowed, addresses that are reported (in log files, messages, etc) will be IPv6 addresses for IPv6 connections. Customer scripts that parse such strings should be enhanced to support IPv6 address strings.

#539809 (Bug #53058) ** Shelved changes containing files that do not require resolve may be submitted directly without unshelving first via 'p4 submit -e <shelvedChange#>'. See 'p4 help submit' for details and restrictions.

#538913 (Bug #36686) ** Shelved changes may now be unshelved into different branches or related streams via 'p4 unshelve -b' and 'p4 unshelve -S'. See 'p4 help unshelve'.

Minor Enhancements

#573464 (Bug #62517) ** At times the stream view generator is changed causing different client or branch views to be generated. The existing method to force a new client view to be generated is by editing the stream view, or parent fields. Now 'p4d -xf 57689' can be used to cause all existing stream-client views to be marked stale, forcing new client views to be generated on next stream-client usage.

#571383 (Bug #62343) ** 'p4 unlock -s <shelvedChange>' will unlock files left locked by an aborted 'p4 submit -e' command.

#557509 (Bug #61754) ** The '-T' argument to 'p4 export' and 'p4 pull' now allows the table name list to be separated by either commas or spaces.

#555572 (Bug #61641) ** 'p4 counters' and 'p4 keys' now support the '-m max' option to limit the output to the first 'max' counters/keys.

#549890 (Bug #15834) ** A trigger may now specify the variables %peerip% and/or %peerhost% when it needs to distinguish between the ip/host that originated the command and the ip/host of the proxy, broker, or replica which conveyed that command to the server.

#549743 (Bug #51831) ** 'p4 pull -l -j' now includes information about the replica's current time and time zone.

#549223 (Bug #53334) ** *** Added an additional field "SV" to the credentials config file that allows the user to overwrite the "Starting Valid" date for the certificate. This value is interpreted as an offset of days from the default value of "now" and it can be positive or negative. The documentation for this new field is as follows: SV: number of days from now for starting date of validity Note that value can be positive or negative. Also note that the units value DOES NOT pertain to this field, it is always in "days". (default: 0, e.g. starting validity is now) SV =

#549167 (Bugs #60033,#60461) ** A delay has been added when failing to login after a configurable number of attempts. The delay increases up to a maximum of 10 seconds (controlled by configurable dm.user.loginattempts), the default attempts maximum is 3.

#549153 (Bug #53542) ** *** Files in P4SSLDIR can now have user read-only permissions. Prior to this release, files had to be user read-write permission. In addition the P4SSLDIR can now be user read-execute permission.

#546277 (Bug #61243) ** 'p4 change -U <newuser>' changes the owner of an empty pending change.

#542934 ** 'p4 copy' will now produce a "no such file(s)" error when the source path is completely empty, rather than opening all target files for delete.

#529441 (Bug #59601) ** 'p4 opened -a file ...' can now be used with a new flag '-s' to improve performance with large repositories that have many clients. Using '-s' (short) output reduces the information returned but enables quicker processing.

#540894 (Bug #41825) ** A replica server can now filter revision data and/or active client data when journal records are retrieved from the target server. For more information, see 'p4 help server' and 'p4 help pull'.

#538414 (Bug #17818) ** When 'security' is set to a non-zero value, setting the new configurable 'dm.password.minlength' (default 8) will require that a password has at least that many characters.

#536043 (Bug #55700) ** A replica server may specify 'lbr.replication=ondemand' to indicate that file content transfers should not be scheduled.

#535812 (Bug #45046) ** The replica server now supports the 'p4 pull -d' command to cancel an unwanted file content transfer.

#530488 (Bug #44943) ** The stream spec now allows a 'group' as the stream owner instead of a user. When a stream is owned by a group, any user within that group or subgroup can update a locked stream or submit to the stream when the 'ownersubmit' option is set.

#527471 (Bug #53537) ** Invocations of 'p4d -Gc' and 'p4d -Gf' are now logged as event records in structured server logs.

#527364 ** Server performance tracking now includes information about triggers which take an unexpectedly long time to execute.

#519545 (Bugs #33242,#49675) ** Setting the configurable 'server.maxcommands' to a non-zero value will cause the server to refuse to accept more than that many simultaneous command requests. We encourage you to set 'server.maxcommands' to a value which is low enough to detect a runaway script or denial of service attack before your server hardware resources (swap file, process/network limits, etc.) are exhausted, yet high enough to maintain a substantial cushion between your server's typical average number of connections and the max value, in order to accommodate normal bursts of activity. If P4LOG is defined, the server log will contain lines of the form 'Server is now using N active threads'. which will help you assess your current level of activity; consider setting 'server.maxcommands' to a value which is larger than your current normal activity level, but small enough to protect the server from extreme request loads. Note: on AIX platforms, the server.maxcommands feature requires that monitoring be enabled.

#519339 (Bug #59013) ** Configuring a replica of a replica is now possible. Note that this is an advanced scenario and you should first become comfortable with simple replication scenarios. Certain configurations are not useful (e.g., configuring a forwarding replica of a read-only replica is pointless); please contact Perforce technical support for guidance if you are considering a multi-level replica installation.

#508420 (Bug #59515) ** The new command 'p4 property' can be used by administrators to view and update property definitions stored on the server. The server does not use property definitions itself; it provides this capability for client software that finds it useful.

#505844 (Bug #61399) ** 'p4 sync' now accepts a '-N' flag to display a summary of the estimated size of the sync command, without actually executing it. In addition, for servers with structured server logging enabled, 'p4 sync' commands now log size estimation information in new log record type 14.

#503533,503656 (Bugs #1231, #7727) ** * The p4 command now supports a global '-q' flag. When set, this flag suppresses all informational messages; only warnings and errors are displayed. A new flag '-q' has been added to 'p4 integrate', 'p4 copy', and 'p4 merge'; when set, it suppresses normal output about the list of files being integrated, copied, or merged.

#503080 (Bugs #1344, #54775) ** The new configurable 'run.users.authorize' can be set to 1 to cause the server to require authentication and authorization for the 'p4 users' command.

Bug Fixes

#606657 (Bug #60500) * 'p4 reconcile -a' generated translation errors with clients using a non-utf8 P4CHARSET setting against a unicode server. This has been fixed.

#603329 (Bug #64013) ** 'p4 revert' of unmatched move/delete files could in rare cases produce librarian errors or a crash. This has been fixed.

#598303 (Bug #63987) ** A memory leak in replica on-demand file transfer is fixed.

#598155 (Bug #63967) ** Updating the label spec for an autoreload label was incorrectly clearing the existing label contents.

#597848 (Bug #63333) ** On an outer server configured to use another server as its P4AUTH server, if a command requiring remote authentication is issued with a client of a Stream, the P4AUTH server would fail to authenticate with an incorrect error message.

#596664 (Bug #63713) ** *** Broker and proxy fail client authentication when net.mimcheck=5 and IPv6 literal addresses are used.

#596288 (Bug #63533) ** 'p4 reconcile -a' could generate 'Database get' errors trying to add files that are already opened when the client uses overlay mappings, or has changed the client map without syncing. This has been fixed.

#595808 (Bug #63812) ** On a unicode-enabled server configured to use another unicode server as its P4AUTH server, 'p4 review' was failing.

#590013 (Bug #62918) ** 'p4 annotate -iI' will now produce a usage error rather than silently ignoring the '-i'.

#589943 (Bug #63121, #63191) ** 'p4 integrate' will no longer consider contiguous ranges of directly credited source revisions for integration. Previously it was possible for revisions that were integrated with "-f" to be re-integrated due to the resulting history not clearly indicating which changes were applied by the merge.

#588844 (Bug #63236) ** 'p4 integrate' of a file that has been repeatedly deleted and re-added will no longer produce a conflict when the file has been deleted in the target branch.

#584476 (Bug #62805) ** 'p4 submit' will fail with an appropriate error if the change being submitted has shelved files due to a concurrent 'p4 shelve' command.

#583869 (Bug #62823) ** Using a client or label as a template now updates its access time.

#583451 (Bug #62790) ** 'p4 interchanges' will no longer report changelists associated with revisions that have been made irrelevant by a 'copy' operation.

#582893 (Bug #62837) ** Edits made prior to a user-specified integration range are now considered to be ignored for purposes of deciding how important it is to include them in the merge base versus already-integrated edits.

#582216 (Bug #62819) ** Previous edits made to deleted files that have been ignored are now considered ignored by future integrations.

#581888 (Bug #62138) ** Files with sizes greater than 2^31 bytes had their file size incorrectly displayed by 'p4 pull -l' and 'p4 pull -l -s'.

#581498 (Bug #62787) ** 'p4 integrate' will now schedule move resolves correctly for files that were previously opened for integrate.

#581376 (Bug #62579) ** 'p4 reconcile -a' and 'p4 status' would try to open or report a file already opened for add if the file had been deleted at the head revision. This has been fixed.

#580235 (Bug #62734) ** A corrupted RCS archive which was missing the deltatext for the head revision could cause the server to crash.

#580188 (Bug #42670) ** Running concurrent 'p4 shelve' commands to both update and delete the same shelved change could cause unexpected loss of shelved data. This has been fixed.

#580136 (Bugs #62686,#62922) * Fixed 'p4 delete symbolic-link-to-directory', which was broken by change 492002.

#579718 (Bug #62604) ** The command 'p4 diff @=<shelved changelist>' would return incorrect results for branched files.

#579138 (Bug #62606) ** Fixed 'p4d -jd' crash on a read-only database due to change 508345.

#575512 (Bug #62061) ** Change #397964 introduced a regression allowing streams of type 'mainline' be saved with another stream as Parent. This has been fixed.

#569569 (Bug #62171) ** 'p4 -u <newuser> user' will now fail to create a new user if there is an error in the user spec when the 'noautocreate' configurable is set. Previously the new user would be created anyway.

#569270 (Bug #57689) ** Stream view generation has used an algorithm that has placed significance in a single dot in view mappings. The result is inconsistent client or branch views, based on the complexity and lineage of the stream. This algorithm, by default, will no longer place such emphasis on single dots in view mappings.

#569052 (Bug #57370) ** Leading wild-cards of Stream path definitions are not always flagged as errors when the stream is saved. Bug fix #484326 was not stringent enough for certain surreptitious mappings, which this change corrects.

#568019 (Bug #62081) ** 'p4 integrate' could report ignored revisions as still requiring integration when ignores had been combined with a copy into the same revision. Fixed.

#566564 (Bug #57798) ** Stream views have been reordering Remapped paths causing certain views to be generated incorrectly. This has been corrected but for the new correct views to be generated, the streams will need to be updated and saved.

#561180 (Bug #52246) ** 'p4 unshelve' to open a file for add will schedule a baseless merge and open the file for edit if the file already exists in the depot.

#559674 (Bug #61920) ** Two or more submits running concurrently could lock-step each other in a way that would delay the call to get the wallclock time for the submit, this could result in changelist/time ordering anomaly.

#558151 (Bug #61809) ** Specifying an unloaded client or label as a template using the -t flag to 'p4 client' or 'p4 label' now issues an error message.

#555164 (Bug #61646) ** 'p4 verify -q //pattern...' now prints an appropriate message if there are no such files matching the pattern.

#554167 (Bug #61573) ** 'p4 submit -c' could succeed even if the change had shelved files if the files in the change had been previously locked. This has been fixed so that the submit will fail as expected.

#553462 (Bug #51589) ** shelve-delete triggers would not fire unless there were files opened at that change in a workspace. This has been fixed.

#553344 (Bug #58397) ** 'p4 sync -q' was failing to report non-existent files.

#549497 (Bug #53669) ** A stream depot can be deleted while stream specifications still point to the depot. The deletion of the depot now checks for streams first.

#548995 (Bug #57794) ** A workspace with a name which contains a backslash (\) character no longer creates an invalid spec depot entry on a Windows server.

#548246 (Bug #61303) ** The message 'Forwarder set trusted client address' no longer appears in P4LOG unless the server trace level is set to 4 or more.

#547623 (Bug #61235) * 'p4 reconcile' no longer crashes on Windows8 X64.

#547586 (Bug #61280) ** Password expiration problems on a replica server which specifies lbr.replication=none are resolved.

#545955 (Bug #59572) ** Server restart command on Windows now allows client commands to stop before initiating the restart operation.

#545904 (Bug #60304) ** The server now refuses attempts to create a user name with an embedded NUL byte inside the name.

#542396 (Bug #58064) ** Audit records written to structured server logs for file contents transfered from server-to-server for remote depots and replicas (f_action="import") now contain accurate revision identifiers.

#540594 (Bugs #53165,#60056) ** *** A Windows virus scanner will no longer block access to the logfile and cause multiple concurrent threads to hang.

#539320 (Bug #49295) ** Restricted changelist descriptions will no longer be visible if all the files associated with that change have been obliterated.

#538652 (Bug #60705) ** 'p4 unload' command can report misleading success message even when the command fails. This has been fixed.

#535454 (Bug #60483) ** The 'p4 admin resetpassword' command may not be issued against a replica server.

#532397 (Bug #58303) ** 'p4 describe' no longer issues the fatal error message: 'Change NNNNN description missing!' if a simultaneous 'p4 change -d' command deletes the change while it is being described.

#532068 (Bug #58474) ** Some commands which reacquire locks e.g. 'p4 changes -l' were not cacheing effectively. Some disk read I/O's were also missing from track information. Fixed.

#531369 (Bug #58857) ** Interrupting a checkpoint 'p4d -jc' or journal rotation 'p4d -jr' could leave the counters table in a corrupt state. Fixed.

#528848 (Bug #48725) ** 'p4 diskspace' now includes spec depots, archive depots, and unload depots in its report.

#528378 (Bug #49612) ** The '-s' flag to 'p4d' is only valid when '-jr' or '-jrc' is also specified.

#528207 (Bugs #48719,#57850) ** A change-content trigger that queried the server for information about a file moved by 'p4 move' could get incorrect results.

#527665 (Bug #53520) ** 'p4 logschema' now includes a human-readable name for the log record type.

#527589 (Bug #52729) ** 'p4 logappend' now issues a warning if no logs have been configured to record user log events.

#503100,526227 (Bugs #59284,#59285) ** The 'p4 submit' command can now detect certain specific types of damage to the db.revhx index, and will prevent further damage.

#521622 (Bug #55320) * ** *** The server and proxy no longer support the Zeroconf server registration protocol. The P4ZEROCONF environment variable is no longer implemented, and the 'p4 browse' command has been removed.

#520723 (Bugs #21350,#36126) ** The 'p4d -jr' command now checks to see if a checkpoint is being replayed into an existing database directory by mistake. To bypass the check, and allow replaying a checkpoint over an existing database, specify 'p4d -jrF <checkpoint-file>'.

#520399 (Bug #59310) ** When the same event is logged to multiple structured log files, the log record will now have the same high precision timestamp in each log file.

#515167 (Bugs #59192,#51548) ** A memory leak in the client workspace lock feature is fixed.

#514839 (Bug #58872) ** The 'p4 client -o' and 'p4 label -o' commands will now display a placeholder line in the View: field for a client or label which has been unloaded with the 'p4 unload' command.

#514334 (Bug #59197) ** A 'p4 diff2' command issued against a replica server might have reported librarian errors if the files were of type ktext.

#514181 (Bug #59204) ** *** Low-level file locking errors on Windows are now reported.

#513549 (Bug #58934) ** A 'p4 verify' command which is run against a server which has a spec depot defined and which has millions of non-mappable damaged revision entries will no longer crash the server.

#513373 (Bug #59131) ** A shelve-commit trigger which updates the same client that is used to submit the shelf will no longer deadlock on the client lock.

#513214 (Bug #59085) ** 'p4 protects //pattern/...' will no longer crash if the protections table contains a single line with hundreds of wildcards.

#512707 (Bug #58967) ** 'p4 dbschema' now includes the db.monitor table in its output.

#504133 (Bug #7908) ** 'p4 verify' now reports bad and missing revisions as error messages, not info messages; the command-line exit code is also now set to a failed value if any such errors are reported.

#503857 (Bug #58257) * A user whose name contained a colon was unable to login.

#491284 (Bug #57110) * ** *** There are 4 new configurables to control network timeout of idle connections; all are initially set to 0: net.keepalive.disable - if non-zero, disable sending TCP keepalive packets net.keepalive.idle - idle time (in seconds) before starting to send keepalives net.keepalive.interval - interval (in seconds) between sending keepalive packets net.keepalive.count - Number of unacknowledged keepalives before failure If set, these configurables override the system-specified default values.