                            Release Notes for
			P4, the command-line client P4 CLI,
			P4D, the P4 Server,
			P4P, the P4 Proxy and
			P4Broker, the P4 Broker.

                            Version 2025.1

Introduction

	This document lists all user-visible changes to:
		* P4 Server (P4D)
		* P4 CLI (P4)
		* P4 Proxy (P4P)
		* P4 Broker (P4Broker)
	in the 2025.1 release. Release notes for other Perforce products are 
	at https://www.perforce.com/support/release-notes which includes a link
	to the developer notes for the P4 API for C/C++ at 
	https://www.perforce.com/perforce/doc.current/user/p4devnotes.txt

	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 particular build of a version includes
	the change mentioned.

Supported Platforms for p4d, p4, p4p and p4broker

	Linux kernel 2.6+ (glibc 2.12+) for Intel(x86_64)
	Linux kernel 2.6+ (glibc 2.17+) for ARM(aarch64)
	Windows 10 for Intel(x64)
	Windows 11 for Intel(x64)
	Windows 2016 for Intel(x64)
	Windows 2019 for Intel(x64)
	Windows 2022 for Intel(x64)
	Windows 2025 for Intel(x64)
	Apple OS X 10.12+ for Intel(x86_64)
	MacOS 12+ for Apple silicon (arm64)

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

Important Product Rebrand Notice

        Helix Core is now P4
        Perforce has a new look and logo that reflects our place in DevOps
        workflows. As part of these changes, Helix Core is now P4. Name updates
        and new icons to align with the P4 branding will be rolled out soon.
        To learn more, see:
          https://www.perforce.com/blog/vcs/introducing-the-p4-platform

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

Important Platform End-of-Life Notice

	This notice identifies the platforms that will be placed in
	End-of-Life (EOL) status in November 2025. This applies to p4, p4d,
	p4p, and p4broker components of the server release.

	The following 64-bit platforms are now in the Discontinued phase:

	    Linux for Intel(x86_64) with glibc older than 2.17.

	OBSOLESCENT Phase:
	Starting with this release, these platforms will no longer be
	supported.  Customers will receive full support and patches
	for the deprecated platforms during this phase for older
	releases. The platforms will remain in this phase until
	Nov 2025 after which they will transition into the
	discontinued phase.

	DISCONTINUED (EOL) Phase:
	Patches will no longer be issued for these platforms. We will
	no longer provide technical support to customers with servers
	on these platforms

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

Important Changes to P4 Licenses

	P4 licenses have been modified to include an 'ExtraCapabilities' field.
	This field encapsulates details about the license for this server as
	well as additional applications that extend this P4 Server.
	Please note, a comprehensive list of possible values is not provided as
	the list will evolve over time and, as with other fields in the license,
	any modifications to the 'ExtraCapabilities' field will invalidate the
	license.

	This new license format requires an updated version of the P4 Server
	to be able to read and apply this new license. License files that use
	this new field require an updated version of the P4 Server and include
	the following comment specifying the exact versions
	required:

	    # This license works with 2019.2 patch 14, 2020.1 patch 8, 2020.2
	    patch 6, 2021.1 patch 1, 2021.2 or later servers.

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

Important limitation for Windows servers prior to 2021.2

	Support for P4 Extensions was disabled for Windows servers
	prior to 2021.2 due to unrelated performance concerns on that platform
	requiring a conflicting toolchain change.  Extensions remained fully
	supported on Linux and Mac.

	This limitation has been resolved in 2021.2 and extensions are now
	fully supported on all supported platforms.

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

Important security note

	This release links OpenSSL version 3.0.15

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

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 DISTRIBUTED UPGRADE RECOMMENDATIONS

	  For 2019.1 or later of the P4 Server (P4D), significant
	  schema upgrades performed by 'p4d -xu' will only be performed on
	  servers where those upgrades are needed. This means that metadata
	  changes made by upgrades must be replicated and so must be journaled.
	  To help prevent mistakes, upgrades will not run if journaling is
	  disabled.  If offline databases are in use, upgrades should not be
	  performed on them, as the upgrade performed on the live database will
	  be journaled and applied during normal journal replay.

	  When upgrading from 2019.1 or later of the P4 Server
	  (P4D), replicas may be upgraded safely prior to the server they are
	  replicating from. This upgrade pattern, referred to as "outside-in",
	  allows a multi-server environment be upgraded server-by-server
	  starting with the outermost replica, without requiring the entire
	  set of servers to be taken offline at once.

	  When upgrading from a version prior to 2019.1 to 2019.1 or later, we
	  strongly recommend that all servers are upgraded in a single upgrade
	  session.

	  More information can be found in the P4 Server Administration
	  Documentation at 
	    https://www.perforce.com/manuals/p4sag/Content/P4SAG/chapter.upgrade.html

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

	  CHANGES TO UNLICENSED SERVER

	  For v16.1 onwards of the P4 Server (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 P4 Server (P4D), your 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.

	  For any P4 Git Connector (formerly Helix4Git) instances that are
	  currently polling repos we recommend upgrading your Git Connector
	  instance before upgrading your P4 Server. Otherwise, any repo
	  polling would cease.

	  Read-only archive directories can interfere with the upgrade process.
	  This may be the case for archive paths migrated from a different
	  version control system, such as CVS, or in cases where 3rd party
	  imported content has been made read only by a system admin.
	  Make sure all such archive paths are writeable before attempting
	  the upgrade.

	  DOWNGRADING A 2025.1 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 <server-root> -J <journal-file> -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 <server-root> -J <journal-file> -xu'
	       command from a command prompt window. This command
	       performs the significant schema upgrades, then exits.

	    2. Restart your P4 Server (P4D) service.


	  Note: Personal DVCS servers will automatically perform any database
	        schema upgrades. Although 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 earlier,
	  then this upgrade is an UPDATE DATABASE FORMAT upgrade:

	  Due to the 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 2025.1 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 2025.1 version,
	  update your database schema:

	  Unix Platforms

	    1. Issue the 'p4d -r <server-root> -J <journal-file> -xu'
	       command. This command performs the schema upgrades, then exits.

	    2. Restart your server with your site's usual parameters.

	  Windows Platforms

	    1. Issue the 'p4d -r <server-root> -J <journal-file> -xu'
	       command from a command prompt window. This command
	       performs the schema upgrades, then exits.

	    2. Restart your P4 Server (P4D) service.


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

Interoperating With Previous Releases

	1. Unless stated otherwise, you can intermix any release of
	   P4 CLI (P4) with any release of the P4 Server (P4D), but any
	   functionality new to this release requires you to upgrade
	   P4 CLI and/or P4 Server. 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 least the same release level as the
	   master server and any functionality that requires an upgrade for the
	   master requires an upgrade for the replica. A replica can be running
	   a later release than the master if the master is running at least
	   2019.1. However in this case some new functionality might not be
	   available on the upgraded replica until the master has been upgraded.

	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:

	Features offered in Technology Preview are experimental and not
	guaranteed to always work as expected. If you have feedback and
	functionality suggestions, email techpreview@perforce.com.

	The following features are in Technology Preview:

	    P4 Extensions for clients (introduced 2019.1).

	    'p4 diagnostics' command (introduced 2024.2).

	The following features have been promoted from Technology Preview:

	    'p4 topology' command (introduced 2021.2). 

	    P4 Server System Resource Monitoring (introduced 2023.1).

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

Important note:

	Please refer to:
	http://www.perforce.com/perforce/r25.1/user/relnotes.txt
	to get up to date GA and post-GA information about this release.

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

Major new functionality in 2025.1 (2025.1/2761706) (2025/05/09)

	#2738086, #2746310 (Jobs #27609, #95793, #113569) **
	    An IdleTimeout can now be set on a per-group basis to invalidate a
	    user's ticket after a specified period of inactivity. Users who
	    have an IdleTimeout applied to them will have their access time
	    updated periodically during and at the end of commands (in
	    addition to at command start) based on the thresholds defined by
	    'dm.user.accessupdate' and 'dm.user.accessforce'; the idle timeout
	    for a user will always be the highest of either of these
	    configurables if the IdleTimeout specified in the group is lower.

	#2727284, #2728738, #2738456 (Job #123527) **
	    Replication now uses Delta Transfer by default. When an archive
	    pull thread ('p4 pull -u') requests a file revision from an
	    upstream server, the replica asks for the file to be sent via
	    delta transfer if certain requirements are met: if there is one
	    other file revision on the replica, the file is an uncompressed
	    binary file (binary+F), the file size is greater than
	    'net.delta.rpl.minsize', and 'net.delta.rpl.threshold' is not 0.
	    Upon receiving a delta transfer request, the upstream server makes
	    the same checks on the file revision. In addition, it checks to
	    see if the number of deltas to send is below the
	    'net.delta.rpl.threshold' for that server. If these requirements
	    are met, then the file revision is sent via delta transfer;
	    otherwise, the full file transfer occurs. Note that if either
	    'net.delta.rpl.minsize' or 'net.delta.rpl.threshold' are 0, then
	    delta transfer is disabled. The upstream server uses its own
	    version of 'net.delta.rpl.threshold' to determine the threshold.
	    Replication delta transfer is available for all replica types, but
	    only for 'lbr.replication' values 'readonly' and 'cached'. If the
	    'p4 pull -u' archive pull thread uses the '--batch' or '--trigger'
	    parameters, delta transfer is not used.

	#2683248 (Job #123442) **
	    Passwords stored by P4 are now hashed with scrypt.

	    For users with passwords stored with the stronger hashing algorithm,
	    plaintext and prehashed passwords will no longer be accepted via the
	    '-P' global flag, the P4PASSWD environment variable or setters in
	    the P4API; these were previously only accepted up to security
	    level 2.

	    Users with passwords stored prior to upgrading to 2025.1 or above
	    will be unaffected: the legacy password storage and behaviours at
	    low security levels will continue to work until the users reset
	    their passwords.

	    To force all users with legacy passwords to reset their passwords
	    and upgrade to scrypt storage, a super user can run
	    'p4 admin resetpassword -a -l'. The password storage type is now
	    shown in the output of 'p4 -ztag users -l'.

Behavior Changes 2025.1 (2025.1/2761706) (2025/05/09)

	#2752228 (Jobs #125825, #126025) **
	    The special 'remote' user is now disabled by default. Previously
	    the 'remote' user was only explicitly disabled at security levels
	    4 and above, but scope of access could be controlled by
	    protections. The 'remote' user is used by server-to-server
	    connections when a 'serviceUser' has not been configured: you may
	    need to configure and authenticate the 'serviceUser' for any
	    servers that need to make connections to other server (notably
	    this may affect any server configured to use remote depots, P4AUTH
	    or is a commit server and doesn't already have the service user
	    configured for communication with edge servers; 'p4 push' and 'p4
	    fetch' are unaffected by this change.

	#2703003 (Job #123704) * **
	    Starting with the 2025.1 release, the 'p4 reconcile' command will
	    only find matching added and deleted files and reopen them as
	    move/adds and move/deletes when the new -M or --match-moves option
	    is specified. The 'p4 move' command also has a new syntax to
	    support the new option, 'p4 move -M [-c changelist#]', which finds
	    matching moves in the existing pending changelist and reopens the
	    added and deleted files as moves.

Minor new functionality in 2025.1 (2025.1/2761706) (2025/05/09)

	#2752931 (Job #125948) **
	    P4AUTH servers now require that the connecting server has a
	    'serviceUser' configured and is upgraded to at least 2025.1.

	#2749935, #2750448 (Job #125890) * ** *** ****
	    The defaults for TCP keepalive configurables have been changed such
	    that the keepalive is now enabled by default.

	#2745695, #2746796 (Jobs #120806, #125609, #125644, #125705)
	* ** *** ****
	    Added two configurables to tune network performance:
	      net.nagle and net.quickack.

	    - net.nagle=0 : disable the Nagle algorithm (ie, send data ASAP)
	    - net.nagle=1 : enable Nagle (ie, delay sending data)
	    - net.nagle=2 : disable Nagle for SSL but use the system default
	      for TCP (which on most systems is to enable Nagle); this setting
	      provides the same behavior as the current code
	    - net.quickack=0 : disable quick ACKs (delay sending ACKs)
	    - net.quickack=1 : enable quick ACKs (send ACKs immediately)

	    Note that changes to either of these new configurables do not
	    require restarting p4d; they take effect for all new connections,
	    but existing connections will be unaffected.  These configurables
	    apply to clients as well as server components.

	    The current default values are:
	    	net.nagle=2
	    	net.quickack=0
	    These values provide the same behavior as the previous release.
	    Customers using a broker may find improved network performance
	    by changing them to:
	    	net.nagle=0
	    	net.quickack=1

	    macOS Note:
	    macOS does not support enabling or disabling QuickAck on individual
	    connections, so setting net.quickack does not change any socket
	    options.

	    To enable QuickAck globally before MacOS 11 (Big Sur):
	    - add net.inet.tcp.delayed_ack=0 to /etc/sysctl.conf

	    To enable QuickAck in macOS Big Sur or later:
	    - add this XML document to
	          /Library/LaunchDaemons/com.startup.sysctl.plist:

	    <?xml version="1.0" encoding="UTF-8"?>
	    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
	          "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
	    <plist version="1.0">
	    <dict>
	        <key>Label</key>
	        <string>com.startup.sysctl</string>
	        <key>LaunchOnlyOnce</key>
	        <true/>
	        <key>ProgramArguments</key>
	        <array>
	            <string>/usr/sbin/sysctl</string>
	            <string>net.inet.tcp.delayed_ack=0</string>
	        </array>
	        <key>RunAtLoad</key>
	        <true/>
	    </dict>
	    </plist>

	    For all macOS versions, these changes take effect after rebooting.

	#2742376, #2743841 (Job #125478) **
	    The @ex@ entry in the journal for the partitioned-jnl have table is
	    now generated after the group of @dv@ entries during the
	    respective client deletion operation when the configurable
	    db.partition.dropondelete is unset.

	#2741561 (Job #123690) **
	    By default 'p4 diagnostics' now creates a single gzipped tar file
	    rather than a directory of the diagnostic files.

	#2739481 (Job #125156) **
	    Reduce memory usage on syncs when peeking at db.have and db.rev.
	    This can also have a modest performance improvement when the
	    filesystem cache is warm.

	#2738086 (Jobs #95793, #27609, #113569) **
	    User access times are now global. By default, access times are only
	    updated at the start of commands, except for users who have an
	    IdleTimeout applied to them; this can be changed by setting
	    'dm.user.accessmode' to 2 or higher, which will update users
	    access times periodically during commands and at the end.

	#2738086 (Jobs #113569, #27609, #95793) **
	    Access times for service type users will now be recorded if
	    'dm.user.accessmode' is set to 3.

	#2734545 (Job #113716) **
	    Allow '-u' and '-g' flags to filter the list of properties (p4
	    property -l) by user or group.

	#2730108 (Job #124352) **
	    Updated help documentation for map.overlay.legacy.

	#2729732 (Job #124817) **
	    Added an error message when a user tries to obliterate a file
	    within the extensions depot.

	#2728283 (Job #108578) **
	    New configurable dm.dvcs.allowcasemismatch allows fetch/push
	    between servers whose case-handling is configured differently.

	#2725636 (Job #118711) **
	    server startup commands set in 'startup.N' will auto restart if
	    terminated for any reason, when the new configurable
	    'server.startup.autorestart' is set to 1.

	#2724590 (Job #124686) **
	    For pull -ls new options -v and -h are added: pull -lsv : Show
	    separate numbers for each category: Active, Queued, Failed and
	    Retry. pull -lsvh : Same as -lsv but shows byte numbers in
	    human-readable format. pull -lsh : Same as -ls but shows byte
	    numbers in human-readable format.

	#2724379 (Job #109955) **
	    For 'p4 pull -l' a new -C option removes file-transfer records from
	    rdb.lbr for archive files that are not needed (they are already in
	    place or are not referenced in db.storage/db.storagesh).

	#2724226 (Job #123691) **
	    The 'p4 diagnostics' command's default file size limit of the
	    journal and log file is now 10Mb and these files are only
	    downloaded if the '-J' option is specified.

	#2723845 (Jobs #124571, #124572) **
	    Removed the additional empty lines within the topology file.

	#2723845 (Jobs #124572, #124571) **
	    Stopped the 'p4 diagnostics' command from creating empty file.

	#2719907 (Jobs #78692, #103380) **
	    Improved `p4 pull` comments for pull threads when pulling journal
	    or archives, and 3 new realtime monitor counters added for journal
	    recovery. `rtv.jnl.recover.in` number of all journal recs
	    processed, some might be discarded. `rtv.jnl.recover.buffered`
	    number of recs added to the buffer to be written.
	    `rtv.jnl.recover.out` number of recs written.

	#2717749, #2727059 (Job #124500) * **
	    The move detection performance of the 'p4 reconcile' command has
	    been much improved in 2025.1. A new --parallel=n option is added
	    to enable the p4 client to perform the client-side portion of the
	    move detection algorithm using multiple threads.

	#2715099 (Job #117712) **
	    Added a timer to check and update the license information of the P4
	    server if the license file has been changed externally.

	#2712255 (Job #107086) **
	    This change enhances 'p4 verify' so that after successfully
	    verifying a library file it will remove any pending record in
	    rdb.lbr for that file.

	#2711531 (Job #124593) **
	    Setting both 'dm.user.resetpassword' and 'dm.user.setinitialpasswd'
	    will now require that a user must immediately change their
	    password after a super user sets the user's initial password.

	#2709258 (Job #119486) **
	    'p4 -ztag monitor -e' now includes the cmd ident and group. The cmd
	    ident and group is also logged in 'track.log' when the 'server'
	    configurable is >= 4.

	#2708144 (Job #123998) **
	    The 'p4 reconcile' command when used with the -M or --match-moves
	    option will first open files for add, edit and delete in a pending
	    changelist before performing the move detection algorithm which
	    may be time consuming.

	#2706862 (Job #119329) **
	    A new option --filter for 'p4 pull -l' is introduced to filter
	    output based on status. With 'p4 pull -l --filter=retry' only
	    files that have failed before but still will be retried will be
	    displayed. With 'p4 pull -l --filter=failed' only files that have
	    failed and will not be retried will be displayed. With 'p4 pull -l
	    --filter=active' all other files that are valid for transfer will
	    be displayed.

	#2706852, #2708463 (Job #123705) * **
	    The 'p4 reconcile' and 'p4 move' commands now support progress
	    indicators using the -I global option.

	#2702460, #2713087 (Job #124102) **
	    Depots backed by S3 can now retrieve credentials from
	    '~/.aws/credentials' or the EC2 role endpoint by specifying the
	    'profile' name or 'role' name respectively in the depot's
	    'Address' field. Only one set of credentials can be specified at
	    once.

	#2702459 (Job #123197) * *** ****
	    The 'ssl.client.cipher.list' and 'ssl.client.cipher.suites'
	    configurables can now be used on clients, proxies and brokers.

	#2701257 (Jobs #124360, #124361) * ** *** ****
	    If the minimum TLS version is set higher than the maximum, the
	    minimum value is still allowed instead of disallowing all TLS
	    versions.

	#2701257 (Jobs #124361, #124360) * ** *** ****
	    The default TLS cipher suite has been upgraded to
	    ECDHE-RSA-AES128-GCM-SHA256 for services that only accept TLS 1.2
	    and greater.

	#2698778, #2699265, #2701645 (Job #83704) **
	    'p4 monitor show' will now show command arguments for 'p4 pull'
	    instead of being replaced by the state comments. The comments are
	    still included and a new field 'comment' added to `p4 -ztag
	    monitor show`.

	#2691924 (Jobs #124164, #123313) *
	    Include server version in altsync protocol.

	#2688375 (Job #122581) **
	    'p4 diagnostics' now reports the directory name it creates in the
	    current directory and the types of diagnostics files produced
	    within that directory.

	#2687790 (Job #122999) **
	    The 'p4 diagnostics' command now uses the server's timezone to
	    construct the name of the output directory on the client.

	#2680556 (Job #123371) **
	    A new '-l' option has been added to the 'p4d -jd -R server-type'
	    command that displays the list of excluded tables that would be
	    applied to this dump request. A dump is not performed.

	#2673289 (Job #123186) **
	    'p4 topology' now displays the version strings of the services that
	    have provided that information.

Bugs fixed in 2025.1 Patch 4 (2025.1/2907437) (2026/03/09)

	#2905019 (Job #129719) **
	    Archive pull threads could fail doing delta transfers with "open
	    for read: <archive-File>: No such file or directory". This problem
	    is now fixed.

	#2902341, #2893698 (Jobs #131039, #131153) **
	    Fixes a crash on 'pull -L' on a standby replica involving
	    concurrent updates to a partition-jnl client table and db.config.

	#2897907, #2889898 (Job #130522) **
	    Journal recovery, where journal data includes partitioned tables,
	    could fail with "Locking failure: db.config locked after
	    db.have!". This change fixes the problem.

	#2897104 (Job #130266) * **
	    Fixed 'invalid cross-device link' errors when multiple 'p4 sync'
	    operations involving delta transfer enabled archives where
	    different volumes are used for P4ROOT and archives.

	#2890751, #2889791 (Job #131012) **
	    'p4 reload' on an edge server no longer crashes on reloading a
	    non-partitioned client with open files when
	    'server.global.client.views=1' is set.

	#2890316 (Job #130907) * ** *** ****
	    OpenSSL has been upgraded to 3.0.19

Bugs fixed in 2025.1 Patch 3 (2025.1/2880859) (2026/01/22)

	#2876766, #2857489, #2870606, #2871239, #2872667 (Jobs #129173,
	#130295) **
	    In journal replay where the journal includes a note 31 for deleting
	    a partitioned table, it no longer fails with the error: "dbdel
	    db.have:no write lock!".

	#2872238 (Job #105807) **
	    The edge server log no longer shows the "Operation 'dmr-Sequence'
	    failed" error when an edge-submit fails after a shelved change is
	    created.

	#2871599, #2850381 (Job #112113) **
	    Shelves belonging to clients that no longer exist are now treated
	    as if they are owned by the commit server. If deleting a client
	    from an edge server, shelves are now promoted as part of that
	    client delete.

	#2870855, #2848828, #2869137 (Job #129416) **
	    Replication of filtered out records no longer cause replicas to
	    wait for those transactions to complete.

	#2870470 (Job #88586) *
	    If a Control-C was issued to P4 during a sync operation, the client
	    could end up inconsistent with the Server. This has been
	    corrected.

	#2868463, #2846308 (Job #128028) **
	    If an edge server cannot rename the archive of a shelved file
	    during promote, it now returns a clear error rather than enter a
	    loop.

	#2868020, #2853916 (Job #129293) **
	    In replication if it fails to do Delta-transfer, it can now
	    successfully fall back to complete-file-transfer.

	#2865786, #2832558 (Jobs #127302, #127776, #127832, #127858, #127908,
	#127955, #128360, #129280) **
	    A non-unicode configured server now translates all paths from
	    ISO8859_1 into UTF8 in its S3 requests.

	#2865786 (Jobs #127858, #127302, #127776, #127832, #127908, #127955,
	#128360, #129280) **
	    Two new configurables control the multipart protocol used in S3
	    transfers. Only transfers greater than the value in
	    'lbr.s3.multipart' will use the multipart protocol. This value is
	    specified in megabytes, the default is 4096. 'lbr.s3.multipartsz'
	    specifies the largest size of an individual multipart transfer
	    request. This value is specified in megabytes, the default is 5.

	#2864375, #2834961 (Job #61562) **
	    The new configurable 'lbr.unloaddepot.compress' can be set to '1'
	    to compress all data unloaded with the 'p4 unload' command and
	    labels created with the autoreload option.

	#2864293, #2848656 (Job #129290) ** *** ****
	    Self-signed certificates created with the `-Gc` option on p4d, p4p
	    or p4broker are now signed with a SHA256 hash.

	#2863367 (Job #126106) **
	    Fixed binary+l file mistakenly registered as an orphaned locked
	    file after a copy from a sparse stream, where the file was not
	    resident in the sparse stream.

	#2862272 (Job #127351) **
	    The copy, merge, and integration commands for sparse stream targets
	    do an autosync at the end of the command. This behavior can now be
	    disabled with the virtual integration flag '-v', which prevents
	    branched and deleted files from affecting the workspace.

	#2860972, #2832943 (Job #128946) * **
	    cURL (for extensions) has been upgraded 8.16.0.

	#2860880 (Job #126349) **
	    When 'server.rolechecks' is set to 1, servers without the rmt-auth
	    role will no longer accept commands forwarded from remote servers
	    if they were forwarded due to P4AUTH being configured on the
	    remote server.

	#2859691 (Job #122815) **
	    The formatted ISO8601 date in the structured logs is now correctly
	    converted to UTC.

	#2859558 (Job #126261) *
	    The failure of a merge tool is now handled consistently across
	    platforms, and no longer results in a false merge.

	#2858862 (Job #118452) **
	    Forwarding replicas of edge servers now correctly handle shelves
	    that are not managed by the first upstream edge server.

	#2858856 (Job #126852) **
	    TinyXML2 has been upgraded to 11.0.0

	#2855878, #2835080 (Job #127882) **
	    Permission errors no longer occur when a delta transfer map file
	    was deleted and later simultaneous syncs were issued for the
	    corresponding file revision.

	#2855488 (Job #125149) **
	    Integrations into sparse streams now take much less time.

	#2854340, #2837121 (Job #128588) **
	    The p4d commands 'p4d -xv', 'p4d -xvU', 'p4d -xr', 'p4d -xrU' and
	    'p4 dbverify' have been updated to improve handling of partitioned
	    have tables.
	    When processing all tables (no arguments), these commands no
	    longer process the per-client tables for readonly or partitioned
	    type clients. The per-client tables for partitioned-jnl type
	    clients will be processed only if the 'db.partition.verify'
	    configurable is set to '1'.
	    When partitioned tables are explicitly specified (for example:
	    'p4d -xv db.have.pt' or 'p4d -xr db.have.pt%pclient'), all
	    per-client tables will be processed regardless of client type.
	    These commands no longer create empty tables if a per-client table
	    does not exist.

	#2854097 (Job #128849) **
	    'p4 journaldbchecksums -u', 'p4 journaldbchecksums -s', 'p4
	    dbstat', 'p4 dbpack' and 'p4d -jc' no longer try to access
	    partitioned tables that are not expected to be present on the
	    server.

	#2846298 (Jobs #126882, #127741) **
	    All S3 operations can now be retried, not just upload requests. Two
	    new configurables, 's3.credentialerror.retry' and
	    's3.error.retry', allow the customization of which errors can be
	    retried. The 's3.credentialerror.retry' configurable reloads the
	    credentials on each retry attempt.

	#2844205, #2832157 (Job #128842) **
	    'p4 describe -a -S' now correctly shows the diff for files open for
	    add in the shelf.

	#2837462 (Job #122971) **
	    Improved messaging when opening a file. Instead of: "<depotFile> -
	    can't add exclusive file already opened", the message includes the
	    action the other client did that locked the file. For example,
	    "<depotFile> - can't add exclusive file already opened for add".

	#2837446, #2832305 (Job #127911) **
	    Replicas of type 'build-server' now use per-client partitioned have
	    tables for clients of types 'read-only', 'partitioned' and
	    'partitioned-jnl' instead of the replica specific db.have.rp
	    alternative have table.

	#2837445 (Job #124713) **
	    'p4d -xvU' and 'p4 dbverify -U' no longer process partitioned have
	    tables when the 'db.partition.verify' configurable is set to '0'.

	#2835855 (Job #126265) **
	    When a 'p4 attribute -f' command would result in identical trait
	    content and the traitLot reference count is greater than 1, the
	    identical content would be copied to a new traitLot. This could
	    cause unnecessary resolves in later 'p4 copy' operations. This
	    attribute command scenario has been changed to not create
	    the redundant new traitLot and content when the trait content is
	    unchanged.

	#2835404 (Job #128688) **
	    The command 'p4 undo' now works with the partitioned and
	    partitioned-jnl client types.

Bugs fixed in 2025.1 Patch 2 (2025.1/2831954) (2025/09/26)

	#2829942, #2827789 (Job #125371) **
	    'p4 istat' no longer takes read locks when 'db.peeking' is set to 1
	    or greater.

	#2828648 (Job #127310) **
	    Edge servers no longer try to delete db.have.pt tables for clients
	    not associated with that edge server and no longer propagate that
	    journal note to downstream servers.

	#2828452, #2826356 (Job #128816) **
	    Writes to partitioned have tables can no longer append journal
	    records to the end of a rotated journal.

	#2827666, #2817781 (Job #127084) **
	    Improved performance of 'p4 shelve' for a change on keyed files
	    that has an action of branch or integ.

	#2825402 (Jobs #125669, #128002, #128003) **
	    Reloading a partitioned client on an edge server with
	    'server.global.client.views=1' set will now correctly restore the
	    client's have records.

	#2825402 (Jobs #128002, #125669, #128003) **
	    Reloading a stream client on an edge server with
	    'server.global.client.views=1' set will no longer send the
	    generated 'View' or 'ChangeView' to the commit server.

	#2825402 (Jobs #128003, #125669, #128002) **
	    Reloading a client with a 'ChangeView' on an edge server with
	    'server.global.client.views=1' set will now correctly send both
	    the 'View' and 'ChangeView' to the commit server.

	#2823492 (Job #125630) **
	    Replication will no longer halt in the case where a partition have
	    delete journal note (31) and a change or block checksum note (15
	    or 17) are encapsulated by a longer running transaction.

	#2821146 (Jobs #125360, #125760, #125814) **
	    The code that loads/sets configurable variables will parse the
	    input on commas to allow the setting of multiple variables with a
	    single command. This processing can cause problems with string
	    tunables that use a comma. This fix checks the type of the first
	    configurable specified and if it is a 'string' type no parsing is
	    performed on the input.

	#2821146 (Jobs #125760, #125360, #125814) **
	    'p4 configure show' now displays all the string-based tunables.

	#2813253 (Job #127760) **
	    Fixed 'invalid out-of-bounds conversion of DmtStreamPathType'
	    error.

Bugs fixed in 2025.1 Patch 1 (2025.1/2810567) (2025/08/05)

	#2809802, #2804114 (Job #127726) **
	    Fixed crash with replication delta transfer when debug logging was
	    enabled.

	#2809027, #2799220 (Jobs #127507, #126292, #127579) **
	    Delta transfer no longer reports an error when 'server.depot.root'
	    ends with a '/'.

	#2808885, #2790241 (Job #99980) *
	    Tickets specified with 'p4 -P' or P4PASSWD are now handled
	    correctly during parallel operations.

	#2808002, #2782186 (Job #126984) **
	    Replication Delta Transfer temporary files which were not removed
	    under some circumstances are now removed.

	#2806393, #2805269 (Job #127573) * **
	    A performance issue when reading RCS file content for commands that
	    compare revision content has been fixed.

	#2804852, #2777466 (Job #126880) **
	    S3 uploads to AWS no longer fail with files greater than 4Gb in
	    size.

	#2801978, #2795308 (Job #126938) **
	    'p4 login' will now return a distinct error when
	    'dm.user.setinitialpasswd' is disabled and the user has no
	    password set, informing the user that a super user must set their
	    initial password.

	#2801977, #2792404 (Job #127436) **
	    'p4 copy' will now ignore files that only differ by attributes when
	    the 'dm.copy.attributes' configurable is set to 0.

	#2801498, #2781936, #2781938, #2793291, #2796444 (Jobs #126141,
	#127054, #127223) **
	    The move detection feature in 'p4 reconcile', 'p4 status' and 'p4
	    move' now works as expected with pre-2025.1 clients.

	#2800985, #2790232 (Job #127027) **
	    Edge servers processing obliterates from the upstream server no
	    longer perform full scans of the db.working table.

	#2800598, #2793233 (Job #126602) **
	    If replication is stalled or it is slow, the edge server could send
	    a change-update up to its target server based on an outdated
	    record, and cause data inconsistency. This change prevents such a
	    change-update and returns this message: "Operation failed on
	    remote server because of data inconsistency, possibly due to
	    stalled or slow replication".

	#2799238, #2793768 (Job #127029) **
	    The journal note written by 'p4 obliterate' with the -h and/or -l
	    flags is now correctly re-written to the journal when replayed or
	    replicated.

	#2797338, #2791095 (Job #125480) **
	    A recommended value of a relative path to the server's root
	    directory has been added to the help message of the
	    client.readonly.dir configurable.

	#2796972 (Job #127424) **
	    In 'p4 verify' the enhancement to do rdb.lbr cleanup was causing
	    performance issues. This change disables that enhancement.

	#2795402 (Job #127413) **
	    Fixed a client version compatibility issue in 'p4 add' that could
	    result in a false insufficient disk space error on submit

	#2794278, #2772883 (Job #123929) **
	    Fixed istat crash due to inconsistencies in stream spec data
	    originating from pre-19.1 servers. Run 'p4d -xf 123929' to fix
	    inconsistent data.

	#2793726, #2792087 (Job #127398) **
	    The stream spec permission checking is no longer applied to submits
	    to streams that do not include a change to the stream spec.

	#2792655, #2789624 (Job #125649) **
	    Operations like 'p4d -c <command>' that lock all tables now wait
	    for any simultaneous work on partitioned tables to finish before
	    proceeding.

	#2792012, #2766621 (Job #123091) **
	    On a case-insensitive server with server.depot.root set, files with
	    names containing an uppercase character no longer fail to be
	    uploaded to an S3 bucket.

	#2791196, #2764800 (Job #126179) **
	    The compare routine for the lbrRev type used in the storage tables
	    no longer ignores the first "1." part of the field. This was
	    causing problems for imported CVS files.

	#2789604, #2768501, #2770953, #2787777 (Job #126773) **
	    The sync operation no longer causes the database open error to
	    occur on the db.sendq.pt database table when the frequency of
	    syncs is high.

	#2789590, #2787215 (Job #127308) **
	    The modtime of binary files with either the +m modifier or with the
	    modtime option enabled in the client are now correctly passed to
	    altsync agents.

	#2789104 (Jobs #110808, #121743, #123079) ** *** ****
	    The server no longer sends multiple duplicate certificates from a
	    certificate chain to the client after a 'p4 admin restart'.

	#2789104 (Jobs #121743, #110808, #123079) **
	    After restart or failover, the server now reloads relevant
	    network-related configurables and reloads certificates from the
	    certificate file, which prevents a SSL handshake error after
	    failover when the certificate file has been modified. The
	    certificate file is now checked for out-of-order certificates and
	    logs a message ("NetSslEndPoint::Listen() - invalid certificate
	    chain") if any are found, but does not produce an error because
	    these issues often do not cause problems.

	#2788866, #2785826 (Job #127243) *
	    Improved error handling when unable to open file during reconcile.

	#2787214, #2767902 (Job #123209) **
	    Topology updates from replicas now release locks earlier and no
	    longer wait for replication to synchronize.

	#2783849 (Jobs #126183, #126084) * **
	    Fixed an issue where the 'p4 reconcile' command would match
	    multiple deletes to the same add when the files have identical
	    content. This was causing a subsequent submit of the incorrectly
	    moved files to fail with missing resolve records.

	#2779346, #2766264 (Job #125471) **
	    Fixed an intermittent 'no write lock' error with journal replay
	    into an offline db when the location of the client.readonly.dir is
	    shared between the p4d server and the offline db.

	#2778788, #2773409 (Job #126534) **
	    Fixed the following issue: When doing parallel recovery using
	    multifile checkpoint and the source includes a partitioned client,
	    if the partitioned client-name ends in an underscore followed by
	    eight digits, valid for a multifile checkpoint file sequence
	    number, recovery could fail with an error like
	    "..._00000001.ckp.gz: No such file or directory".

	#2777813 (Job #125639) **
	    The journal note type 31 now deletes the respective partitioned-jnl
	    table during the journal replay operation.

	#2775291 (Job #126354) **
	    The server type in the topology table is now correctly recorded as
	    'commit-server' after upgrade instead of a list of roles.

	#2772170 (Job #124125) **
	    p4d -xv will now skip the partitioned client database tables that
	    are not on the server instead of reporting the 'table not known'
	    error.

Bugs fixed in 2025.1 (2025.1/2761706) (2025/05/09)

	#2753114 (Job #125945) **
	    The 'commit-server' server services no longer includes P4AUTH. When
	    'server.rolechecks' is set to 1, a server configured as a commit
	    server will no longer allow other servers to use it as a P4AUTH
	    server.

	#2752228 (Jobs #126025, #125825) **
	    The cross-server exclusive locking feature 'p4 edit --remote' now
	    correctly uses either the current user or the user specified in
	    the remote spec to authenticate the connection to the remote
	    server.

	#2749180, #2749959 (Job #125223) **
	    We were mistakenly checking the permissions to stream spec when
	    doing submit to a classic depot. We have now stopped checking
	    stream permissions when submitting for a classic depot.

	#2745283, #2746796 (Jobs #125609, #120806, #125644, #125705) **
	    For the following configurables, "p4 -ztag configure show" returned
	    the wrong values for the "RestartRequired" field; they previously
	    returned "ExplicitStop" and now return the correct value ("No"):
	    net.tcpsize, ssl.client.ca.path, ssl.client.cipher.list,
	    ssl.client.cipher.suites, ssl.cipher.list and ssl.cipher.suites.

	#2745283, #2746796 (Jobs #125644, #120806, #125609, #125705)
	* ** *** ****
	    Correct a Windows-specific problem: setting "net.keepalive.idle" or
	    "net.keepalive.interval" to values greater than 127 would succeed
	    but would not actually set the corresponding socket options to the
	    requested values. Each subsequent connection might log a message
	    like the following when it attempted to set the keepalive option
	    (the numbers in the message will vary according to the values used
	    in the "p4 configure set" commands): C:\> p4.exe -p 127.0.0.1:1666
	    configure set any#net.keepalive.idle=180 NetTcpTransport: not
	    setting TCP keepalive idle = -76 secs, interval = 20 secs because
	    both must be positive The existing workaround is to set both
	    configurables to values positive values less than 128; note that
	    p4d will need to be restarted for this change to take effect. All
	    legal values for these configurables now work properly.

	#2744599, #2745144 (Job #121299) **
	    Fixed server crash where altsync agent response did not include the
	    program version.

	#2742809, #2744325 (Job #125450) **
	    The 'p4 move' command is now disallowed in a ready-only client
	    workspace.

	#2741593 (Job #125093) **
	    Both 'journalcopy' and 'pull -L' accessing journal-files at the
	    same time could result in bad data in the state file and cause
	    replication to stop. This change fixes the problem.

	#2741273 (Job #125241) **
	    Use of server-side Extensions that themselves run client commands
	    via the P4API while on a Unicode-mode server no longer interfere
	    with the server process charset, which could result in errors
	    finding files with non-ASCII characters in them.

	#2740333 (Job #125163) **
	    These network configurables used to require a restart to take
	    effect on p4d, but now take effect on all subsequent connections
	    even without a restart: net.autotune, net.keepalive.disable,
	    net.keepalive.idle, net.keepalive.interval, net.keepalive.count,
	    net.tcpsize, ssl.client.cipher.list, ssl.client.cipher.suites,
	    ssl.cipher.list and ssl.cipher.suites.

	#2737504 (Job #125287) **
	    The partitioned-jnl, partitioned and readonly client types can now
	    be converted into writeable client type.

	#2734766, #2735348 (Job #125218) **
	    Fixed delta transfer server failure with error message about moving
	    a file pointer before the beginning of a file.

	#2733431 (Job #124867) **
	    The writeable client type can now be converted into partitioned,
	    partitioned-jnl or readonly client type. If there are any opened
	    files, then the conversion to readonly client type results in an
	    error.

	#2732560 (Job #125135) **
	    Updated `p4 configure help` output URLs to 'help.perforce.com'.

	#2732488 (Job #124576) **
	    Recovering an incompatible checkpoint will no longer report an
	    incorrect line number in the error message.

	#2731160 (Job #125123) **
	    'p4 changes' has been optimised such that where possible, revision
	    scans are reduced and overloaded arguments no longer cause
	    optimisations to be skipped.

	#2727978 (Job #124938) **
	    'p4 reload' on an edge server no longer crashes on reloading a non
	    partitioned client.

	#2727123 (Job #123169) **
	    Add new optional long opt `--sync-time`, which can be used to
	    update the file modification time in the metadata, see `p4 help
	    sync` for usage. The new flag can be used by altsync agents to
	    support the hydrated hotfiles feature. The altsync agent should
	    call `p4 sync -k --sync-time=N ...` after hydrating any
	    placeholder files to set the file modification time and any
	    further syncs will consider the file a hotfile, dehydrating a file
	    should call `p4 sync -k -q ...`.

	#2726952 (Job #124578) **
	    Parallel checkpoints were incorrectly taking a read lock on the
	    db.monitor table and not releasing it until the checkpoint had
	    completed. This has been fixed.

	#2726783 (Job #124922) **
	    The topology.dot file created by 'p4 diagnostics' did not quote
	    node names, producing syntax errors when processed by 'dot'. This
	    has been fixed.

	#2726500 (Job #124999) * **
	    cURL has been upgraded to 8.12.1.

	#2724373 (Job #124807) **
	    The 'p4 diskspace' command now reports on the diskspace at the
	    following additional locations (if configured): P4AUDIT,
	    client.readonly.dir, client.sendq.dir, pull.trigger.dir,
	    rt.monitorfile, server.extensions.dir, server.locks.dir and each
	    serverlog.file.N

	#2722543 (Job #124603) **
	    A checkpoint created using '-jc' with more than a single thread
	    enabled that contains partitioned clients could place the
	    db.config table entries after those for the partitioned clients,
	    making it unrecoverable.

	#2722542 (Job #124865) **
	    The correct error message is now displayed during the conversion of
	    partitioned or partitioned-jnl clients with opened files to a
	    readonly client.

	#2720824 (Jobs #124618, #124617) **
	    'p4 diagnostics' now supports the '-t' and 'p' flags to request
	    that the output from the 'top' and 'ps' commands respectively be
	    returned from the server. Only supported on Linux platforms.

	#2720760 (Job #124748) **
	    The conversion between the partitioned-jnl and the readonly or
	    partitioned client types now updates partitioned have tables on
	    the replica servers appropriately.

	#2719920 (Job #124759) **
	    'p4 list' will now correctly update a temporary label on a most
	    recent update basis when using multiple overlapping arguments or
	    when the same label is specified multiple on multiple commands
	    within the same connection.

	#2719311 (Job #120859) **
	    Fixed excessive scanning of db.revsh by 'p4 verify -S' on a shelf
	    containing many files marked for delete.

	#2717964 (Job #124712) **
	    In rare cases the setup to run p4diag automatically can fail on
	    Windows Server 2022 Enterprise without a desktop installed. This
	    has been corrected.

	#2716897 (Job #123811) **
	    In certain cases 'p4 add' for a file with long path could
	    incorrectly pass the length limit test and get added for submit
	    when it was expected to fail. This change fixes the problem.

	#2716524 (Job #123694) **
	    Edge servers will no longer reject submit commands if a depot not
	    involved in the submit has less free space than the
	    'filesys.depot.min' threshold.

	#2716062 (Job #124590) **
	    The configurable server.start.unlicensed is now documented. This
	    configurable has been present since 2016.1.

	#2715929 (Job #123810) **
	    If a file with path length longer than 1024 is committed, doing a
	    'p4 sync' on edge-server for this file could cause the edge-server
	    to crash. This change fixes the problem.

	#2715482, #2719024 (Jobs #121960, #117688) **
	    'p4 switch' performed a sync to #have which could remove all
	    unmodified files from a user's workspace if the user had
	    previously switched streams using the '--no-sync' option. The sync
	    to #have was added to switch in 2024.1 to address an issue found
	    related to pruned files. This fix removes that sync to #have from
	    the 'p4 switch' logic in favor of updating how 'p4 switch' uses
	    reconcile to avoid the issue with pruned files.

	#2714158 (Job #124532) **
	    The 'p4 diagnostics' command now supports the '-j' option that will
	    encode the 'diags' and 'monitor' files in JSON.

	#2713178 (Job #124533) *
	    Fixed an issue that causes a parallel sync to sometimes produce
	    zero-byte binary+F files when connected to a Unicode server.

	#2711988 (Job #124604) **
	    When recovering a checkpoint containing partitioned clients that
	    mismatches the case of the server, a parallel recovery would
	    report an extra spurious error about a missing configurable. This
	    has been fixed.

	#2711976 (Job #122574) **
	    The command 'p4 -c readonlyclient client -d writeableclient' with
	    the partitioned type now successfully deletes the client.

	#2711712 (Job #124526) **
	    Changed 'p4 pull -R' to make it work on commit-servers too.

	#2711526 (Job #124613) **
	    Setting 'auth.ldap.ssllevel=2' on a Windows server will no longer
	    allow connections to LDAP servers with self-signed certificates
	    unless that certificate is installed into the CA store or is
	    specified with 'auth.ldap.cafile'.

	#2709467 (Job #124534) **
	    Serverlocks on Windows servers are no longer deleted in such a way
	    that on rare occasions synchronous operations could occur in
	    parallel.

	#2708864 (Job #124517) **
	    'p4 diagnostics' could fail with an "Infinite loop in Layout" error
	    when generating the topology data for a large network. This has
	    been fixed.

	#2708858 (Job #124284) **
	    A 'p4 diagnostics -s' request for an strace of the server and
	    associated processes is now supported on Linux platforms.

	#2708446 (Job #124496) **
	    The 'p4 diagnostics' command now produces a 'topology.dot' file in
	    the diagnostics directory. This file is in graphviz format that
	    can produce a graphical diagram of the network topology.

	#2705995 (Jobs #124317, #124320) * **
	    P4ALTSYNC agents are now provided with a 'time' field containing
	    the modtime to set on add/added files of type +m or when the
	    modtime client option is enabled.

	#2705985 (Job #124350) **
	    'p4 diagnostics' returns a 'file not found' error if a logfile is
	    not configured on the server. This has been fixed.

	#2705691, #2706864 (Job #122189) * ** *** ****
	    When using either the tcp64 or ssl64 protocols (IPv6 or IPv4), IPv4
	    addresses are now always formatted as IPv4 addresses rather than
	    mapped IPv6 addresses.

	#2704826 (Job #124281) **
	    'p4d -jd' no longer creates empty directories for partitioned
	    clients.

	#2704294 (Job #122963) **
	    On an edge server with submit.allowbgtransfer=1 and
	    submit.autobgtransfer=1, when a file edit is submitted without
	    change, the option '-f submitunchanged' of submit would fail to
	    override 'revertunchanged' from the client spec. This would result
	    in the submit failing with: "No files to submit". This change
	    fixes the problem.

	#2703879 (Job #121661) **
	    There was a problem in 'p4 unload' that when unloading many files
	    at once it would lock tables in a way that would block other
	    commands like 'p4 monitor'. This change fixes the problem.

	#2703054 (Job #124145) **
	    Fixed a conflict between writable components and Ignored paths.

	#2702307 (Job #123764) **
	    'p4 diagnostics' could fail with an 'infinite loop' error if the
	    topology table contained a large number of broker or proxy entries
	    that did not have a serverID set. These records are now ignored.

	#2702148 (Jobs #124070, #121658) **
	    Checkpoint files created with the parallel and multifile options
	    now use a '#' character to mark the start of the batch number
	    encoded within the filename. Previously the server would use a '_'
	    character that could clash with a client name for a partitioned
	    client.

	#2701937 (Job #124079) **
	    'p4 pull' will not retry previously failed RCS type revs, if the
	    failure was due to a RCS parse error.

	#2700625 (Job #123919) *
	    With AltSync client on Windows concurrent multiple 'p4 sync'
	    commands could fail with "All pipe instances are busy". Problem is
	    now fixed.

	#2696571 (Job #121788) **
	    'p4 verify -v -U' was not fixing bad digest or size in the unload
	    depot. This change fixes the problem.

	#2696546 (Job #124006) **
	    Changed the k-value for configurable 'net.delta.transfer.minsize'
	    from 1 to 1024.

	#2695509 (Job #118107) **
	    'p4 copy -v' could fail with "Error opening librarian file". This
	    change fixes the problem.

	#2695495 (Job #123050) **
	    For 'p4 changes -m <max> -e <change>' it would excessively scan
	    records from db.change. This change fixes the problem.

	#2691611 (Job #123904) **
	    Deletion of a partitioned database table now deletes only the
	    numbered partitioned directory.

	#2691574 (Job #123912) **
	    A partitioned database table path could be incorrectly parsed. This
	    has been fixed.

	#2690826 (Job #100587) **
	    A new option has been added to the 'p4 storage -l start'
	    subcommand, '--nonlbr', that requests that the scanner remove any
	    files that are not in archive format. A report file is generated
	    when the '--nonlbr' option is specified that can be viewed by
	    using the optional '--nonlbr' option to 'p4 storage -l status'.

	#2689932, #2693095 (Job #120059) **
	    There was a race condition between directory removal and archive
	    creation on an edge during a 'p4 submit -e' for binary file types.

	#2689388 (Job #122377) **
	    'p4 submit' on edge could fail when a changelist had a lot of files
	    with long paths due to edge running out of rpc buffer. This change
	    fixes the problem by sending lock requests in batches. The number
	    of files in each batch is controlled by the setting in the
	    configurable dm.locks.global.batch.net (default is 10,000).

	#2689296 (Job #123856) **
	    The 'svrRecType' topology field is no longer unset during replica
	    restart when an upstream server is older than 2022.2.

	#2689260 (Job #123774) ***
	    Reuse of a ClientApi object across connections that involve a proxy
	    no longer causes "Unknown command" errors after client statistics
	    should have been reported to the server.

	#2688723 (Job #123797) **
	    Delta commit against a file with missing server-side content for
	    the prior revision, or against a deleted prior revision could fail
	    with a "zero length chunk map" error.

	#2686689 (Job #123487) **
	    `p4 verify -t` can now be run on unicode enabled servers.

	#2686390, #2689821 (Job #109468) **
	    For commands with a filetype parameter when run with '-t text', it
	    used to mean 'text+D'. With this change the default is decided
	    based on the setting for configurable lbr.autocompress: If
	    lbr.autocompress=1 storage modifier will be '+C', otherwise it
	    will be '+D'. The new behavior also affects commands like fstat
	    that output filetype. These commands now show the storage
	    modifier, '+D' or '+C', in the output (for fstat in the lbrType
	    field). Users can revert back to the old behavior by either using
	    a -Zapi < 98 or by setting the configurable
	    sys.types.text.storage.behavior to 0.

	#2685672, #2686815 (Jobs #123022, #119098) **
	    The sync operation no longer causes the database open error to
	    occur on the db.sendq.pt database table.

	#2685390 (Job #123351) **
	    'p4 logexport' now performs more thorough validation of endpoint
	    addresses.

	#2683230 (Job #123521) **
	    Clients of 'readonly' type now work correctly as revision
	    specifiers.

	#2682685 (Job #123438) **
	    Prevent crash on journal replay with an update, then delete, of a
	    db.config record with a specific serverID within the same journal.

	#2682684 (Job #123524) **
	    Improved performance of p4 zip, fetch and pull commands when
	    running with large number of revision data or changelists.

	#2680592, #2682374 (Job #123443) **
	    Commands run through a broker and then forwarded to another server
	    will no longer cause hangs for successive commands run on the same
	    connection after a client could have reported client stats.

	#2679606, #2680298 (Job #123346) **
	    A 'p4 sync' on an edge server with lbr.replication=cache could
	    cause server to hang. This change fixes the problem.

	#2678893 (Job #123279) **
	    'p4 changes --explain' is updated to include descriptions for
	    --user-case-insensitive and --client-case-insensitive.

	#2677295 (Job #121121) **
	    Corrected an unexpected 'Files are missing as a result of one or
	    more move operations' error in the fetch, push, and zip commands.

	#2676128 (Job #123359) **
	    The commands 'p4d -K db.have.pt' and 'p4d -k db.have.pt' now
	    exclude and include all the available partitioned have tables.

	#2674505 (Job #122687) **
	    Commands that specify multiple arguments using different
	    partitioned clients as the revision specifiers will now return the
	    correct results for each argument.

	#2668074 (Job #123024) **
	    p4 diagnostics and the lock reporting subsystem of the monitor now
	    parse the old output format of 'lsof' correctly.

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

Major new functionality in 2024.2 (2024.2/2675662) (2024/10/31)

	#2652338, #2663960, #2664633 (Job #120954) * **
	    The 'p4 sync' command now sends files of type 'binary+F' using
	    delta transfer to improve performance. This builds on the delta
	    transfer support added to 'p4 submit' in 2024.1 and uses the same
	    configurables to tune the behavior.

	#2629301, #2662459, #2668029, #2668972 (Jobs #121018, #123039, #123047)
	**
	    OpenTelemetry Logging Integration

	    Structured logs may now be exported via OTLP to a range of log
	    aggregation services. This works for structured logs in either CSV
	    or JSON formats by configuring `p4 logexport` as a startup command
	    (see 'p4 help logexport' for details). Logs will be exported in JSON
	    format to avoid the log aggregator needing to be configured to parse
	    the CSV structures. Log rotation will be followed and any log files
	    still being exported will not be removed by the structured log's
	    retention policy.

	#2622736, #2647879 (Jobs #121117, #122257) * **
	    Support for 'hotfiles' with altsync clients.

	    Files that match the criteria (path, size and/or type based)
	    specified in the 'p4 hotfiles' spec will be transferred to the
	    client during sync rather than the altsync agent creating
	    placeholders to be hydrated later.
	    See 'p4 help hotfiles' for more details.

Technology Preview features 2024.2 (2024.2/2675662) (2024/10/31)

	#2652025 (Job #87744) **
	    A new command, 'p4 diagnostics', has been added to aid Perforce's
	    support team to generate server diagnostics.

Minor new functionality in 2024.2 (2024.2/2675662) (2024/10/31)

	#2666581, #2668972 (Jobs #123047, #121018, #123039) **
	    Structured logs now rotate with the correct filename when the log
	    is configured to override a differently named log configured via
	    the 'any' server specifier.

	#2659482 (Job #59679) **
	    JSON format structured logs, defined with the '.json' extension,
	    are now supported. This includes compatibility with 'p4 logparse'.

	#2658019, #2673369, #2673937 (Job #122086) **
	    This change alters 'p4 changes' command to allow multiple -c
	    options. Each -c value can include wildcards and possibly start
	    with '-' to exclude changes with certain clients from the result.

	#2656556, #2657260, #2673999, #2674204 (Job #121864) **
	    This change alters the -c option of 'p4 changes' to allow it to
	    work as a search pattern possibly with wildcards. Adding a -E flag
	    ( or the long --client-case-insensitive flag) makes the matching
	    case-insensitive even on a case-sensitive server. Similar change
	    is also applied to the -u option. Note that we can have multiple
	    -u options and each can now be a search pattern that supports
	    wildcards and can start with '-' to exclude specific users. The -E
	    flag ( or the long --user-case-insensitive flag ) can be used to
	    control case-sensitiveness.

	#2655555 (Job #122085) **
	    With this change the 'p4 changes' command allows multiple -u
	    options to allow filtering of the results on multiple users.

	#2651326, #2658004 (Job #119824) **
	    For 'p4 clients' the -u option can now work as a filter pattern
	    possibly with wildcards. If wildcards are used the filter pattern
	    should be enclosed in double quotes. This filter follows the
	    server's normal case-sensitivity rules. Adding the
	    --user-case-insensitive flag makes the matching case-insensitive,
	    even on a case-sensitive server. Similar change is also applied to
	    the -u option for the 'p4 labels' and 'p4 branches' commands.

	#2643597 (Jobs #120959, #120763) **
	    Enabled 'p4 unshelve -S //stream [-P //parent]' for sparse streams.
	    A merge down may be required before unshelving from the parent
	    stream.

	#2627572, #2627714 (Jobs #119476, #119575) **
	    The command 'p4 journaldbchecksums -u unloadfile -t dbtable' now
	    unload the files successfully for the partitioned-jnl have tables.

	#2623791 (Job #121131) ** *** ****
	    SSL certificates that use EC, ED25519 or ED448 keys are now
	    supported.

	#2621152, #2621158 (Job #119512) **
	    'p4d -xx' command can now be used to check the integrity between
	    the tables 'db.working' and 'db.have.pt%pclient', where the later
	    represents a specific partitioned have table.

	#2616805, #2641818 (Job #38882) **
	    This change improves performance for the unlock command with force
	    flag: 'p4 unlock -f -c <chg>'.

	#2614611 (Job #119863) **
	    This change introduces a new flag, '-l', for 'p4 obliterate'. When
	    this flag is set the command will skip deleting db.label records
	    for the purged files. This also introduces a new journal note,
	    note number 33, to signal obliterate flags -l and -h to
	    edge-servers. The new journal note has one parameter, an integer,
	    that with value 1 signals -h and value=2 signals -l. Please note
	    this functionality changes purge behavior on edge servers. The new
	    journal note when sent without an -h flag will now purge records
	    on that edge.

	#2601263, #2602814, #2606491, #2613635 (Jobs #119311, #119719) **
	    The commands 'p4 attribute' and 'p4 fstat -Oa' could fail with
	    'Rpc buffer too big' errors if an attribute value size was
	    too large (greater than 250MB). Now the command 'p4 attribute
	    -I' which reads the attribute value from a file may be used for
	    attribute values that would generate that error. In addition,
	    the 'p4 print -T' command may now be used to print an attribute
	    value that would generate that error from the 'p4 fstat -Oa'
	    command.

	#2599011 (Job #66622) **
	    'p4 clients -S stream' now supports wildcards.

Bugs fixed in 2024.2 Patch 5 (2024.2/2877946) (2026/01/14)

	#2876765, #2857489, #2870606, #2871239, #2872667 (Jobs #129173,
	#130295) **
	    In journal replay where the journal includes a note 31 for deleting
	    a partitioned table, it no longer fails with the error: "dbdel
	    db.have:no write lock!".

	#2874697 (Job #121299) **
	    Fixed server crash where altsync agent response did not include the
	    program version.

	#2872235 (Job #105807) **
	    The edge server log no longer shows the "Operation 'dmr-Sequence'
	    failed" error when an edge-submit fails after a shelved change is
	    created.

	#2871598, #2850381 (Job #112113) **
	    Shelves belonging to clients that no longer exist are now treated
	    as if they are owned by the commit server. If deleting a client
	    from an edge server, shelves are now promoted as part of that
	    client delete.

	#2870853, #2848828, #2869137 (Job #129416) **
	    Replication of filtered out records no longer cause replicas to
	    wait for those transactions to complete.

	#2868883 (Job #88586) *
	    If a Control-C was issued to P4 during a sync operation, the client
	    could end up inconsistent with the Server. This has been
	    corrected.

	#2868455, #2846308 (Job #128028) **
	    If an edge server cannot rename the archive of a shelved file
	    during promote, it now returns a clear error rather than enter a
	    loop.

	#2867342 (Job #124759) **
	    'p4 list' will now correctly update a temporary label on a most
	    recent update basis when using multiple overlapping arguments or
	    when the same label is specified multiple on multiple commands
	    within the same connection.

	#2864294, #2848656 (Job #129290) ** *** ****
	    Self-signed certificates created with the `-Gc` option on p4d, p4p
	    or p4broker are now signed with a SHA256 hash.

	#2860970, #2832943 (Job #128946) * **
	    cURL (for extensions) has been upgraded 8.16.0.

	#2859679 (Job #122815) **
	    The formatted ISO8601 date in the structured logs is now correctly
	    converted to UTC.

	#2858863 (Job #118452) **
	    Forwarding replicas of edge servers now correctly handle shelves
	    that are not managed by the first upstream edge server.

	#2858857 (Job #126852) **
	    TinyXML2 has been upgraded to 11.0.0

	#2856254, #2837121 (Job #128588) **
	    The p4d commands 'p4d -xv', 'p4d -xvU', 'p4d -xr', 'p4d -xrU' and
	    'p4 dbverify' have been updated to improve handling of partitioned
	    have tables.
	    When processing all tables (no arguments), these commands no
	    longer process the per-client tables for readonly or partitioned
	    type clients. The per-client tables for partitioned-jnl type
	    clients will be processed only if the 'db.partition.verify'
	    configurable is set to '1'.
	    When partitioned tables are explicitly specified (for example:
	    'p4d -xv db.have.pt' or 'p4d -xr db.have.pt%pclient'), all
	    per-client tables will be processed regardless of client type.
	    These commands no longer create empty tables if a per-client table
	    does not exist.

	#2855874, #2835080 (Job #127882) **
	    Permission errors no longer occur when a delta transfer map file
	    was deleted and later simultaneous syncs were issued for the
	    corresponding file revision.

	#2855862 (Job #126106) **
	    Fixed binary+l file mistakenly registered as an orphaned locked
	    file after a copy from a sparse stream, where the file was not
	    resident in the sparse stream.

	#2855487 (Job #125149) **
	    Integrations into sparse streams now take much less time.

	#2855485 (Job #127351) **
	    The copy, merge, and integration commands for sparse stream targets
	    do an autosync at the end of the command. This behavior can now be
	    disabled with the virtual integration flag '-v', which prevents
	    branched and deleted files from affecting the workspace.

	#2854328 (Job #124125) **
	    p4d -xv will now skip the partitioned client database tables that
	    are not on the server instead of reporting the 'table not known'
	    error.

	#2854156 (Job #128849) **
	    'p4 journaldbchecksums -u', 'p4 journaldbchecksums -s', 'p4
	    dbstat', 'p4 dbpack' and 'p4d -jc' no longer try to access
	    partitioned tables that are not expected to be present on the
	    server.

	#2844204 (Job #128842) **
	    'p4 describe -a -S' now correctly shows the diff for files open for
	    add in the shelf.

	#2841424 (Job #128816) **
	    Writes to partitioned have tables can no longer append journal
	    records to the end of a rotated journal.

	#2837460 (Job #122971) **
	    Improved messaging when opening a file. Instead of: "<depotFile> -
	    can't add exclusive file already opened", the message includes the
	    action the other client did that locked the file. For example,
	    "<depotFile> - can't add exclusive file already opened for add".

	#2837448 (Job #127084) **
	    Improved performance of 'p4 shelve' for a change on keyed files
	    that has an action of branch or integ.

	#2837443 (Job #124713) **
	    'p4d -xvU' and 'p4 dbverify -U' no longer process partitioned have
	    tables when the 'db.partition.verify' configurable is set to '0'.

	#2836402, #2835855 (Job #126265) **
	    When a 'p4 attribute -f' command would result in identical trait
	    content and the traitLot reference count is greater than 1, the
	    identical content would be copied to a new traitLot. This could
	    cause unnecessary resolves in later 'p4 copy' operations. This
	    attribute command scenario has been changed to not create
	    the redundant new traitLot and content when the trait content is
	    unchanged.

	#2835409 (Job #128688) **
	    The command 'p4 undo' now works with the partitioned and
	    partitioned-jnl client types.

Bugs fixed in 2024.2 Patch 4 (2024.2/2832881) (2025/09/30)

	#2831029 (Jobs #124576, #125630) **
	    Recovering an incompatible checkpoint will no longer report an
	    incorrect line number in the error message.

	#2831029, #2823492 (Jobs #125630, #124576) **
	    Replication will no longer halt in the case where a partition have
	    delete journal note (31) and a change or block checksum note (15
	    or 17) are encapsulated by a longer running transaction.

	#2830504, #2827789 (Job #125371) **
	    'p4 istat' no longer takes read locks when 'db.peeking' is set to 1
	    or greater.

	#2828675 (Jobs #125669, #128002, #128003) **
	    Reloading a partitioned client on an edge server with
	    'server.global.client.views=1' set will now correctly restore the
	    client's have records.

	#2828675 (Jobs #128002, #125669, #128003) **
	    Reloading a stream client on an edge server with
	    'server.global.client.views=1' set will no longer send the
	    generated 'View' or 'ChangeView' to the commit server.

	#2828675 (Jobs #128003, #125669, #128002) **
	    Reloading a client with a 'ChangeView' on an edge server with
	    'server.global.client.views=1' set will now correctly send both
	    the 'View' and 'ChangeView' to the commit server.

	#2828657 (Job #127310) **
	    Edge servers no longer try to delete db.have.pt tables for clients
	    not associated with that edge server and no longer propagate that
	    journal note to downstream servers.

	#2812368 (Job #127760) **
	    Fixed 'invalid out-of-bounds conversion of DmtStreamPathType'
	    error.

Bugs fixed in 2024.2 Patch 3 (2024.2/2809203) (2025/07/31)

	#2804851, #2777466 (Job #126880) **
	    S3 uploads to AWS no longer fail with files greater than 4Gb in
	    size.

	#2801979, #2795308 (Job #126938) **
	    'p4 login' will now return a distinct error when
	    'dm.user.setinitialpasswd' is disabled and the user has no
	    password set, informing the user that a super user must set their
	    initial password.

	#2801971, #2792404 (Job #127436) **
	    'p4 copy' will now ignore files that only differ by attributes when
	    the 'dm.copy.attributes' configurable is set to 0.

	#2800986, #2790232 (Job #127027) **
	    Edge servers processing obliterates from the upstream server no
	    longer perform full scans of the db.working table.

	#2800845, #2793233 (Job #126602) **
	    If replication is stalled or it is slow, the edge server could send
	    a change-update up to its target server based on an outdated
	    record, and cause data inconsistency. This change prevents such a
	    change-update and returns this message: "Operation failed on
	    remote server because of data inconsistency, possibly due to
	    stalled or slow replication".

	#2800277, #2755654, #2789104 (Jobs #110808, #121743, #123079, #126160,
	#126593) ** *** ****
	    The server no longer sends multiple duplicate certificates from a
	    certificate chain to the client after a 'p4 admin restart'.

	#2800277, #2755654, #2789104 (Jobs #121743, #110808, #123079, #126160,
	#126593) **
	    After restart or failover, the server now reloads relevant
	    network-related configurables and reloads certificates from the
	    certificate file, which prevents a SSL handshake error after
	    failover when the certificate file has been modified. The
	    certificate file is now checked for out-of-order certificates and
	    logs a message ("NetSslEndPoint::Listen() - invalid certificate
	    chain") if any are found, but does not produce an error because
	    these issues often do not cause problems.

	#2799244, #2793768 (Job #127029) **
	    The journal note written by 'p4 obliterate' with the -h and/or -l
	    flags is now correctly re-written to the journal when replayed or
	    replicated.

	#2793725, #2792087 (Job #127398) **
	    The stream spec permission checking is no longer applied to submits
	    to streams that do not include a change to the stream spec.

	#2792657, #2789624 (Job #125649) **
	    Operations like 'p4d -c <command>' that lock all tables now wait
	    for any simultaneous work on partitioned tables to finish before
	    proceeding.

	#2791198, #2766621 (Job #123091) **
	    On a case-insensitive server with server.depot.root set, files with
	    names containing an uppercase character no longer fail to be
	    uploaded to an S3 bucket.

	#2791197, #2764800 (Job #126179) **
	    The compare routine for the lbrRev type used in the storage tables
	    no longer ignores the first "1." part of the field. This was
	    causing problems for imported CVS files.

	#2791146 (Job #124284) **
	    A 'p4 diagnostics -s' request for an strace of the server and
	    associated processes is now supported on Linux platforms.

	#2790599, #2766264 (Job #125471) **
	    Fixed an intermittent 'no write lock' error with journal replay
	    into an offline db when the location of the client.readonly.dir is
	    shared between the p4d server and the offline db.

	#2789592, #2768501, #2770954, #2787777 (Job #126773) **
	    The sync operation no longer causes the database open error to
	    occur on the db.sendq.pt database table when the frequency of
	    syncs is high.

	#2788865, #2787215 (Job #127308) **
	    The modtime of binary files with either the +m modifier or with the
	    modtime option enabled in the client are now correctly passed to
	    altsync agents.

	#2778789, #2773409 (Job #126534) **
	    Fixed the following issue: When doing parallel recovery using
	    multifile checkpoint and the source includes a partitioned client,
	    if the partitioned client-name ends in an underscore followed by
	    eight digits, valid for a multifile checkpoint file sequence
	    number, recovery could fail with an error like
	    "..._00000001.ckp.gz: No such file or directory".

	#2777814, #2746192 (Job #125639) **
	    The journal note type 31 now deletes the respective partitioned-jnl
	    table during the journal replay operation.

	#2774158, #2767902 (Job #123209) **
	    Topology updates from replicas now release locks earlier and no
	    longer wait for replication to synchronize.

	#2773068, #2741593 (Job #125093) **
	    Both 'journalcopy' and 'pull -L' accessing journal-files at the
	    same time could result in bad data in the state file and cause
	    replication to stop. This change fixes the problem.

	#2772883 (Job #123929) **
	    Fixed istat crash due to inconsistencies in stream spec data
	    originating from pre-19.1 servers. Run 'p4d -xf 123929' to fix
	    inconsistent data.

	#2770957, #2749180 (Job #125223) **
	    We were mistakenly checking the permissions to stream spec when
	    doing submit to a classic depot. We have now stopped checking
	    stream permissions when submitting for a classic depot.

	#2743839, #2742376 (Job #125478) **
	    The @ex@ entry in the journal for the partitioned-jnl have table is
	    now generated after the group of @dv@ entries during the
	    respective client deletion operation when the configurable
	    db.partition.dropondelete is unset.

	#2738211, #2737504 (Job #125287) **
	    The partitioned-jnl, partitioned and readonly client types can now
	    be converted into writeable client type.

	#2737616, #2733431 (Job #124867) **
	    The writeable client type can now be converted into partitioned,
	    partitioned-jnl or readonly client type. If there are any opened
	    files, then the conversion to readonly client type results in an
	    error.

	#2736502 (Job #124603) **
	    A checkpoint created using '-jc' with more than a single thread
	    enabled that contains partitioned clients could place the
	    db.config table entries after those for the partitioned clients,
	    making it unrecoverable.

	#2736168 (Job #124604) **
	    When recovering a checkpoint containing partitioned clients that
	    mismatches the case of the server, a parallel recovery would
	    report an extra spurious error about a missing configurable. This
	    has been fixed.

	#2736162, #2726952 (Job #124578) **
	    Parallel checkpoints were incorrectly taking a read lock on the
	    db.monitor table and not releasing it until the checkpoint had
	    completed. This has been fixed.

	#2735980, #2734766, #2735348 (Job #125218) **
	    Fixed delta transfer server failure with error message about moving
	    a file pointer before the beginning of a file.

	#2733651, #2727978 (Jobs #124938, #125151) **
	    'p4 reload' on an edge server no longer crashes on reloading a non
	    partitioned client.

	#2733645 (Job #124865) **
	    The correct error message is now displayed during the conversion of
	    partitioned or partitioned-jnl clients with opened files to a
	    readonly client.

	#2733642 (Job #124748) **
	    The conversion between the partitioned-jnl and the readonly or
	    partitioned client types now updates partitioned have tables on
	    the replica servers appropriately.

Bugs fixed in 2024.2 Patch 2 (2024.2/2726408) (2025/02/27)

	#2722541, #2708446 (Job #124496) **
	    The 'p4 diagnostics' command now produces a 'topology.dot' file in
	    the diagnostics directory. This file is in graphviz format that
	    can produce a graphical diagram of the network topology.

	#2722257, #2719311 (Job #120859) **
	    Fixed excessive scanning of db.revsh by 'p4 verify -S' on a shelf
	    containing many files marked for delete.

	#2719772, #2705985 (Job #124350) **
	    'p4 diagnostics' returns a 'file not found' error if a logfile is
	    not configured on the server. This has been fixed.

	#2719510, #2717964 (Job #124712) **
	    In rare cases the setup to run p4diag automatically can fail on
	    Windows Server 2022 Enterprise without a desktop installed. This
	    has been corrected.

	#2719309, #2715482, #2719024 (Jobs #121960, #117688) **
	    'p4 switch' performed a sync to #have which could remove all
	    unmodified files from a user's workspace if the user had
	    previously switched streams using the '--no-sync' option. The sync
	    to #have was added to switch in 2024.1 to address an issue found
	    related to pruned files. This fix removes that sync to #have from
	    the 'p4 switch' logic in favor of updating how 'p4 switch' uses
	    reconcile to avoid the issue with pruned files.

	#2717517, #2711526 (Job #124613) **
	    Setting 'auth.ldap.ssllevel=2' on a Windows server will no longer
	    allow connections to LDAP servers with self-signed certificates
	    unless that certificate is installed into the CA store or is
	    specified with 'auth.ldap.cafile'.

	#2717515, #2716524 (Job #123694) **
	    Edge servers will no longer reject submit commands if a depot not
	    involved in the submit has less free space than the
	    'filesys.depot.min' threshold.

	#2716108, #2705691, #2706864 (Job #122189) * ** *** ****
	    When using either the tcp64 or ssl64 protocols (IPv6 or IPv4), IPv4
	    addresses are now always formatted as IPv4 addresses rather than
	    mapped IPv6 addresses.

	#2715355, #2711976 (Job #122574) **
	    The command 'p4 -c readonlyclient client -d writeableclient' with
	    the partitioned type now successfully deletes the client.

	#2715260, #2713178 (Job #124533) *
	    Fixed an issue that causes a parallel sync to sometimes produce
	    zero-byte binary+F files when connected to a Unicode server.

	#2714515 (Job #121788) **
	    'p4 verify -v -U' was not fixing bad digest or size in the unload
	    depot. This change fixes the problem.

	#2713832, #2709467 (Job #124534) **
	    Serverlocks on Windows servers are no longer deleted in such a way
	    that on rare occasions synchronous operations could occur in
	    parallel.

	#2711966 (Job #122581) **
	    'p4 diagnostics' now reports the directory name it creates in the
	    current directory and the types of diagnostics files produced
	    within that directory.

	#2710884 (Job #122999) **
	    The 'p4 diagnostics' command now uses the server's timezone to
	    construct the name of the output directory on the client.

	#2709876, #2704294 (Job #122963) **
	    On an edge server with submit.allowbgtransfer=1 and
	    submit.autobgtransfer=1, when a file edit is submitted without
	    change, the option '-f submitunchanged' of submit would fail to
	    override 'revertunchanged' from the client spec. This would result
	    in the submit failing with: "No files to submit". This change
	    fixes the problem.

	#2707699, #2705995 (Jobs #124317, #124320) * **
	    P4ALTSYNC agents are now provided with a 'time' field containing
	    the modtime to set on add/added files of type +m or when the
	    modtime client option is enabled.

	#2707194 (Job #124164) *
	    Include server version in altsync protocol.

	#2705683, #2702307 (Job #123764) **
	    'p4 diagnostics' could fail with an 'infinite loop' error if the
	    topology table contained a large number of broker or proxy entries
	    that did not have a serverID set. These records are now ignored.

	#2705178, #2703054 (Job #124145) **
	    Fixed a conflict between writable components and Ignored paths.

	#2704865, #2704826 (Job #124281) **
	    'p4d -jd' no longer creates empty directories for partitioned
	    clients.

	#2704302 (Job #124006) **
	    Changed the k-value for configurable 'net.delta.transfer.minsize'
	    from 1 to 1024.

	#2704119, #2702148 (Jobs #124070, #121658) **
	    Checkpoint files created with the parallel and multifile options
	    now use a '#' character to mark the start of the batch number
	    encoded within the filename. Previously the server would use a '_'
	    character that could clash with a client name for a partitioned
	    client.

	#2702391, #2700625 (Job #123919) *
	    With AltSync client on Windows concurrent multiple 'p4 sync'
	    commands could fail with "All pipe instances are busy". Problem is
	    now fixed.

Bugs fixed in 2024.2 Patch 1 (2024.2/2697822) (2024/12/18)

	#2697082, #2689388 (Job #122377) **
	    'p4 submit' on edge could fail when a changelist had a lot of files
	    with long paths due to edge running out of rpc buffer. This change
	    fixes the problem by sending lock requests in batches. The number
	    of files in each batch is controlled by the setting in the
	    configurable dm.locks.global.batch.net (default is 10,000).

	#2696849, #2689932, #2693095 (Job #120059) **
	    There was a race condition between directory removal and archive
	    creation on an edge during a 'p4 submit -e' for binary file types.

	#2696246, #2695495 (Job #123050) **
	    For 'p4 changes -m <max> -e <change>' it would excessively scan
	    records from db.change. This change fixes the problem.

	#2694774, #2691611 (Jobs #123904, #122088) **
	    Deletion of a partitioned database table now deletes only the
	    numbered partitioned directory.

	#2694762, #2691574 (Jobs #123912, #123992) **
	    A partitioned database table path could be incorrectly parsed. This
	    has been fixed.

	#2694104, #2689260 (Job #123774) ***
	    Reuse of a ClientApi object across connections that involve a proxy
	    no longer causes "Unknown command" errors after client statistics
	    should have been reported to the server.

	#2692845, #2688723 (Job #123797) **
	    Delta commit against a file with missing server-side content for
	    the prior revision, or against a deleted prior revision could fail
	    with a "zero length chunk map" error.

	#2689409, #2689296 (Job #123856) **
	    The 'svrRecType' topology field is no longer unset during replica
	    restart when an upstream server is older than 2022.2.

	#2687980, #2686689 (Job #123487) **
	    `p4 verify -t` can now be run on unicode enabled servers.

	#2687447, #2678893 (Job #123279) **
	    'p4 changes --explain' is updated to include descriptions for
	    --user-case-insensitive and --client-case-insensitive.

	#2685672 (Jobs #123022, #119098) **
	    The sync operation no longer causes the database open error to
	    occur on the db.sendq.pt database table.

	#2685390 (Job #123351) **
	    'p4 logexport' now performs more thorough validation of endpoint
	    addresses.

	#2684738, #2683230 (Job #123521) **
	    Clients of 'readonly' type now work correctly as revision
	    specifiers.

	#2684730, #2676128 (Job #123359) **
	    The commands 'p4d -K db.have.pt' and 'p4d -k db.have.pt' now
	    exclude and include all the available partitioned have tables.

	#2684728 (Job #122687) **
	    Commands that specify multiple arguments using different
	    partitioned clients as the revision specifiers will now return the
	    correct results for each argument.

	#2683843, #2682685 (Job #123438) **
	    Prevent crash on journal replay with an update, then delete, of a
	    db.config record with a specific serverID within the same journal.

	#2682374, #2680592 (Job #123443) **
	    Commands run through a broker and then forwarded to another server
	    will no longer cause hangs for successive commands run on the same
	    connection after a client could have reported client stats.

	#2681776 (Job #123024) **
	    p4 diagnostics and the lock reporting subsystem of the monitor now
	    parse the old output format of 'lsof' correctly.

	#2680577, #2677295 (Job #121121) **
	    Corrected an unexpected 'Files are missing as a result of one or
	    more move operations' error in the fetch, push, and zip commands.

	#2680298, #2679606 (Job #123346) **
	    A 'p4 sync' on an edge server with lbr.replication=cache could
	    cause server to hang. This change fixes the problem.

Bugs fixed in 2024.2 (2024.2/2675662) (2024/10/31)

	#2672959, #2673508 (Job #123250) **
	    Security fix. Addressed CVE-2024-10314, CVE-2024-10344 and
	    CVE-2024-10345

	#2667309, #2670380 (Job #123015) **
	    Fixed locking order bug when obliterating a stream and the
	    configurable index.domain.owner is 1.

	#2666580 (Job #123094) * ** *** ****
	    OpenSSL has been upgraded to 3.0.15

	#2665940, #2668113, #2670007 (Job #123034) **
	    Setting a trigger command to an empty string will now result in an
	    error on execution rather than allow the undefined behavior.

	#2665020, #2666238 (Job #122929) **
	    Revert 'track' configurable default value back to '-1'.

	#2664057 (Job #122520) **
	    Parallel dumps, 'p4d -jdp', did not support filtering for replicas
	    (-P). This has been fixed.

	#2663219 (Job #122411) **
	    In rare cases an unshelve performed by Swarm can cause a crash.
	    This has been corrected.

	#2662475 (Job #120460) **
	    Tamper checking in commands that update the have list has been
	    improved.

	#2661232, #2664152 (Job #122784) **
	    Corrected crash when authentication fails during istat operation.

	#2660919 (Job #117647) **
	    A crash in 'p4 transmit -r' has been corrected.

	#2660734, #2664338 (Job #120977) **
	    Fixed a problem where a user with openstreamspec permission could
	    open a stream spec but not edit the stream spec. Also fixed a
	    problem where a user with writestreamspec permission could not
	    edit and save a new stream spec.

	#2659944, #2668483, #2669324 (Job #122639) **
	    Unlimited group Timeout setting fixed.

	#2658234 (Jobs #122163, #122162) * **
	    Using the 'shelve' command to overwrite a previously shelved stream
	    spec now requires that the user provide the '-f' parameter.
	    Previously the 'shelve' command would overwrite an already shelved
	    stream spec without warning the user, this led to users
	    unintentionally losing those previously shelved changes.

	#2657745 (Job #121673) **
	    Uploads to S3 that generate a response code error between 500 and
	    599 are now retried up to lbr.s3.uploadretries number of times.
	    The default of lbr.s3.uploadretries is 5.

	#2656176 (Job #122643) **
	    Promoting shelved changes with the `-p -c` flags also incorrectly
	    shelved any open stream specs prior to the promotion.

	#2655935 (Job #122569) * **
	    cURL has been upgraded 8.10.1

	#2654300, #2657799 (Job #122472) **
	    A rare infinite loop caused by an over-optimisation when scanning
	    the rev table has been fixed.

	#2652980 (Job #113058) **
	    Fixed stream spec obliterate problem where a super or admin user
	    could not obliterate the stream spec if configurable
	    'dm.protects.streamspec' was set to 1.

	#2652798 (Job #122446) **
	    Command tamper checking integrity has been improved and now uses
	    SHA256 by default. The 'security.digest' configurable maybe used
	    to choose an alternative hashing algorithm.

	#2650419, #2650448 (Job #119098) **
	    The deletion of the partitioned client now ensures that the
	    numbered partitioned client directory is deleted as well.

	#2649655, #2650687 (Job #121134) **
	    Fixed istat crash with noinherit ParentView when db.bodtextcx rows
	    are missing.

	#2648564 (Job #122076) **
	    The command-line client on Windows now prints an error when it
	    detects ambiguous argument encoding.

	#2648445 (Job #108593) **
	    A 'p4 submit' on an edge-server can fail with an "Unknown command"
	    error if it is submitting a large number of files with long
	    path-names all together in one changelist. This has been fixed to
	    report a more meaningful error message, "Rpc buffer too big to
	    send!".

	#2648278, #2654563 (Job #122088) **
	    The empty partitioned have directories are no longer created.

	#2648198 (Job #121666) **
	    Using S3 for archive files can raise 'file not found' errors
	    when the files are accessed concurrently by multiple
	    clients. This has been fixed.

	#2648197 (Job #117955) * **
	    The zlib deflate operation uses x64 instructions not supported on
	    older CPUs raising an illegal instruction exception. This has been
	    fixed.

	#2645910 (Job #122240) **
	    When the configurable 'client.sendq.dir' is set, the partitioned
	    have table is now unlocked and removed during the deletion of the
	    respective partitioned client.

	#2644332 (Job #122058) **
	    Fixed a memory leak when pull-archive triggers are used to
	    perform archive file transfer.

	#2644014 (Job #121944) * **
	    Added net.delta.transfer.minsize and net.delta.transfer.threshold
	    to 'p4 help configurables'. These configurables allow the Helix
	    Core Server and individual clients to enable and disable delta
	    transfer for binary files based on the file size and amount of
	    change between current and prior revisions.

	#2643135, #2643915 (Job #121830) **
	    A recovery operation can fail when the checkpoint file contains
	    multiple partitioned clients. This has been fixed.

	#2639860 (Job #122043) **
	    The commands 'p4d -k -jd' and 'p4d -K -jd' now successfully filter
	    the partitioned have tables as expected.

	#2638204 (Job #119735) **
	    On Windows, network share access permissions for RCS depot archives
	    can cause a crash.  This has been resolved.

	#2637834 (Job #121380) **
	    'p4 reshelve' will now copy shelved stream specs from the source
	    shelf to the destination shelf. The default behavior of reshelve is
	    that it will copy shelved files and stream specs, however this
	    behavior can be controlled by the two new parameters, -Af and -As.
	    If -As is provided then only the shelved stream spec will be
	    copied. If -As is provided then only the shelved files will be
	    copied.

	#2635787, #2636780 (Job #121863) **
	    Fixed a problem where a command following a stream obliteration
	    might give an error the obliterated stream was unknown. The
	    problem only occurred with P4API clients.

	#2632658, #2637044, #2640867 (Job #120711) **
	    The auto pull operation now updates the 'lastSeenDate' field of the
	    respective 'connect' type topology record across the servers.

	#2632065, #2633518 (Job #121790) **
	    If a virus scanner locks a portion of an RCS temp file during
	    a pull operation, a crash may occur. This has been corrected.

	#2631147 (Job #120839) **
	    Failed login delay will now take an exclusive server lock on the
	    client address.

	#2629083 (Job #119346) **
	    In case of a commitServer-Edge-ForwardingReplica chain, there was a
	    problem where on ForwardingReplica a 'p4 submit' after
	    Integ/Resolve could fail because archive files were missing on the
	    Edge server. This change fixes the problem by pulling the missing
	    archive-files for the Edge server when needed, allowing 'p4
	    submit' to succeed.

	#2628801 (Job #120764) **
	    Removed unnecessary error "Error object passsed to database already
	    with an error" when attempting to switch a stream workspace with
	    unresolved issues.

	#2627474 (Job #121555) **
	    When 'dm.user.hideinvalid' is enabled, non-existent users no longer
	    suppress the autologin prompting.

	#2627098 (Job #120925) **
	    Fixed a sparse stream integration problem where an integrate to the
	    sparse stream from the parent was required after an integrate from
	    the sparse stream to parent, even if no changes had occurred in the
	    parent after the first integration.

	#2626264 (Job #121554) *
	    The file system interface now supports the setting of multiple
	    extended attributes with a single system call on Windows. This
	    improves VFS performance.

	#2625760, #2626412, #2628458, #2628645, #2629302 (Job #121621) **
	    Setting a very low value of db.checkpoint.reqlevel can allow a
	    multifile parallel checkpoint or dump to skip small db.files.
	    This has been fixed.

	#2623815, #2625761, #2626380 (Job #121575) **
	    The DateTime server type is now defined as a 64 bit signed integer
	    rather than the system defined time_t. This help interoperability
	    with 32bit clients.

	#2623790 (Job #121563) **
	    'p4 user -Dy' will no longer cause replication of an edge server to
	    hang.

	#2620569 (Job #119795) **
	    For p4 fetch', if '-I' flag is used the command could fail
	    unexpectedly with a 'Cannot import' error. This change fixes
	    the problem.

	#2619224, #2622942 (Job #121237) * **
	    A new client side configurable 'net.delta.transfer.threshold' has
	    been added to specify the maximum percentage of file size to
	    perform a delta transfer before reverting to streaming the
	    complete file for 'p4 submit' of binary+F files. A value of 0
	    disables the delta transfer.

	    On a low-bandwidth remote client, a small reduction in file
	    transfer would provide performance gain therefore a higher
	    threshold for the delta transfer would be beneficial; whereas
	    on a client with faster network, a low or zero threshold
	    would avoid the overhead incurred by the delta transfer.

	#2617863, #2622232 (Jobs #121296, #121297) **
	    Fixed a crash in 'p4 fstat -Sr -Or /outside/of/workspace/file'.

	#2615605, #2622231 (Job #121279) **
	    Improved 'p4 submit' performance with delta transfers by removing
	    extraneous resource locking on the p4d server.

	#2613383 (Job #121119) ** ***
	    Fix for client 'clobber' option being dropped when syncing
	    through a proxy.

	#2611770, #2611791 (Job #121151) **
	    'p4 integ' now correctly integrates the files related to the
	    partitioned-jnl type clients.

	#2611612, #2611624 (Job #121150) **
	    'p4 unshelve' now correctly unshelves the files in the
	    partitioned-jnl client workspaces.

	#2611471, #2611480 (Job #121143) **
	    'p4 reconcile' now correctly handles the partitioned-jnl client
	    workspaces.

	#2611120 (Jobs #120640, #120253) **
	    Using an edge client to populate a stream failed with the error,
	    "file(s) not in client view", when stream components were
	    disabled.

	#2609870, #2610983, #2611896, #2612833, #2617061, #2618069 (Job
	#121091) **
	    Fixed reversion of an open stream spec when using the command
	    'p4 revert -a -Si filelist...'.

	#2609726, #2610446 (Job #121059) **
	    Parallel sync now works correctly from a partitioned client when
	    'client.sendq.dir' is also set.

	#2609587 (Job #120982) **
	    Fixed 'rmt-fileExistsReplica' not exiting properly on commit-server
	    if the calling replica is missing the ExternalAddress field in its
	    server spec.

	#2609119, #2609372, #2609822, #2610994, #2612813, #2617296 (Job
	#121079) **
	    Fixed reversion of an open stream spec when using the command
	    'p4 revert -n -Si filelist...'.

	#2609107, #2609848, #2610973, #2611912, #2617328, #2618078 (Job
	#120791) **
	    Fixed stream obliterate endless loop problem.

	#2607904, #2635328 (Job #120522) **
	    To ensure the consistency among the servers, the 'partitioned-jnl'
	    type client cannot be set or created until all upstream servers have
	    been upgraded to at least 2024.1 server version.

	#2607484, #2609805 (Job #120840) **
	    If a Helix Core Server is configured with no logging, a crash may
	    occur. This has been corrected.

	#2606707 (Job #120873) **
	    In very rare cases, a CPM, DOS or early Windows text file may use a
	    Ctrl-Z as an EOF marker.  Now when such a text file is appended,
	    the EOF is marker is removed before extending the file content.

	#2604549, #2604916 (Jobs #120774, #120775, #120913, #120914, #120916,
	#120918, #120919) **
	    The partition client have tables now encode the invalid filesystem
	    characters.

	#2603099 (Jobs #120824, #120744) **
	    Fixed an error message when unshelving a sparse stream spec which
	    has a lower parent stream changeview than the current stream spec.
	    The previous error message did not make sense in an unshelving
	    context.

	#2602592, #2624868, #2625699 (Job #115232) **
	    This change introduces a new flag, -E, for p4 copy. The -E flag
	    overrides the current setting for the 'dm.integ.tweaks'
	    configurable and its effect is the same as having
	    'dm.integ.tweaks' set to 32. This flag, similar to the
	    configurable 'dm.integ.tweaks', is kept undoc.

	#2602208 (Job #120541) **
	    'p4 unload' and 'p4 reload' operations can now be performed on
	    'readonly' type clients.

	#2601845 (Job #120592) **
	    The correct error message is displayed when trying to convert any
	    client type to 'readonly' client type.

	#2601555 (Job #120765) **
	    Disabled 'p4 unshelve -S' when the current stream is a sparse
	    stream, since unshelving non-resident files into a sparse stream can
	    lead to undesirable behavior.

	#2599439, #2599448, #2599449, #2600088 (Job #119766) **
	    Fixed a problem where switching to a sparse stream at a change
	    would sync parent files at the head revision rather than at the
	    sparse stream changeview change.

	#2599433, #2600195 (Job #120642) **
	    Fixed crash with stream command when server license has expired.

	#2599132 (Job #120602) **
	    There is a rare failure situation that was causing p4d to crash. P4d
	    now outputs an error instead in this case: "No <field> was found
	    for this operation."

	#2599010 (Job #120741) **
	    Integrating a deleted file into a file that is currently open for
	    branch will no longer report "all revisions integrated".

	#2597611 (Job #110263) **
	    This change fixes a performance problem in 'p4 obliterate' where it
	    was causing excessive time on edge-server to purge related db.label
	    records.

	#2597548 (Job #119772) **
	    Fixed a journal inconsistency issue on non-Windows platforms caused
	    by killing a running p4 command.

	#2597197 (Job #108319) **
	    Fixed a case in which old revisions of a file that had been deleted
	    and re-added multiple times were reported as candidates for
	    integration into a different re-added variant of the file.

	#2596797 (Job #93116) **
	    Fixed a case in which a cherry-picked ignore into a moved file
	    caused an earlier changelist to be reported by 'p4 interchanges'.

	#2595243, #2599428, #2600086 (Job #120533) **
	    Fix for "Invalid changelist number 0" when creating a sparse stream
	    just after an upgrade.

	#2595242 (Jobs #74403, #79365, #87038, #92184, #103277) **
	    Integration now includes ancestor branches of the source file when
	    computing the set of outstanding changes. In most cases this
	    distinction doesn't matter because the source file implicitly and
	    recursively inherits changes from ancestor branches, but including
	    the individual revisions of these files in the debit calculation
	    produces better results in complex cases involving backed out
	    changes (e.g. via 'p4 copy' and/or 'p4 undo').

	#2594041 (Job #87618) **
	    Ignored branch records resulting from a cherry-pick now only
	    grant credit for the cherry-picked revisions, rather than
	     implicitly including all prior revisions as is the case for a
	    normal branch record.  This fixes a problem in which an ignored
	    branch of a file that was copied from an old revision did not
	    grant any credit at all on subsequent integrations.

	#2594024 (Job #121240) **
	    The 'p4 lock' and 'p4 unlock' commands can now be cancelled by using
	    'p4 monitor terminate' or pressing Ctrl-C on the client.

	#2591718 (Job #114829) **
	    For 'p4 fstat' locking db.revcx for long period could block other
	    commands like 'p4 submit' to run simultaneously. This change fixes
	    the problem by altering db.revcx lock mode to PEEK mode, if
	    db.peeking is set to greater than 2.

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

Major new functionality in 2024.1 (2024.1/2596294) (2024/05/09)

	#2565297 (Job #101641, #108660) ** ***
	    Commit servers are now able to verify and fetch missing/corrupted
	    archives from replicas.
	    Running 'p4 verify -t' on commit will add any missing archives
	    to the journal to be replicated to downstream replicas.

	    A background thread is run during journal replay on the replica to
	    check if the file exists and that the digest matches; if it matches,
	    this will notify the upstream commit which will add the archive
	    to 'rdb.lbr' and launch a background pull thread which will end
	    once all the pending records are processed.

	    If the archive does not exist on the replica, then it will add its
	    own journal entry for any further downstream replica server.

	    New f_integrityEvent=12 added to structured logs; this is within the 
	    Integrity structured log category.

	    On the replica server, the `f_results` will be one of:
	    * unknown (commit) - if the depotFile/rev could not be found in
	                         either db.rev or db.revsh.
	    * open failed (replica) - if the archive could not be opened for any
	                              reason.
	    * mismatch (replica) - if the digest does not match.
	    * match (replica) - if the digest matches the digest of the archive
	                        requested by the commit.

	    On the commit server, the `f_results` will be one of:
	    * unknown (commit) - same reason as on the replica.
	    * match (commit) - the archive already exists and the digest matches
	                       meaning that it could have already been pulled
	                       from another replica.
	    * pending (commit) - if multiple replicas notify the commit of
	                         having the archive; only the first one will be
	                         added to rdb.lbr.
	    * fail (external address) - if no externalAddress is set on replica.
	    * fail (commit) - there was an error while adding to rdb.lbr.
	    * success (commit) - the archive was added to rdb.lbr.

	#2565074 (Job #116045) **
	    Introduces a new partitioned client type 'partitioned-jnl' to enable
	    the journaling, recovering, dumping, checkpointing and replicating
	    'partitioned have tables'.

	    Journaling the partition have table with the client type
	    'partitioned-jnl':

	    During journaling, the partitioned-jnl have table, 'db.have.pt',
	    is encoded with its respective client name. For example,
	    'db.have.pt%pclientname' in the journal file.

	    During the partitioned client deletion, the records are deleted from
	    the respective partitioned have table and then the table is dropped
	    for the partitioned client types 'readonly', 'partitioned' and
	    'partitioned-jnl'. The records deletion and the table drop events
	    are logged in the journal file for the partitioned-jnl client type.
	    For this table drop, a new journal note (31) is introduced. This
	    helps to recover the deleted partitioned-jnl have table later.

	    A new configurable 'db.partition.dropondelete' is introduced. When
	    this is set, the individual records are not deleted but the table
	    is deleted for the client types 'readonly', 'partitioned' and
	    'partitioned-jnl'. This deletion is followed by the respective
	    new journal note for the client type 'partitioned-jnl'.

	    During the creation of the partitioned have tables, if the
	    partitioned client names have spaces (' ') then these are replaced
	    with underscores ('_h).

	    Dumping the partitioned have table:

	    Enables the dumping of the partitioned have tables using 'p4d -jd'
	    command for the client types 'readonly', 'partitioned' and
	    'partitioned-jnl'. For dumping a single table, the partitioned have
	    table must be appended with the respective partitioned client
	    '%pClientName'. For example, 'p4d -jd - db.have.pt%pclient'.
	    Otherwise, it would result in an error.
	    When dumping all the tables, the partitioned have tables with the
	    client types 'partitioned' and 'readonly' are not dumped to ensure
	    that these are not recovered during the replay operation.
	    The parallel options for dumping partitioned have tables are
	    supported, 'p4d -jdp' and 'p4d -jdpm'.

	    Checkpointing the partitioned have table with the client type
	    'partitioned-jnl':

	    Enables checkpointing the partitioned-jnl have tables using the
	    commands 'p4 admin checkpoint' and 'p4d -jc'.
	    The parallel options for checkpointing partitioned-jnl have tables
	    are supported, 'p4d -jcp' and 'p4d -jcpm'.

	    Recovering the partitioned have table with the client type
	    'partitioned-jnl':

	    Enables replaying the partitioned-jnl have tables using the command
	    'p4d -jr'.

	    The overriding mechanism of the configurable 'client.readonly.dir'
	    during the journal replay is as follows:
	    If the configurable 'client.readonly.dir' is empty on the server on
	    which this replay is run, then, by default, this configurable will
	    be set with the value captured from the journal.
	    A new extended flag '-o' has been introduced for this operation
	    with the usage syntax as 'p4d -jro'.
	    If the configurable 'client.readonly.dir' is already set and there
	    is a new value in the journal then it will be overridden with this
	    new value if the journal restoration is run with '-jro' option.
	    Otherwise, the configurable is not overridden with the new value.

	    The overriding mechanism of the configurable 'client.readonly.dir'
	    during the checkpoint replay is as follows:
	    If 'p4d -jr' is run in a non-empty directory, the configurable
	    'client.readonly.dir' maintains the already existing value if one
	    exists.
	    If 'p4d -jr' is run in an empty directory, the configurable
	    'client.readonly.dir' is set.
	    If 'p4d -jrF' is run in a non-empty directory, the existing
	    'client.readonly.dir' configurable is overridden.
	    'p4d -jro' has no significance in the checkpoint replay. It is
	    applicable only for the journal replay.
	    The parallel option for the replay of partitioned-jnl have tables
	    is supported, 'p4d -jrp'.

	    The 'p4d -h' command outputs this new journal restoration option
	    '-jro'.

	    Enhancing the P4 client and server commands to process the
	    partitioned have tables:

	    The partitioned have tables are processed by the P4 client and
	    server commands. A few have been addressed here:

	    'p4 dbstat': The 'p4 dbstat' command processes the partitioned have
	    tables.

	    'p4 journaldbchecksums': The command 'p4 journaldbchecksums'
	    processes the partitioned have tables with the client type
	    'partitioned-jnl' and ignores the 'reaonly' and 'partitioned' client
	    types. The journal note checksums that are replicated, are processed
	    on the replica servers for the partitioned-jnl have tables integrity
	    check.
	    'p4 journaldbchecksums -t' and 'p4 journaldbchecksums -T' commands
	    with a specific partitioned have table results in a usage error.
	    'p4 journaldbchecksums -u' ignores the partitioned have tables.

	    'p4 unload' and 'p4 reload': The partitioned clients of type
	    'partitioned' and 'partitioned-jnl' can be unloaded and reloaded.
	    Especially during the unload operation, instead of deleting the
	    individual records from the respective db.have.pt table, the table
	    by itself is deleted. The table drop journal note is also added
	    in the journal for the client type 'partitioned-jnl'.

	    'p4 changes -m<maxChanges> @pclient': The command 'p4 changes
	    -m<maxChanges> @pclient' outputs the addressed maximum latest
	    submitted changes for the revisions of the files that are on the
	    specified partitioned client's have list.

	    'p4 dbverify' and 'p4d -xv': The partitioned have tables are
	    validated or verified using the 'p4d -xv' and 'p4 dbverify'
	    commands.
	    A new configurable, 'db.partition.verify', is introduced. By
	    default, this is set. If the partitioned clients do not exist, then
	    the partitioned have tables are not validated or verified.

	    'p4d -xx': Enables the table pair integrity check for the tables
	    'db.working' and 'db.have.pt'.
	    The table 'db.have.pt' represents all the available partitioned have
	    tables (db.have.pt%pclient).
	    In this operation, the presence of the related entries with respect
	    to the partitioned have clients from the db.working table is checked
	    in the respective db.have.pt tables. If not found, then the delete
	    instruction related to the entry in db.working is placed in the
	    jnl.fix file. The non-partitioned client entries from the db.working
	    table are ignored.

	    'p4d -xvU': The command 'p4d -xvU' performs the table-not-unlocked
	    database check for the partitioned have tables.

	    For the details, please read the server documentation.

	#2573125 (Job #119059) * **
	    Commits to files of type 'binary+F' now use a delta transfer
	    mechanism to only send the modified portion of file content from
	    the client to the server.  This is primarily an optimization for
	    low-bandwidth remote users, but also helps reduce server-side CPU
	    usage generally.

	    The new 'net.delta.transfer.minsize' configurable can be set to zero
	    on the server to disable delta transfers globally.  When set to zero
	    on the client, it disables it locally.  Other values on the client
	    represent the minimum file size that a delta transfer will be
	    performed on.

	    Limitations:
	      - Delta transfer of commits through an edge-server is
	        only available via background submits ('p4 submit -b').
	      - Proxy cache-on-submit does not cache delta transfer content.

	#2549738 (Job #117985) **
	    The Sparse Stream feature adds 2 new types of streams, sparsedev and
	    sparserel streams. A client of a sparse stream has view mappings for
	    both the parent and child stream depot paths, overlaid into a single
	    client path. The parent depot paths are fixed to a specific change
	    number; that change number is automatically updated during
	    integrations into the sparse child.
	    
	    When a sparse stream is first created, parent files within a share
	    path are not branched, and the sparse stream contains no depot
	    files. The first time a file within a sparse share path is opened
	    for edit, the file is immediately branched into the sparse stream.
	    
	    Sparse streams are truly sparse, since branching only occurs when a
	    file needs to be changed and the bulk of files that are visible in a
	    sparse stream reside solely in the parent's depot path.
	    
	    Sparse streams are intended to be used with a small number of
	    branched files. To that end, a configurable has been added to limit
	    the number branched files: dm.stream.sparse.branchmax (default 100k,
	    0 removes limit).
	    
	    Once the number of branched files reaches the branch max limit, a
	    sparse stream may be converted to a development or release stream
	    equivalent with the stream sub-command 'p4 stream convertsparse'.
	    
	    Sparse streams have a number of restrictions:
	        - No reparenting; sparse stream parents are fixed.
	        - No partial integrations: only full stream integrations are
	          allowed, and the only revision limit allowed is @<=change.
	        - Each stream must have at least one share path.
	        - No unshelving from a different stream.
	        - No undo.
	        - No editing of pin after any files are populated or added into
	          the sparse stream; the pin may be updated only through
	          integration.
	        - ParentViews are always 'inherit'.
	        - Sparse streams cannot be consumed as components of other
	          streams.
	        - Sparse streams cannot have non-virtual stream children.
	        - Sparse streams can have virtual stream children, but virtual
	          children of sparse streams cannot have children and cannot be
	          integration targets.
	        - Non-sparse streams cannot be converted to sparse streams.

Behavior Changes in 2024.1 (2024.1/2596294) (2024/05/09)

	#2525336 (Job #108001, #117238) **
	    When running 'p4 integrate', 'p4 copy', and 'p4 merge' within a
	    stream client to integrate changes from another stream into the
	    current stream, a stream view is now required, in order to prevent
	    users from accidentally circumventing integration policies defined
	    on a stream by using a manually generated branch view to perform
	    integrations.  Integrations that use manual views but that do not
	    appear to be an attempt to integrate from one stream to another
	    (e.g. where the source is a classic depot) are still permitted.
	    When a stream-to-stream manual integration is detected, an error
	    is now produced along with a suggested alternate command that will
	    use the stream view; in many cases the suggested command may
	    produce the same result that the original command would have.
	    Users and client applications wishing to avoid this error should
	    do one of the following:
	      1. Use a stream view as suggested by the error message.
	         This is the preferred solution since it is the only way to
	         prevent errors that may be caused by manually defined views.
	      2. Set the "api" protocol variable to 95 or lower.  For
	         compatibility purposes, this check is not performed for older
	         client applications, as determined by the "api" variable.
	         Note that client applications built with API libraries before
	         2024.1 will have a corresponding "api" value set by default.
	         Scripts that call the p4 CLI directly and wish to minimize
	         command output changes should always use "-Zapi=N" to set a
	         specific API compatibility version.
	      3. Use the "-F" flag (which is now accepted by "p4 integrate"
	         for this specific purpose) to override this check.

Minor new functionality in 2024.1 (2024.1/2596294) (2024/05/09)

	#2591319 (Job #118242) **
	    All depots types except "remote" can now be backed by S3.

	#2587740 (Job #120109) ** *** ****
	    The mimalloc memory allocator library has been upgraded to 2.1.2.

	#2584762 (Job #119816) **
	    New configurable 'dm.user.hideinvalid' can be set to 1 to hide
	    user specific errors when running 'p4 login' and 'p4 passwd' with
	    an invalid user.

	    With it enabled, 'p4 login' and 'p4 password' will follow the normal
	    authentication process even if the user does not exist and will
	    output an invalid password error or an authentication failure error
	    for ldap.

	    This does not affect 'p4 users' which can still reveal valid users,
	    see 'run.users.authorize' configurable for more information.

	#2584270 (Job #120133) **
	    All structured log events at version 58 now record the formatted
	    date (column 3: f_date) in ISO8601 format.
	    
	    The 'serverlog.version.N' configurable can be used to pin a
	    structured log file to a specific server version's format.
	    To retain the prior structured log events format, set the
	    'serverlog.version.N' configurable to 57.

	#2580017 (Job #105450) **
	    This change helps customers with a reminder when they need to do
	    journal rotations. At login if the last journal rotation is older
	    than a set threshold days a warning will be displayed for admins
	    and users of type operator.
	    The threshold is set through a configurable:
	        db.journalrotate.warnthresh.
	    By default this threshold is unset ( it is 0 )  which means no
	    warning will be displayed. Its maximum is 365 days.

	#2566505 (Job #110500) **
	    This change introduces a new option, -Fd, for 'p4 client' that when
	    used along with the -fd option it will delete the client together
	    with all its shelved files.

	#2564827 (Job #119620) **
	    'p4 labelsync' and 'p4 tag' now apply the label to all file
	    arguments sequentially, such that if multiple arguments reference
	    the same depot file at different revisions, the last argument to
	    reference a given file is used to determine which revision is
	    stored in the label.

	#2558783 (Job #119168) **
	    With this change it is now possible to reset password with
	    'p4 resetpassword' when auth.sso.allow.passwd is set to 1 and user
	    has AuthMode set to 'perforce'. Previously this was failing with
	    error "Cannot reset password with external authentication".

	#2554775 (Job #117979, #118152) **
	    'p4 configure help' now includes '...Option0' to '...Option[N-1]'
	    fields for accepted/possible values for string type configurables. 

	#2552035 (Job #119111) **
	    When resolving a filename change with a different depot file
	    synced to the workspace location that the open file needs to move
	    to, the existing file is now automatically unsynced in order to
	    allow the move to proceed. Note that if the resolved file is then
	    reverted, the original file is not automatically resynced.

	#2551155 (Job #077851) **
	    The 'p4 client', 'p4 branch', and 'p4 label' specs now support
	    comments in the 'View' section by using ##. You can append a ##
	    comment to a valid line in the 'View' section. You also can make an
	    entire line be a comment by putting ## at the beginning of the line.

	#2546660 (Job #118151) **
	    'p4 configure show' now includes the last modified DateTime for a
	    given configurable.

	#2543652 (Job #077851) **
	    The 'p4 typemap' spec now supports comments in the 'Typemap' section
	    by using ##. You can append a ## comment to a valid typemap line.
	    You can also make an entire line be a comment by putting ## at the
	    beginning of the line.

	#2539120 (Job #118569) **
	    Improved the performance of branching a file when the workspace
	    already has the source file revision.

	#2538502 (Job #118546) **
	    Improved the performance of 'p4 renameuser'.

	#2533131 (Job #117980) **
	    Added a configurable to force a mandatory comment when setting a
	    configurable. Set 'dm.configure.comment.mandatory=1' to enable which
	    will cause 'p4 configure set' to fail if no comment is provided.
	    See 'p4 help configure' for more information on setting comments.

	#2528847 (Job #117798) **
	    Removed default values from 'p4 help configurables'; use 
	    'p4 configure help' instead.

	#2527758 (Job #117507) **
	    The previous comment is now outputted when overwriting configurable
	    history with 'p4 configure history'.

	#2525181 (Job #118186) **
	    The ComputeEnd structured log event (1.58) now includes:
	      * the command lapse time (f_lapse)
	      * peak memory for the command so far (f_peakMemCommand)
	      * peak memory for the process so far (f_peakMemProcess)
	      * the command paused time (f_paused)
	    These fields are appended from column 16 (after the command group
	    field).
	    
	    The 'serverlog.version.N' configurable can be used to pin a
	    structured log file to a specific server version's format.
	    To retain the prior structured log events format, set the
	    'serverlog.version.N' configurable to 57.

	#2525176 (Job #99193, #118292) *
	    P4 can now create symlinks on Windows 10 and above, when developer
	    mode is enabled, without needing to run in administrator mode.

	#2524637 (Job #108006) **
	    This change introduces a new -a flag for 'p4 depots' command.
	    With -a flag hidden depots will be included in the output. This is
	    specially useful when user needs to check map paths for all depots.

Bugs fixed in 2024.1 Patch 8 (2024.1/2876055) (2026/01/09)

	#2874696 (Job #121299) **
	    Fixed server crash where altsync agent response did not include the
	    program version.

	#2871597 (Job #112113) **
	    Shelves belonging to clients that no longer exist are now treated as
	    if they are owned by the commit server. If deleting a client from an
	    edge server, shelves are now promoted as part of that client delete.

	#2870854 (Job #129416) **
	    Replication of filtered out records no longer cause replicas to wait
	    for those transactions to complete.

	#2869937 (Job #105807) **
	    The edge server log no longer shows the "Operation 'dmr-Sequence'
	    failed" error when an edge-submit fails after a shelved change is
	    created.

	#2868719 (Job #128028) **
	    If an edge server cannot rename the archive of a shelved file during
	    promote, it now returns a clear error rather than enter a loop.

	#2864314 (Job #129290) ** *** ****
	    Self-signed certificates created with the `-Gc` option on p4d, p4p or
	    p4broker are now signed with a SHA256 hash.

	#2863275 (Job #125149) **
	    Integrations into sparse streams now take much less time.

	#2861696 (Job #127351) **
	    The copy, merge, and integration commands for sparse stream targets
	    do an autosync at the end of the command.  This behavior can now be
	    disabled with the virtual integration flag '-v', which prevents
	    branched and deleted files from affecting the workspace.

	#2861599 (Job #127882) **
	    Permission errors no longer occur when a delta transfer map file was
	    deleted and later simultaneous syncs were issued for the
	    corresponding file revision.

	#2860971 (Job #128946) * **
	    cURL (for extensions) has been upgraded 8.16.0.

	#2860352 (Job #128688) **
	    The command 'p4 undo' now works with the partitioned and
	    partitioned-jnl client types.

	#2859680 (Job #122815) **
	    The formatted ISO8601 date in the structured logs is now correctly
	    converted to UTC.

	#2858864 (Job #118452) **
	    Forwarding replicas of edge servers now correctly handle shelves
	    that are not managed by the first upstream edge server.

	#2858858 (Job #126852) **
	    TinyXML2 has been upgraded to 11.0.0.

	#2856598 (Job #128588) **
	    The p4d commands 'p4d -xv', 'p4d -xvU', 'p4d -xr', 'p4d -xrU' and
	    'p4 dbverify' have been updated to improve handling of partitioned
	    have tables.
	    When processing all tables (no arguments), these commands no longer
	    process the per-client tables for readonly or partitioned type
	    clients. The per-client tables for partitioned-jnl type clients
	    will be processed only if the 'db.partition.verify' configurable is
	    set to '1'.
	    When partitioned tables are explicitly specified (for example:
	    'p4d -xv db.have.pt' or 'p4d -xr db.have.pt%pclient'), all
	    per-client tables will be processed regardless of client type.
	    These commands no longer create empty tables if a per-client table
	    does not exist.

	#2855481 (Job #126106) **
	    Fixed binary+l file mistakenly registered as an orphaned locked
	    file after a copy from a sparse stream, where the file was not
	    resident in the sparse stream.

	#2854335 (Job #128849) **
	    The commands 'p4 journaldbchecksums -u', 'p4 journaldbchecksums -s'
	    , 'p4 dbstat', 'p4 dbpack' and 'p4d -jc' no longer try to access
	    partitioned tables that are not expected to be present on the
	    server.

	#2854333 (Job #124125) **
	    p4d -xv will now skip the partitioned client database tables that
	    are not on the server instead of reporting the 'table not known'
	    error.

	#2853722 (Job #122971) **
	    Improved messaging when opening a file. Instead of: "<depotFile> -
	    can't add exclusive file already opened", the message includes the
	    action the other client did that locked the file. For example,
	    "<depotFile> - can't add exclusive file already opened for add".

	#2847976 (Job #125371) **
	    'p4 istat' no longer takes read locks when 'db.peeking' is set to
	    1 or greater.

	#2844203 (Job #128842) **
	    'p4 describe -a -S' now correctly shows the diff for files open for
	    add in the shelf.

	#2839337 (Job #128816) **
	    This change fixes a bug in 'p4d -jj' where in a certain scenario it
	    would let other tasks write lines into a just rotated journal-file for
	    partitioned tables after the journal closing line for db.counters.

	#2839336 (Job #127084) **
	    This change improves performance of 'p4 shelve' for a change on keyed
	    files that has an action of branch or integ.

Bugs fixed in 2024.1 Patch 7  (2024.1/2834709) (2025/10/06)

	#2844203 (Job #128842) **
	    'p4 describe -a -S' now correctly shows the diff for files open for
	    add in the shelf.

	    Replication will no longer halt in the case where a partition have
	    delete journal note (31) and a change or block checksum
	    note (15 or 17) are encapsulated by a longer running transaction.

	#2831043 (Job #124576) **
	    Recovering an incompatible checkpoint will no longer report an
	    incorrect line number in the error message.

	#2829156 (Job #125669) **
	    Reloading a partitioned client on an edge server with
	    'server.global.client.views=1' set will now correctly restore
	    the client's have records.

	#2829156 (Job #128002) **
	    Reloading a stream client on an edge server with
	    'server.global.client.views=1' set will no longer send the
	    generated 'View' or 'ChangeView' to the commit server.

	#2829156 (Job #128003) **
	    Reloading a client with a 'ChangeView' on an edge server with
	    'server.global.client.views=1' set will now correctly send both
	    the 'View' and 'ChangeView' to the commit server.

	#2828659 (Job #127310) **
	    Prevent edge servers from trying to delete db.have.pt records for
	    clients not associated with the edge server and from propagating
	    them to downstream servers.

	#2812744 (Job #126602) **
	    If replication is stalled or it is slow, it is possible that edge
	    send a change-update up to its target server based on an outdated
	    record, and cause data inconsistency. This change prevents such
	    change-update and fails it with a message that says:
	    "Operation failed on remote server because of data inconsistency,
	    possibly due to stalled or slow replication".

	#2808257 (Job #127760) **
	    Fixed 'invalid out-of-bounds conversion of DmtStreamPathType' error.

Bugs fixed in 2024.1 Patch 6 (2024.1/2805613) (2025/07/24)

	#2801981 (Job ##126938) **
	    'p4 login' will now return a different error id when
	    'dm.user.setinitialpasswd' is disabled and the user has no password set.

	#2793724 (Job #127398) **
	    The stream spec permission checking is no longer applied to submits
	    to streams that do not include a change to the stream spec.

	#2793060 (Job #125649) **
	    For operations like 'p4d -c <command>' that lock all tables, they
	    now wait for concurrent jobs that access the same tables to finish
	    before proceeding.

	#2792562 (Job #123929) **
	    Fixed istat crash due to inconsistencies in stream spec data
	    originating from pre-19.1 servers. Run 'p4d -xf 123929' to fix
	    inconsistent data.

	#2790587 (Job #125471) **
	    Fixed an intermittent 'no write lock' error with journal replay
	    into an offline db when the location of the client.readonly.dir
	    is shared between the p4d server and the offline db.

	#2788867 (Job #127308) **
	    The modtime of binary files with either the +m modifier or with the
	    modtime option enabled in the client are now correctly passed to
	    altsync agents.

	#2786371 (Job #123091) **
	    On a case insensitive server with server.depot.root set, files
	    containing an upper cased character fails to be uploaded to an
	    S3 bucket. This has been fixed.

	#2781918 (Job #125639) **
	    The journal note type 31 now deletes the respective partitioned-jnl
	    table during the journal replay operation.

	#2778790 (Job #126534) **
	    When doing parallel recovery using multifile checkpoint and the source
	    includes partitioned client, if the partitioned client-name end in an
	    underscore followed by eight digits, valid for a multifile checkpoint
	    file sequence number, recovery could fail with an error like 
	    "..._00000001.ckp.gz: No such file or directory". 
	    This change fixes the problem.

	#2777465 (Job #121673) **
	    Uploads to S3 that generate a response code error between 500 and 599
	    are now retried up to lbr.s3.uploadretries number of times. The default
	    of lbr.s3.uploadretries is 5.

	#2773267 (Job #125223) **
	    We were mistakenly checking the permissions to stream spec when doing
	    submit to a classic depot. We have now stopped checking stream permissions
	    when submitting for a classic depot.

	#2770955 (Job #126773) **
	    The sync operation no longer causes the database open error to occur on
	    the db.sendq.pt database table.

	#2763751 (Job #122377) **
	    'p4 submit' on edge could fail when a changelist had a lot of files with
	    long paths due to edge running out of rpc buffer.This change fixes the 
	    problem by sending lock requests in batches. The number of files in each
	    batch is controlled by the setting in the configurable 
	    dm.locks.global.batch.net (default is 10,000).

	#2743835 (Job #125478) **
	    The @ex@ entry in the journal for the partitioned-jnl have table is
	    now generated after the bunch of @dv@ entries during the respective
	    client deletion operation when the configurable
	    db.partition.dropondelete is unset.

	#2738227 (Job #125218) **
	    Fixed delta transfer server failure with error message about moving a
	    file pointer before the beginning of a file.

	#2738209 (Job #125287) **
	    The partitioned-jnl, partitioned and readonly client types can now
	    be converted into writeable client type.

	#2737618 (Job #124867) **
	    The writeable client type can now be converted into partitioned,
	    partitioned-jnl or readonly client type. If there are the opened
	    files, then the conversion to readonly client type results in an
	    error.

	#2736503 (Job #124603) **
	    A checkpoint created using '-jc' with more than a single thread
	    enabled that contains partitioned clients could place the db.config
	    table entries after those for the partitioned clients, making it
	    unrecoverable. This has been fixed.

	#2736167 (Job #124604) **
	    When recovering a checkpoint containing partitioned clients that
	    mismatches the case of the server, a parallel recovery would report
	    an extra spurious error about a missing configurable. This has been fixed.

	#2736163 (Job #124578) **
	    Parallel checkpoints were incorrectly taking a read lock on the
	    db.monitor table and not releasing it until the checkpoint had
	    completed. This has been fixed.

	#2732678 (Job #124938, #125151) **
	    The command 'p4 have' with a partitioned client on a non edge
	    replica server now gets forwarded to the upstream server.

	#2732644 (Job #124865) **
	    The correct error message is now displayed during the conversion of
	    partitioned or partitioned-jnl clients with opened files to a
	    readonly client.

	#2732611 (Job #124748) **
	    The conversion between the partitioned-jnl and the readonly or
	    partitioned client types now updates partitioned have tables on the
	    replica servers appropriately.

Bugs fixed in 2024.1 Patch 5 (2024.1/2724746) (2025/02/24)

	#2722771 (Job #120859) **
	    Fix excessive scanning of db.revsh by 'p4 verify -S' on a shelf
	    containing many files marked for delete.

	#2720916 (Job #124712) **
	    In rare cases the setup to run p4diag automatically can fail on
	    Windows Server 2022 Enterprise without a desktop installed.  This
	    has been corrected.

	#2719308 (Job #121960) **
	    'p4 switch' performed a sync to #have which could remove all
	    unmodified files from a user's workspace if the user had previously
	    switched streams using the '--no-sync' option. The sync to #have
	    was added to switch in 2024.1 to address an issue found related to
	    pruned files. This fix removes that sync to #have from the
	    'p4 switch' logic in favor of updating how 'p4 switch' uses
	    reconcile to avoid the issue with pruned files.

	#2717518 (Job #124613) **
	    Setting 'auth.ldap.ssllevel=2' on a Windows server will no longer
	    allow connections to LDAP servers with self-signed certificates
	    unless that certificate is installed into the CA store or is
	    specified with 'auth.ldap.cafile'.

	#2717514 (Job #123694) **
	    Edge servers will no longer reject submit commands if a depot not
	    involved in the submit has less free space than the
	    'filesys.depot.min' threshold.

	#2716110 (Job #122189) * ** *** ****
	    When using either the tcp64 or ssl64 protocols (IPv6 or IPv4), IPv4
	    addresses are now always formatted as IPv4 addresses rather than
	    mapped IPv6 addresses.

	#2715357 (Job #122574) **
	    The command 'p4 -creadonlyclient client -d writeableclient' with the
	    partitioned type now successfully deletes the client.

	#2714514 (Job #121788) **
	    'p4 verify -v -U' was not fixing bad digest or size in unload depot.
	    This change fixes the problem.

	#2713833 (Job #124534) **
	    Serverlocks on Windows servers are no longer deleted in such a way
	    that on rare occasions synchronous operations could occur in
	    parallel.

	#2711115 (Job #124145) **
	    Fixed conflict between writable components and Ignored paths.

	#2709877 (Job #122963) **
	    On an edge server with configurables submit.allowbgtransfer=1 and
	    submit.autobgtransfer=1 set, when a file edit is submitted without
	    change, the option '-f submitunchanged' of submit would fail to
	    override 'revertunchanged' from client spec and it would result
	    submit failing with: "No files to submit". This change fixes the
	    problem.

	#2707696 (Jobs #124317, #124320) * **
	    P4ALTSYNC agents are now provided with a 'time' field containing
	    the modtime to set on add/added files of type +m or when the
	    modtime client option is enabled.

	#2705555 (Jobs #121658, #124070) **
	    Checkpoint files created with the parallel and multifile options
	    now use a '#' character to mark the start of the batch number encoded
	    within the filename. Previously the server would use a '_' character
	    that could clash with a client name for a partitioned client.

	#2704866 (Job #124281) **
	    'p4d -jd' no longer creates empty directories for partitioned
	    clients.

	#2704303 (Job #124006) **
	    Changed the k-value for configurable 'net.delta.transfer.minsize'
	    from 1 to 1024.

	#2702392 (Job #123919) **
	    With AltSync client on Windows concurrent multiple 'p4 sync' could
	    fail with "All pipe instances are busy". Problem is now fixed.

	#2699567 (Job #123856) **
	    The 'svrRecType' topology field is no longer unset during replica
	    restart when an upstream server is older than 2022.2.

Bugs fixed in 2024.1 Patch 4 (2024.1/2697766) (2024/12/18)

	#2696848 (Job #120059) **
	    There is a race condition between directory removal and archive
	    creation on an edge during a 'p4 submit -e' for binary file types.
	    This has been fixed.

	#2696247 (Job #123050) **
	    For 'p4 changes -m <max> -e <change>' it would excessively scan
	    records from db.change. This change fixes the problem.

	#2694784 (Job #123904) **
	    Deletion of a partitioned database table now deletes only the
	    numbered partitioned directory.

	#2694764 (Job #123912) **
	    A partitioned database table path could be incorrectly parsed. This
	    has been fixed.

	#2694103 (Job #123774) ***
	    Reuse of a ClientApi object across connections that involve a proxy
	    no longer causes "Unknown command" errors after client statistics
	    should have been reported to the server.

	#2692688 (Job #123797) **
	    Delta commit against a file with missing server-side content for the
	    prior revision, or against a deleted prior revision could fail with
	    "zero length chunk map" error.

	#2687982 (Job #123487) **
	    `p4 verify -t` can now be run on unicode enabled servers.

	#2687280 (Job #123022, #122088, #119098) **
	    The sync operation no longer causes the database open error to
	    occur on the db.sendq.pt database table. The empty partitioned
	    have directories are no longer created.

	#2687075 (Job #119735) **
	    On Windows, network share access permissions for RCS depot archives
	    can cause a crash.  This has been resolved.

	#2686825 (Job #122569) * **
	    cURL has been upgraded 8.10.1

	#2683844 (Job #123438) **
	    Prevent crash on journal replay with an update, then delete, of a
	    db.config record with a specific serverID within the same journal.

	#2683255 (Job #123521) **
	    Clients of 'readonly' type now work correctly as revision
	    specifiers.

	#2682371 (Job #123443) **
	    Commands run through a broker and then forwarded to another server
	    will no longer cause hangs for successive commands run on the same
	    connection after a client could have reported client stats.

	#2681835 (Job #122411, #123082)
	    In rare cases an unshelve performed by Swarm can cause a crash.
	    This has been corrected.

	#2680579 (Job #121121) **
	    Corrected an unexpected 'Files are missing as a result of one or
	    more move operations' error in the fetch, push, and zip commands.

	#2680297 (Job #123346) **
	    A 'p4 sync' on an edge server with lbr.replication=cache could
	    cause server to hang. This change fixes the problem.

	#2679316 (Job #123034) **
	    Setting a trigger command to an empty string will now result in an
	    error on execution rather than allow the undefined behavior. 

	#2676564 (Job #123250) **
	    Security fix. Addressed CVE-2024-10314, CVE-2024-10344 and
	    CVE-2024-10345

	#2676557 (Job #122687) **
	    Commands that specify multiple arguments using different partitioned
	    clients as the revision specifiers will now return the correct
	    results for each argument.

	#2676161 (Job #123359) **
	    The commands 'p4d -K db.have.pt' and 'p4d -k db.have.pt' now
	    exclude and include all the available partitioned have tables.

	#2675020 (Job #120977) **
	    Fixed a problem where a user with openstreamspec permission could
	    open a stream spec but not edit the stream spec. Also fixed a
	    problem where a user with writestreamspec permission could not edit
	    and save a new stream spec.

	#2667309 (Job #123015) **
	    Fixed locking order bug when obliterating a stream and the
	    configurable index.domain.owner is 1.

	#2666217 (Job #122929) **
	    Revert 'track' configurable default value back to '-1'.

	#2662757 (Job #113058) **
	    Fixed stream spec obliterate problem where a super or admin user
	    could not obliterate the stream spec if configurable
	    'dm.protects.streamspec' was set to 1.


Bugs fixed in 2024.1 Patch 3 (2024.1/2661979) (2024/10/04)

	#2661232 (Job #122784) **
	    Corrected crash when authentication fails during istat operation.

	#2661134 (Job #117647) **
	    A crash in 'p4 transmit -r' has been corrected.

	#2659944 (Job #122639) **
	    Unlimited group Timeout setting fixed.

Bugs fixed in 2024.1 Patch 2 (2024.1/2655224) (2024/09/18)

	#2654300 (Job #122472) **
	    A rare infinite loop caused by an over-optimisation when scanning
	    the rev table has been fixed.

	#2651891 (Job #122076) **
	    The command-line client on Windows now prints an error when it
	    detects ambiguous argument encoding.

	#2651627 (Job #121134) **
	    Fixed istat crash with noinherit ParentView when db.bodtextcx rows
	    are missing.

	#2649935 (Job #121666) **
	    Using S3 for archive files can raise 'file not found' errors
	    when the files are accessed concurrently by multiple clients.
	    This has been fixed.

	#2648900 (Job #122240) **
	    When the configurable 'client.sendq.dir' is set, the partitioned
	    have table is now unlocked and removed during the deletion of the
	    respective partitioned client.

	#2648897 (Job #117955) * **
	    The zlib deflate operation uses x64 instructions not supported on 
	    older CPUs raising an illegal instruction exception. This has been
	    fixed.

	#2644014 (Job #121944) * **
	    Added net.delta.transfer.minsize and net.delta.transfer.threshold
	    to 'p4 help configurables'. These configurables allow the Helix
	    Core Server and individual clients to enable and disable delta
	    transfer for binary files based on the file size and amount of
	    change between current and prior revisions.

	#2643135 (Job #121830) **
	    A recovery operating can fail when the checkpoint file contains
	    multiple partitioned clients. This has been fixed.

	#2641044 (Job #122043) **
	    The commands 'p4d -k -jd' and 'p4d -K -jd' now successfully filter
	    the partitioned have tables as expected.

	#2640008 (Job #120982) **
	    Fixed 'rmt-fileExistsReplica' not exiting properly on commit-server
	    if the calling replica is missing the ExternalAddress field in its
	    server spec.

	#2639260 (Job #122045) **
	    Linux Arm64 (aarch64) build was recompiled with GCC 8 to resolve
	    a backward compatibility issue.

	#2638504 (Job #120640) **
	    Using an edge client to populate a stream failed with the error,
	    "file(s) not in client view", when stream components were disabled.

	#2638401 (Job #119346) **
	    In case of a commitServer-Edge-ForwardingReplica chain, there was a
	    problem where on ForwardingReplica a 'p4 submit' after Integ/Resolve
	    could fail because archive files were missing on the Edge server.
	    This change fixes the problem by pulling the missing archive-files
	    for the Edge server when needed, allowing 'p4 submit' to succeed.

	#2635787 (Job #121863) **
	    Fixed a problem where a command following a stream obliteration
	    might give an error the obliterated stream was unknown. The problem
	    only occurred with P4API clients.

	#2634780 (Job #120711) **
	   The auto pull operation now updates the 'lastSeenDate' field of the
	   respective 'connect' type topology record across the servers.

	#2634274 (Job #121790) **
	    If a virus scanner locks a portion of an RCS temp file during
	    a pull operation, a crash may occur.  This has been corrected.

	#2633881 (Job #114829) **
	    For 'p4 fstat' locking db.revcx for long period could block other
	    commands like 'p4 submit' to run simultaneously. This change fixes
	    the problem by altering db.revcx lock mode to PEEK mode, if
	    db.peeking is set to greater than 2.

	#2633324 (Job #115232) **
	    This change introduces a new flag, -E, for p4 copy. The -E flag
	    overrides the current setting for the 'dm.integ.tweaks'
	    configurable and its effect is the same as having
	    'dm.integ.tweaks' set to 32. This flag, similar to the
	    configurable 'dm.integ.tweaks', is kept undoc.

	#2633218 (Job# 118689) 
	    The p4dctl package will configure a systemd service on hosts running
	    systemd in order to start and stop the p4dctl-managed server instances.
	    Use the systemctl command to manage the service named "helix-p4dctl".

	#2629813 (Job #119795) **
	    For p4 fetch', if '-I' flag is used the command could fail
	    unexpectedly with a 'Cannot import' error. This change fixes the
	    problem.

	#2629303 (Job #121575) **
	    The DateTime server type is now defined as a 64 bit signed integer
	    rather than the system defined time_t. This help interoperability
	    with 32bit clients.

	#2628645 (Job #121621) **
	    Setting a very low value of db.checkpoint.reqlevel can allow a
	    multifile parallel checkpoint or dump to skip small db.files.
	    This has been fixed.

	#2627572 (Job #119476, #119575) **
	    The command 'p4 journaldbchecksums -u unloadfile -t dbtable' now
	    unload the files successfully for the partitioned-jnl have tables.

	#2627617 (Job #120925) **
	    Fixed a sparse stream integration problem where an integrate to the
	    sparse stream from the parent was required after an integrate from
	    the sparse stream to parent, even if no changes had occurred in the
	    parent after the first integration.

	#2626263 (Job #121119) ** ***
	    Fix for client 'clobber' option being dropped when syncing
	    through a proxy.

Bugs fixed in 2024.1 Patch 1 (2024.1/2625008) (2024/07/15)

	#2621152 (Job #119512) **
	    'p4d -xx' command can now be used to check the integrity between the
	    tables 'db.working' and 'db.have.pt%pclient', where the later
	    represents a specific partitioned have table.

	#2619520 (Job #119772) **
	    Fixed a journal inconsistency issue on non-Windows platforms caused
	    by killing a running p4 command.

	#2619517 (Job #121240) **
	    The 'p4 lock' and 'p4 unlock' commands can now be cancelled by using
	    'p4 monitor terminate' or pressing Ctrl-C on the client.

	#2619224 (Job #121237) * **
	    A new client side configurable 'net.delta.transfer.threshold' has
	    been added to specify the maximum percentage of file size to perform
	    a delta transfer before reverting to streaming the complete file for
	    'p4 submit' of binary+F files. A value of 0 disables the delta transfer.
	    
	    On a low-bandwidth remote client, a small reduction in file transfer
	    would provide performance gain therefore a higher threshold for the
	    delta transfer would be beneficial; whereas on a client with faster
	    network, a low or zero threshold would avoid the overhead incurred by
	    the delta transfer.

	#2617863 (Job #121296, #121297) **
	    Fixed a crash in 'p4 fstat -Sr -Or /outside/of/workspace/file'.

	#2617328 (Job #120791) **
	    Fixed stream obliterate endless loop problem.

	#2617321 (Job #87618) **
	    Ignored branch records resulting from
	    a cherry-pick now only grant credit for the cherry-picked
	    revisions, rather than implicitly including all prior
	    revisions as is the case for a normal branch record.  This
	    fixes a problem in which an ignored branch of a file that
	    was copied from an old revision did not grant any credit
	    at all on subsequent integrations.

	#2617061 (Job #121091) **

	    Fixed reversion of an open stream spec when using the command
	    'p4 revert -a -Si filelist...'.

	#2615784 (Job #119311, #119719 ) **
	    The commands 'p4 attribute' and 'p4 fstat -Oa' could fail with
	    'Rpc buffer too big' errors if an attribute value size was
	    too large (greater than 250MB). Now the command 'p4 attribute
	    -I' which reads the attribute value from a file may be used for
	    attribute values that would generate that error. In addition,
	    the 'p4 print -T' command may now be used to print an attribute
	    value that would generate that error from the 'p4 fstat -Oa'
	    command.

	#2615605 (Job #121279) **
	    Improved 'p4 submit' performance with delta transfers by removing
	    extraneous resource locking on the p4d server.

	#2612813 (Job #121079) **
	    Fixed reversion of an open stream spec when using the command
	    'p4 revert -n -Si filelist...'.

	#2611770 (Job #121151) **
	    'p4 integ' now correctly integrates the files related to the
	     partitioned-jnl type clients.

	#2611612 (Job #121150) **
	    'p4 unshelve' now correctly unshelves the files in the
	     partitioned-jnl client workspaces.

	#2611471 (Job #121143) **
	    'p4 reconcile' now correctly handles the partitioned-jnl client
	    workspaces.

	#2609726 (Job #121059) **
	    Parallel sync now works correctly from a partitioned client when
	    'client.sendq.dir' is also set.

	#2607924 (Job #120522) **
	    To ensure the consistency among the servers, the 'partitioned-jnl'
	    type client cannot be set or created until all upstream servers
	    have been upgraded to at least 2024.1 server version.

	#2607673 (Job #110263) **
	    This change fixes a performance problem in 'p4 obliterate' where it
	    was causing excessive time on edge-server to purge related db.label
	    records.

	#2607484 (Job #120840) **
	    If a Helix Core Server is configured with no logging, a crash may
	    occur. This has been corrected.

	#2606485 (Job #120824) **
	    Fixed an error message when unshelving a sparse stream spec which
	    has a lower parent stream changeview than the current stream spec.
	    The previous error message did not make sense in an unshelving
	    context.

	#2604549 (Job #120774) **
	    The partition client have tables now encode the invalid filesystem
	    characters.

	#2604055 (Job #120765) **
	    Disabled 'p4 unshelve -S' when the current stream is a sparse
	    stream, since unshelving non-resident files into a sparse stream can
	    lead to undesirable behavior.  

	#2602241 (Job #120541) **
	    'p4 unload' and 'p4 reload' operations can now be performed on
	    'readonly' type clients.

	#2601945 (Job #120592) **
	    The correct error message is displayed when trying to convert any
	    client type to 'readonly' client type.

	#2599439 (Job #119766) **
	    Fixed a problem where switching to a sparse stream at a change
	    would sync parent files at the head revision rather than at the 
	    sparse stream changeview change.

	#2599433 (Job #120642) **
	    Fixed crash with stream command when server license has expired.

	#2599428 (Job #120533) **
	    Fix for "Invalid changelist number 0" when creating a sparse stream
	    just after an upgrade.

	#2598134 (Job #119825) **
	    'p4 integrate' now treats pending 'copy' records from the source
	    file as direct credit when determining the initial debit.

Bugs fixed in 2024.1 (2024.1/2596294) (2024/05/09)

	#2587967 (Job #119856) ** 
	    Made error messaging more consistent for integration commands with
	    StreamAtChange clients.

	#2593175 (Job #119797) **
	    S3 uploads over 4GB now use multipart uploads to overcome the 5GB
	    limit on a single upload.

	#2591978 (Job #120194) **
	    Changed error message when unshelving a stream spec in a
	    StreamAtChange client to say that the spec cannot be
	    unshelved in a StreamAtChange client.

	#2591970 (Job #120563) **
	    'p4 submit -e' run against a 'lbr.replication=shared' edge server
	    no fails to calculate checksums/filesizes for files of type +k that
	    where previously deduplicated on the shelf.
	    
	#2591970 (Job #120536) **
	    The paths used for files within an S3 bucket are now relative to the
	    depot path and are no longer affected by absolute depot mappings nor
	    'server.depot.root'.

	#2590936 (Job #120474) **
	    Replication of a journal rotation event from an upstream server
	    using journalcopy can no longer enter a loop.

	#2589959 (Job #120343) **
	    S3 now correctly handles files with tildes (~) in their paths.

	#2588539 (Job #110981) **
	    With 'p4 sync -L' when fileSpec arguments include #0 revision,
	    the command could miss syncing some of the files.
	    This change fixes the problem.

	#2585389 (Job #120187, #120193) **
	    Changed error message when opening a stream spec in a
	    StreamAtChange client to say that the spec cannot be
	    opened in a StreamAtChange client.

	#2580908 (Job #120021) **
	    Fixed 'p4 add ...' when it is run in a workspace whose client map
	    does not contain a wildcard mapping (%, *, or ...) against multiple
	    new files. Previously, the command only opened one file to be
	    added.

	#2587752 (Job #115877) **
	    On an edge-server 'p4 submit' following a 'p4 integ -v' could fail
	    with "No such file or directory". This change fixes the problem.

	#2587687 (Job #111184) **
	    This change fixes a problem in 'p4 submit' on edge-server where
	    after reshelving a delete revision 'p4 submit' could fail with:
	    "Can't map  to archive!".

	#2587164 (Job #118519, #118583, #118622) **
	    Fix configurable validation routine where large integer values are
	    possible, including 'auth.ldap.timeout' and 'auth.ldap.pagesize',
	    and clarify some default configurable settings.

	#2579882 (Job #119854) ** ***
	    Client stats are no longer collected when a proxy server prior to
	    this patch is used, preventing a potential hang when multiple
	    commands are run on the same connection.

	#2578431 (Job #119853) **
	    Fixed a performance degradation introduced in the 2023.1 release
	    in the 'p4 fstat' command with a large client map. The command
	    performance has been restored to the previous release levels.

	#2576718 (Job #119914) **
	    'p4 dbpack' now reorders the database index pages for the
	    partitioned have tables as well.

	#2573910 (Job #119810) **
	    The error message, "db.group locked after db.stream", no longer
	    appears when submitting a stream spec on an edge server and
	    then issuing a stream command. Previously, this error could
	    occur in P4V or any client that uses a shared connection.

	#2573319 (Job #118904) **
	    A new -Om option was added to the 'p4 fstat' command to output
	    ditto mapped files when the client file syntax is used.

	#2572153 (Job #119521) **
	    If 'p4 switch' cannot fully reconcile all files in the user's
	    workspace the switch will now fail with an appropriate error.

	#2568009 (Job #119493) **
	    Fixed stream view generation at a specific change causing an 
	    endless loop during upgrade, where the loop occurs for the stream's
	    ancestors and the stream itself is not in the loop.

	#2566644 (Job #119638) **
	    Ensure all interfaces are listed in tagged output for
	    'p4 license -L'.

	#2563515 (Job #119203) **
	    A non-parallel checkpoint request using more than one thread
	    did not ensure that the CHECKPOINT_HEADER note appeared as the
	    first line in the output file. Also the same checkpoint on
	    a Windows platform did not use the correct line ending. This
	    has been fixed.

	#2563050 (Job #119453) **
	    Fixed "db.streamview locked after db.domain" error when submitting
	    an opened stream spec.

	#2561836 (Job #118023) **
	    Attempting to unsubmit a change that affected a stream specification
	    is now blocked. Unsubmit has never supported undoing changes to
	    stream specifications and would previously unsubmit the files in a
	    change while leaving the stream specification still submitted.

	#2561877 (Job #118997) **
	    'dm.protects.exclusioncheck' no longer blocks the owner of
	     sub-protection table from modifying it.

	#2559739 (Job #112564) **
	    Added 'dm.protects.exclusioncheck' check to 'p4 servers',
	    'p4 remotes', 'p4 switch', and 'p4 print'.

	#2557637 (Job #119417) **
	    Fixed a crash when 'p4 unshelve -b/-S' encountered an error.

	#2556267 (Job #119435) **
	    A deleted stream may now be re-created with a different
	    ParentView.

	#2554783 (Job #109776) * ** *** ****
	    The SSL certificate validation no longer assumes that P4PORT will
	    be set to a FQDN.

	#2551531 (Job #118961) **
	    'p4 diskspace' now correctly handles symlinks. Additionally, the
	    output now also includes the mount point for each location used by
	    the server.
	    
	    The formatted output can be reverted to the prior format by setting
	    the 'api' level to 95 or lower; for example 'p4 -Zapi=95 diskspace'.

	#2550748 (Job #119133, #119153) **
	    The performance of 'p4 streams --viewmatch //...' and similar
	    wildcarded paths has been improved by changing the output to
	    include all lines in the stream whose depot mappings intersect
	    with the wildcarded path, rather than identifying the specific
	    line that is used to map a given file in the stream. Specific
	    matching lines are still returned when a single file is used as
	    the --viewmatch argument.

	#2546650 (Job #118998) * ** *** ****
	    Improve SSL error detection and handling to prevent reporting
	    non-existent SSL errors. Previously this was theoretically
	    possible but had not been observed.

	#2546586 (Job #118566) **
	    Parallel recoveries did not detect a character set mismatch between
	    the server and recovery files. This has been fixed.

	#2545744 (Job #113441) **
	    The 'p4 sync' command with multiple user specified file patterns
	    will now batch compute all sync arguments and collate file actions
	    before sending files to the client.

	#2544325 (Jobs #118375, #112333) **
	    On Windows the atomic rename api is limited in scope by the OS.
	    With this change the atomic rename is first attempted, if the
	    atomic rename fails the operation falls back to a copy truncate.

	#2543769 (Job #116539) **
	    It was possible for the table dump command 'p4d -jd' to create
	    the MD5 checksum file even when the command had failed. This
	    has been fixed.

	#2542406 (Job #107457) * ** *** ****
	    Improve SSL connection establishment under heavy load. In particular
	    this eliminates the "wrong version number" error when the client
	    is slow to initiate the SSL handshake after establishing the TCP
	    connection.

	#2540339 (Job #118002) **
	    'p4 obliterate' can no longer write archive delete journal notes
	    when a journal rotation is in progress.

	#2539409 (Job #118756) **
	    Attempts to assign a negative value to a date field are now
	    blocked.

	#2539408 (Job #118549) **
	    The server does not handle date fields containing negative values
	    correctly. This has been fixed.

	#2536499 (Job #118593) **
	    Adding an Extension that implements a 'pressure-pause' event no
	    longer prevents updates to triggers.

	#2536202 (Job #118635) **
	    The range of dates that can be represented and queried in Date job
	    fields has been increased from the year 2038 to the year 2286.

	#2534366 (Job #118342) **
	    The monitor level stored by 'rt.monitorfile' is no longer reset to
	    0 when each new command starts.

	#2534366 (Job #116191) **
	    Fixed DVCS fetch, push and zip commands incorrectly reporting a
	    split move across changelists.
	    
	#2534072 (Job #118559) * ** *** ****
	    Clients now call shutdown() before closing a network connection
	    in order to process all pending packets and ensure a clean
	    connection shutdown. In particular, pending packets will not
	    be lost when a client is terminated via control-c (^C).

	#2531031 (Job #658) **
	    'p4 resolved //depot/file' will now return matches for the 'yours'
	    file as well as the 'theirs' file.

	#2531128 (Job #118495) **
	    Extensions installed on a Windows commit server and run on a
	    Unix replica will now work.

	#2530847 (Job #516) **
	    'p4 add' of a file opened for branch with 'p4 integ -v' will no
	    longer attempt to make the workspace file writable, since there
	    is no depot file present in the workspace in that scenario.

	#2530479 (Job #118395) **
	    Set digest/filesize on text+k files for 'p4 change -t' command. 

	#2530372 (Job #118360) **
	    Replacing a trait value that had been saved in the trait depot
	    with a value that is saved in db.traits would cause the
	    trait depot depotfile to not be removed. This has been fixed.

	#2530369 (Job #433) **
	    The "//xxx/... - must refer to client 'yyy'" error message now
	    includes the phrase "or a depot", since in the context in which
	    this error appears it is valid for "xxx" to be either the current
	    client or any accessible depot.

	#2529691 (Job #118150) **
	    Fixed 'p4 configure show allservers' output inconsistency.
	    Output now includes the self-doc fields from 'p4 configure help'.

	#2529474 (Job #118397) **
	    The command 'p4 configure help' for a particular configurable now
	    results in a command usage error.

	#2527918 (Job #114849) **
	    The fix for job #84375 inadvertently caused issues for the
	    'SearchBindPasswd' field of the 'p4 ldap' specification, resulting 
	    in authentication failures when using that LDAP connection; this
	    has been fixed

	#2527606 (Job #112369) **
	    The 'p4 fstat' command with multiple user specified filespecs will
	    now batch compute all command arguments before displaying
	    information about each file to the client. When run against an edge
	    server with the global lock option -OL, this has the effect of
	    improved performance due to reduced rmt-GlobalLockFetch calls.

	#2527036  (Job #114420) **
	    'p4 renameuser' no longer takes long write locks on db.monitor.
	    
	#2526915 (Job #115632) **
	    Fixed auto-shelve of modified content on distribution server when
	    switching between streams.

	#2526838 (Job #116689) **
	    Replicas configured with 'lbr.replication=cache' will now check for
	    a running archive pull thread before triggering deferred archive
	    replication for files being sync'ed.

	#2522789 (Job #115864) **
	    The client filesize cache data is now replicated. If filesize data
	    needs to be generated on a replica, the required archives are pulled
	    on-demand if not already replicated.

	#2522653 (Job #118004) **
	    On-demand fetching of archives from a replica will now cause the
	    commit server to perform a fetch on-demand if the archive has not
	    yet been transferred from an edge server as part of a background
	    submit. The client requesting the file content will no longer
	    receive a librarian error in this situation.

	#2522208 (Job #118198) **
	    'p4 license -L' no longer reports the MAC addresses of network
	    interfaces that do not have IPv4 or IPv6 addresses.

	#2519364 (Job #102151) **
	    This change improves performance for 'p4 sync' for cases where
	    client view is complex and has many entries.

	#2519175 (Job #122751) **
	    'p4 interchanges -S' now consistently reports changes that require
	    integration, as it is documented to.  Previously, it would
	    sometimes partially mimic the behavior of 'p4 copy' and report
	    changelists associated with arbitrary revisions of differing files
	    rather than changelists associated with unintegrated revisions,
	    with additional special-casing to eliminate some of the most
	    obviously nonsensical results.  In the interests of simplicity and
	    performance, the behavior is now consistent with 'p4 integrate'.

	#2518835 (Job #118062) **
	    Files that are known to the server to be modified in a workspace,
	    i.e. open files, are now considered "modified" for the purposes of
	    'p4 obliterate -b' and 'p4 prune'.

	#2516156 (Job #117862) **
	    The --from flag now works correctly when integrating into a
	    mainline stream from one of its children.

	#2515370 (Job #112901) **
	    If a file was added with the same name as a file which had
	    previously been moved, then a 'p4 verify' might erroneously
	    report the readded file was missing.  This has been fixed.

	#2511533 (Job #117953) **
	    'p4 diff' now produces more consistent results with a diff against
	    the default (#have) revision when diffing against the same revision
	    by explicitly providing it as a command argument.

	#2509774 (Job #117916) **
	    Now 'p4d -xx db.working db.have' table pair integrity check does
	    not result in partitioned client files deletion entries in jnl.fix
	    file.

	#2506947 (Job #116293) **
	    'p4 search' could get stuck when putting a read-lock on the ixtext
	    table. This change fixes the problem by switching to lockless access
	    for the table.

	#2506405 (Job #114542) *
	    A 'p4' request now reports invalid character encodings passed in
	    the program aruments.

	#2504413 (Job #117741) * **
	    cURL (for extensions) has been upgraded 8.4.0 to address multiple
	    cURL CVEs: CVE-2023-38545 and CVE-2023-38546

	#2502624 (Job #113605) **
	    When 'p4 verify -S @=<change#>' is run with a change# that is not
	    shelved, or was shelved previously and then the shelf was deleted,
	    'p4 verify' for this case would incorrectly output files from other
	    shelved changes. This change fixes the problem.

	#2501687 (Job #117719) * ** *** ****
	    Ignore spurious SSL errors detected during SSL client and server
	    initialization to prevent reporting non-existent SSL errors.
	    Previously this was theoretically possible but had not been
	    observed.

	#2498308 (Job #91847) **
	    'p4 sync' could fail to schedule a resolve against newer revisions
	    of a file that had been opened for move if the move/add revision
	    had a higher revision number than the corresponding move/delete.

	#2492795 (Job #117470) * ** *** ****
	    Make SSL error handling more robust and provide more detailed
	    and user-friendly SSL error messages.

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

Major new functionality in 2023.2 (2023.2/2519561) (2023/11/14)

	#2489411 (Job #116768) **
	    Initial support S3 backed depots
	    This is initially limited to depots of type archive, but will be
	    extended to support other depot types in the future.

	#2486446 (Job #115674) **
	    New attribute values may now be optionally stored in a traits depot
	    rather than in the db.traits table when the size of the value
	    meets or exceeds a configured size (in bytes) as set by the new
	    configurable 'trait.storagedepot.min'. The 'p4 fstat -Oa' option
	    will fetch and display the value from its storage location, which
	    will be either the trait depot or the db.traits table. A new
	    command, 'p4 fstat -On' will display the attribute names with
	    their storage locations rather than their trait values. The
	    'p4 attribute' command now has options to override the configurable
	    under certain circumstances. Please see 'p4 help attribute' and
	    'p4 help fstat' for further details.

Minor new functionality in 2023.2 (2023.2/2519561) (2023/11/14)

	#2499053 (Job #112875, #117469) **
	    Validate IP/MAC address or FQDN against valid addresses on the
	    server host before applying a new license with 'p4 license -i'.
	    No server server restart is needed for any license update.

	#2495109 (Job #97048) ***
	    Added a new p4p option, --cache-purge, for clearing proxy cache
	    files that have not been accessed recently. The threshold for access
	    time is set by the new configurable 'proxy.clearcachethresh'.

	#2491355 (Job #116606) **
	    Added a new comment field to config history records: long option 
	    --comment can be used to set the comment for the last history record
	    for a given configurable, or used with set/unset.

	    See 'p4 help configure' for usage details.

	#2487108 (Job #117327, #113690) **
	    The new journalPrefixBackup Commit Server configurable makes it
	    possible to manually move rotated journal files to a secondary
	    storage location and still support edge server activity.  See
	    the Command Reference for details.

	#2486366 (Job #116822) **
	    New command 'p4 configure help' outputs all documented configurables.
	    Shows their value, description, value type, min value (if available),
	    max value (if available), default value, recommended value (if available),
	    restart requirements, support level, category and URL of the online
	    help.

	#2485308 (Job #110741) **
	    The performance of 'p4 reload' has been improved by optimising its
	    memory usage.

	#2483722 (Job #112874) **
	    Use 'p4 license -L' to obtain a list of valid IP or MAC addresses
	    from your server host.

	#2483011 (Job #095924) * ** ***
	    Log the number of files sent/received by the server/proxy/client and
	    size in bytes for more visibility.

	    Unstructured logs will show separate logs for server/client/proxy as
	    '--- filetotals (svr) send/recv files+bytes 0+0mb/0+0mb'
	    '--- filetotals (client) send/recv files+bytes 0+0mb/0+0mb'
	    '--- filetotals (cache) send/recv files+bytes 0+0mb/0+0mb'

	    The following changes have been made for structured logs:
	      1. The existing DMG_LOG_TRACK_RPC event now has 4 new fields:
	          f_sendDirectFiles
	          f_recvDirectFiles
	          f_sendDirectBytes
	          f_recvDirectBytes
	      2. New event DMG_LOG_CLIENT_STATS (event number 25) with 4 fields:
	          f_sendClientFiles
	          f_recvClientFiles
	          f_sendClientBytes
	          f_recvClientBytes
	      3. New event DMG_LOG_PROXY_STATS (event number 26) with 4 fields:
	          f_sendCacheFiles
	          f_recvCacheFiles
	          f_sendCacheBytes
	          f_recvCacheBytes

	    CURRENT LIMITATIONS:
	      1. Only proxies will forward the client stats to the commit server,
	         and any cached delivers, file total logging disabled on broker,
	         and forwarding-replica will log locally instead of forwarding
	         the stats to the upstream commit server. 
	    
	      2. Neither forwarding replica or proxy will log filetotals cached
	         during transfer, from either commit->proxy/replica or from
	         client->proxy/replica.

	#2482034 (Job #117182) **
	    'p4 streams --viewmatch' now accepts a revision specifier.

	#2470778 (Job #116585) * ** *** ****
	    P4PORT transport prefixes (e.g., 'tcp', 'tcp4', 'tcp46, 'tcp6', 
	    'tcp64', and their SSL equivalents) are no longer required to be 
	    lowercase. The alphabetic characters in a transport prefix may be
	    uppercase, lowercase, or mixed case.

	#2442141 (Job #053773, #034662) * **
	    The 'zlib.compression.level' configurable has been added to allow
	    for specifying the amount of compression attempted for various
	    activities.  The configurable has a range from -1 to 9, with 9 being
	    the slowest and highest compression level.  The -1 setting corresponds
	    to the default setting of the zlib library, which is currently level 6.

	    This allows admins to trade compression time for file size.
	    The difference in file size can be smaller than the gains had
	    by spending less time compressing files, so allowing for this
	    choice offers a useful setting to expose since spending less time
	    waiting for 'p4 submit' is cheaper than using a bit more storage.

	    E.g. a 'p4 submit' of a binary file with the default compression level
	    of 6 takes 4.75s and results in a 49MB archive file.  Changing the
	    level to 2 takes 2.98s and results in a 54MB archive file - that's
	    a 37% faster commit and 10% bigger binary, and ~54% faster than
	    the 22.2 release.

	    The setting is primarily applied server-side, intended for archive
	    file activities, but can also be used client-side, e.g. for the
	    client spec 'compress' option.

Bugs fixed in 2023.2 Patch 10 (2023.2/2873834) (2026/01/05)
	
	#2869936 (Job #105807) **
	    The edge server log no longer shows the "Operation 'dmr-Sequence'
	    failed" error when an edge-submit fails after a shelved change is
	    created.

	#2865069 (Job #126938) **
	    'p4 login' will now return a distinct error when
	    'dm.user.setinitialpasswd' is disabled and the user has no password
	    'p4 login' will now return a distinct error when
	    'dm.user.setinitialpasswd' is disabled and the user has no password
	    set, informing the user that a super user must set their initial
	    password.

	#2864312 (Job #129290) ** *** ****
	    Self-sign certificates created with the `-Gc` option on p4d, p4p
	    or p4broker are now signed with a SHA256 hash.
	
	#2864281 (Job #128946) * **
	    cURL (for extensions) has been upgraded 8.16.0.

	#2863283 (Job #126852) **
	    TinyXML2 has been upgraded to 11.0.0.

	#2844201 (Job #128842) **
	    'p4 describe -a -S' now correctly shows the diff for files open for
	    add in the shelf.

	#2805374 (Job #127760) **
	    Fixed 'invalid out-of-bounds conversion of DmtStreamPathType' error.

Bugs fixed in 2023.2 Patch 9 (2023.2/2797379) (2025/07/11)

	#2793723 (Job #127398) **
	    The stream spec permission checking is no longer applied to submits
	    to streams that do not include a change to the stream spec.

	#2792259 (Jobs #123929) **
	    Fixed istat crash due to inconsistencies in stream spec data
	    originating from pre-19.1 servers. Run 'p4d -xf 123929' to fix
	    inconsistent data.

	#2788868 (Job #127308) **
	    The modtime of binary files with either the +m modifier or with the
	    modtime option enabled in the client are now correctly passed to
	    altsync agents.
	    
	#2775893 (Job #125223) **
	    We were mistakenly checking the permissions to stream spec when doing
	    submit to a classic depot. We have now stopped checking stream permissions
	    when submitting for a classic depot.

Bugs fixed in 2023.2 Patch 8 (2023.2/2723144) (2025/02/19)

	#2720920 (Job #124712) **
	    In rare cases the setup to run p4diag automatically can fail on
	    Windows Server 2022 Enterprise without a desktop installed.  This
	    has been corrected.

	#2717519 (Job #124613) **
	    Setting 'auth.ldap.ssllevel=2' on a Windows server will no longer
	    allow connections to LDAP servers with self-signed certificates
	    unless that certificate is installed into the CA store or is
	    specified with 'auth.ldap.cafile'.

	#2717513 (Job #123694) **
	    Edge servers will no longer reject submit commands if a depot not
	    involved in the submit has less free space than the
	    'filesys.depot.min' threshold.

	#2716109 (Job #122189) * ** *** ****
	    When using either the tcp64 or ssl64 protocols (IPv6 or IPv4), IPv4
	    addresses are now always formatted as IPv4 addresses rather than
	    mapped IPv6 addresses.

	#2713834 (Job #124534) **
	    Serverlocks on Windows servers are no longer deleted in such a way
	    that on rare occasions synchronous operations could occur in
	    parallel.

	#2712308 (Job #124563) **
	    'p4 labelsync' and 'p4 tag' now apply the label to all files
	    arguments sequentially, irrespective of the type of the
	    revision specifiers provided, such that the last argument to
	    reference a given file is used to determine which revision is
	    stored in the label.

	#2711117 (Job #124145) **
	    Fixed conflict between writable components and Ignored paths.

	#2709879 (Job #122963) **
	    On an edge server with configurables submit.allowbgtransfer=1 and
	    submit.autobgtransfer=1 set, when a file edit is submitted without
	    change, the option '-f submitunchanged' of submit would fail to
	    override 'revertunchanged' from client spec and it would result
	    submit failing with: "No files to submit". This change fixes the
	    problem.

	#2707698 (Jobs #124317, #124320) * **
	    P4ALTSYNC agents are now provided with a 'time' field containing
	    the modtime to set on add/added files of type +m or when the
	    modtime client option is enabled.

	#2702455 (Job #123774) ***
	    Reuse of a ClientApi object across connections that involve a proxy
	    no longer causes "Unknown command" errors after client statistics
	    should have been reported to the server.

 	#2698309 (Job #120059) **
	    There is a race condition between directory removal and archive
	    creation on an edge during a 'p4 submit -e' for binary file types.
	    This has been fixed.

Bugs fixed in 2023.2 Patch 7 (2023.2/2690760) (2024/12/04)

	#2686057 (Job #122076) **
	    The command-line client on Windows now prints an error when it
	    detects ambiguous argument encoding.

	#2685395 (Job #122569) * **
	    cURL has been upgraded 8.10.1

	#2684191 (Job #122784) **
	    Corrected crash when authentication fails during istat operation.

	#2684190 (Job #119735) **
	    On Windows, network share access permissions for RCS depot archives
	    can cause a crash.  This has been resolved.

	#2682372 (Job #123443) **
	    Commands run through a broker and then forwarded to another server
	    will no longer cause hangs for successive commands run on the same
	    connection after a client could have reported client stats.

	#2682087 (Job #117647) **
	    A crash in 'p4 transmit -r' has been corrected.

	#2680581 (Job #121121) **
	    Corrected an unexpected 'Files are missing as a result of one or
	    more move operations' error in the fetch, push, and zip commands.

	#2678661(Job #123034) **
	    Setting a trigger command to an empty string will now result in an
	    error on execution rather than allow the undefined behavior.

	#2676563 (Job #123250) **
	    Security fix. Addressed CVE-2024-10314, CVE-2024-10344 and
	    CVE-2024-10345

	#2672451 (Job #120977) **
	    Fixed a problem where a user with openstreamspec permission could
	    open a stream spec but not edit the stream spec. Also fixed a
	    problem where a user with writestreamspec permission could not edit
	    and save a new stream spec.

	#2670374 (Job #123015) **
	    Fixed locking order bug when obliterating a stream and the
	    configurable index.domain.owner is 1.

	#2666580 (Job #123094) * ** *** ****
	    OpenSSL has been upgraded to 3.0.15

	#2660857 (Job #113058) **
	    Fixed stream spec obliterate problem where a super or admin user
	    could not obliterate the stream spec if configurable
	    dm.protects.streamspec was set to 1.

	#2659107 (Job #122472) **
	    A rare infinite loop caused by an over-optimisation when scanning
	    the rev table has been fixed.

	#2656735 (Job #121134) **
	    Fixed istat crash with noinherit ParentView when db.bodtextcx rows
	    are missing.

	#2648896 (Job #117955) * **
	    The zlib deflate operation uses x64 instructions not supported on older
	    CPUs raising an illegal instruction exception. This has been fixed.

	#2648680 (Job #120764) **
	    Removed unnecessary error "Error object passsed to database already
	    with an error" when attempting to switch a stream workspace with
	    unresolved issues. 

	#2641569 (Job #119153) *
	    The performance of 'p4 streams --viewmatch //...' and similar
	    wildcarded paths has been improved by changing the output to
	    include all lines in the stream whose depot mappings intersect
	    with the wildcarded path, rather than identifying the specific
	    line that is used to map a given file in the stream. Specific
	    matching lines are still returned when a single file is used as
	    the --viewmatch argument.

	#2639165 (Job #115877) **
	    On an edge-server 'p4 submit' following a 'p4 integ -v' could fail
	    with "No such file or directory". This change fixes the problem.

Bugs fixed in 2023.2 Patch 6 (2023.2/2633816) (2024/08/02)

	#2633514 (Job #121790) **
	    If a virus scanner locks a portion of an RCS temp file during
	    a pull operation, a crash may occur.  This has been corrected.

	#2631134 (Job #119346) **
	    In case of a commitServer-Edge-ForwardingReplica chain, there was a
	    problem where on ForwardingReplica a 'p4 submit' after Integ/Resolve
	    could fail because archive files were missing on the Edge server.
	     This change fixes the problem by pulling the missing archive-files
	     for the Edge server when needed, allowing 'p4 submit' to succeed.

	#2631130 (Job #119795) **
	    For p4 fetch', if '-I' flag is used the command could fail
	    unexpectedly with a 'Cannot import' error. This change fixes the
	    problem.

	#2630390 (Job #121621) **
	    Setting a very low value of db.checkpoint.reqlevel can allow a
	    multifile parallel checkpoint or dump to skip small db.files.
	    This has been fixed.

	#2620238 (Job #121119) ** ***
	    Fix for client 'clobber' option being dropped when syncing
	    through a proxy.

	#2619519 (Job #119772) **
	    Fixed a journal inconsistency issue on non-Windows platforms caused
	    by killing a running p4 command.

	#2619516 (Job #121240) **
	    The 'p4 lock' and 'p4 unlock' commands can now be cancelled by
	    using 'p4 monitor terminate' or pressing Ctrl-C on the client.

	#2613923 (Job #110263) **
	    This change fixes a performance problem in 'p4 obliterate' where it
	    was causing excessive time on edge-server to purge related db.label
	    records.

	#2613565 (Job #114829) **
	    For 'p4 fstat' locking db.revcx for long period could block other
	    commands like 'p4 submit' to run simultaneously. This change fixes
	    the problem by altering db.revcx lock mode to PEEK mode, if
	    db.peeking is set to greater than 2.

	#2613267 (Job #115232) **
	    This change introduces a new flag, -E, for p4 copy. The -E flag
	    overrides the current setting for the 'dm.integ.tweaks'
	    configurable and its effect is the same as having
	    'dm.integ.tweaks' set to 32. This flag, similar to the
	    configurable 'dm.integ.tweaks', is kept undoc.

	#2612833 (Job #121091) **
	    Fixed reversion of an open stream spec when using the command
	   'p4 revert -a -Si filelist...'.

	#2611936 (Job #87618) **
	    Ignored branch records resulting from a cherry-pick now only
	    grant credit for the cherry-picked revisions, rather than
	    implicitly including all prior revisions as is the case for a
	    normal branch record.  This fixes a problem in which an ignored
	    branch of a file that was copied from an old revision did not
	    grant any credit at all on subsequent integrations.

	#2611912 (Job #120791) **
	    Fixed stream obliterate endless loop problem.

	#2610994 (Job #121079) **
	    Fixed reversion of an open stream spec when using the command
	    'p4 revert -n -Si filelist...'.

	#2608651 (Job #120840) **
	    If a Helix Core Server is configured with no logging, a crash may
	    occur. This has been corrected.

Bugs fixed in 2023.2 Patch 5 (2023.2/2605454) (2024/05/31)

	#2605272 (Job #112564) **
	    Added 'dm.protects.exclusioncheck' check to 'p4 servers',
	    'p4 remotes', 'p4 switch', and 'p4 print'. 

	#2604189 (Job #118997) **
	    'dm.protects.exclusioncheck' no longer blocks the owner of
	    sub-protection table from modifying it.

	#2601050 (Job #115864) **
	    The client filesize cache data is now replicated. If filesize data
	    needs to be generated on a replica, the required archives are pulled
	    on-demand if not already replicated.
	
	#2600788 (Job #120474) **
	    Replication of a journal rotation event from an upstream server
	    using journalcopy can no longer enter a loop.
	
	#2600787 (Job #116689) **
	    Replicas configured with 'lbr.replication=cache' will now check for
	    a running archive pull thread before triggering deferred archive
	    replication for files being sync'ed.

	#2583561 (Job #119810) **
	    The error message "db.group locked after db.stream" no longer
	    appears when submitting a stream spec on an edge server and
	    then issuing a stream command. Previously, this error could
	    occur in P4V or any client that uses a shared connection.

	#2581410 (Job #119854) ** ***
	    Client stats are no longer collected when a proxy server prior to
	    this patch is used, preventing a potential hang when multiple
	    commands are run on the same connection.

	#2580609 (Job #113605) **
	    When 'p4 verify -S @=<change#>' is run with a change# that is not
	    shelved, or was shelved previously and then the shelf was deleted,
	    'p4 verify' for this case would incorrectly output files from other
	    shelved changes. This change fixes the problem.

	#2579716 (Job #119203) **
	    A non-parallel checkpoint request using more than one thread
	    did not ensure that the CHECKPOINT_HEADER note appeared as the
	    first line in the output file. Also the same checkpoint on
	    a Windows platform did not use the correct line ending. This
	    has been fixed.

Bugs fixed in 2023.2 Patch 4 (2023.2/2578891) (2024/03/29)

	#2578808 (Job #119853) **
	    A performance regression introduced in the 2023.1 release for the
	    'p4 fstat' command with a large client map has been corrected to
	    previous release levels.

	#2576343 (Job #112901) **
	    If a file was added with the same name as a file which had
	    previously been moved, then a 'p4 verify' might erroneously
	    report the readded file was missing.  This has been fixed.

	#2576339 (Job #119453) **
	    Fixed "db.streamview locked after db.domain" error when submitting
	    an opened stream spec.

	#2571460 (Job #119638) **
	    Ensure all interfaces are listed in tagged output for
	    'p4 license -L'.

	#2571445 (Job #119620) **
	    The initial 2023.2 release changed the order of precedence for
	    multiple 'p4 labelsync' arguments that reference the same depot
	    file.  This change reverts it to the 2022.2 behavior.  Note that
	    the behavior of conflicting labelsync arguments is not currently
	    documented or formally defined, so any workflows that depend on
	    it are unsupported, and may be negatively impacted by this patch.

	#2567132 (Job #119493) **
	    Fixed stream view generation at a specific change causing an 
	    endless loop during upgrade, where the loop occurs for the stream's
	    ancestors and the stream itself is not in the loop.

	#2567021 (Job #119441) **
	    The aggregate MD5 was not created for a parallel checkpoint on a 
	    replica. This has been fixed.

	#2569178 (Job #114849) **
	    The fix for job #84375 inadvertently caused issues for the
	    'SearchBindPasswd' field of the 'p4 ldap' specification, resulting 
	    in authentication failures when using that LDAP connection; this
	    has been fixed

Bugs fixed in 2023.2 Patch 3 (2023.2/2563409) (2024/02/27)

	#2558646 (Jobs #118375, #112333) **
	    On Windows the atomic rename api is limited in scope by the OS.
	    With this change the atomic rename is first attempted, if the
	    atomic rename fails the operation falls back to a copy truncate.

	#2557887 (Job #119417) **
	    Fixed a crash when 'p4 unshelve -b/-S' encountered an error.

	#2556700 (Job #102151) **
	    This change improves 'p4 sync' performance with complex views by
	    increasing the lookback limit from the previous value of 8 to a
	    value set by the new configurable maxLookBack with a default value
	    of 1000.

	#2555959 (Job #116293) **
	    'p4 search' could get stuck when putting a read-lock on the ixtext
	    table. This change fixes the problem by switching to lockless access
	    for the table.

	#2555497 (Job #116539) **
	    It was possible for the table dump command 'p4d -jd' to create
	    the MD5 checksum file even when the command had failed. This
	    has been fixed.

	#2553624 (Job #119254) **
	    A parallel recovery would leak memory on note entries in the
	    replay file(s). This has been fixed.

	#2554082 (Job #119336) **
	    OpenLDAP has been upgraded 2.4.17

	#2552714 (Job #118004) **
	    On-demand fetching of archives from a replica will now cause the
	    commit server to perform a fetch on-demand if the archive has not
	    yet been transferred from an edge server as part of a background
	    submit. The client requesting the file content will no longer
	    receive a librarian error in this situation.

	#2551998 (Job #118593) **
	    An Extension implementing a 'pressure-pause' hook no longer prevents
	    updates to the trigger table.

	#2548434 (Job #118559) * ** *** ****
	    Clients now call shutdown() before closing a network connection
	    in order to process all pending packets and ensure a clean
	    connection shutdown. In particular, pending packets will not
	    be lost when a client is terminated via control-c (^C).

	#2548082 (Jobs #107457, #117470, #118998, #117719) * ** *** ****
	    Improve SSL connection establishment under heavy load. In particular,
	    this eliminates the "wrong version number" error when the client
	    is slow to initiate the SSL handshake after establishing the TCP
	    connection.

	    Improve SSL error detection and handling to prevent reporting
	    non-existent SSL errors. Previously this was theoretically
	    possible but had not been observed.

	    Ignore spurious SSL errors detected during SSL client and server
	    initialization to prevent reporting non-existent SSL errors.
	    Previously this was theoretically possible but had not been
	    observed.

	    Make SSL error handling more robust and provide more detailed
	    and user-friendly SSL error messages.

	#2547699 (Job #118566) **
	    Parallel recoveries did not detect a case handling mismatch between
	    the server and recovery files. This has been fixed.

	#2546176 (Job #118002) **
	    'p4 obliterate' can no longer write archive delete journal notes
	    when a journal rotation is in progress.

	#2544323 (Job #118360) **
	    Replacing a trait value that had been saved in the trait depot
	    with a value that is saved in db.traits would cause the
	    trait depot depotfile to not be removed. This has been fixed.

	#2541675 (Job #115632) **
	    Fixed auto-shelve of modified content on distribution server when
	    switching between streams.

	#2538285 (Job #118756) **
	    Attempts to assign a negative value to a date field are now
	    blocked.

	#2538275 (Job #118549) **
	    The server does not handle date fields containing negative values
	    correctly. This has been fixed.

Bugs fixed in 2023.2 Patch 2 (2023.2/2535420) (2023/12/19)

	#2534278 (Job #118635) **
	    A severe performance regression for 'p4 jobs -e Date>=yyyy/mm/dd'
	    and similar queries was introduced in the initial 2023.2 release,
	    causing all numeric db.ixtext entries to be scanned in the course
	    of retrieving dates matching the specified range.  This is fixed.

	#2533190 (Job #114420) **
	    'p4 renameuser' no longer takes long write locks on db.monitor.

	#2528293 (Job #118342) **
	    The monitor level stored by 'rt.monitorfile' is no longer reset to
	    0 when each new command starts.

	#2532094 (Job #116191) **
	    Fixed DVCS fetch, push and zip commands incorrectly reporting a
	    split move across changelists.

	#2531016 (Job #118395) **
	    Set digest/filesize on text+k files for 'p4 change -t' command. 

Bugs fixed in 2023.2 Patch 1 (2023.2/2523307) (2023/11/22)

	#2523153 (Job #118298) **
	    Back out change 2490421 as it has not had the desired effect
	    in customer environments.

	#2521944 (Job #118198) **
	    'p4 license -L' no longer reports the MAC addresses of network
	    interfaces that do not have IPv4 or IPv6 addresses.

Bugs fixed in 2023.2 (2023.2/2519561) (2023/11/14)

	#2516988 (Job #116628) **
	    Revisions without an archive that were retyped using the force flag
	    could cause an error when replicated to an edge. These revisions
	    are now marked as 'missing' and ignored for replication.
	    'p4 fstat' in tagged mode will report the 'isMissing' tag for
	    these revisions.

	#2512340 (Job #117646) **
	    'p4 unshelve' with multiple files as parameters, if this file-list
	    is not sorted, could erroneously report 'can't unshelve (already
	    opened for edit using a different client view path)'. This change
	    fixes the problem.

	#2508491 (Job #116102) * ** *** ****
	    OpenSSL has been upgraded to 3.0.12
	    
	#2505273 (Job #112432) **
	    'p4 fetch' and 'p4 push' commands now update LastFetch/LastPush
	    when user provided filespec argument does not limit remote view.

	#2504803 (Job #117741) * **
	    cURL (for extensions) has been upgraded 8.4.0 to address multiple
	    cURL CVEs: CVE-2023-38545 and CVE-2023-38546

	#2499611 (Job #90618, #117153) * ** *** ****
	    Security fix. Addressed CVE-2023-5759.

	#2496083 (Job #117185) **
	    The 'db.checkpoint.threads' configurable override was not
	    supported for non-parallel checkpoint and dump requests started
	    directly with 'p4d' via the '-N threads' option and requests
	    started by the 'p4 admin checkpoint' command via the '-n threads'
	    option. This has been fixed.

	#2495972 (Job #114613) **
	    If 'p4 unlock -f' is run for a bunch of individual files, it could
	    result unnecessary scanning of db.domain and holding lock on this
	    table for a long period of time, blocking out other commands. This
	    change fixes the problem.

	#2494767 (Job #117156) **
	    Security fix. Addressed CVE-2023-35767.

	#2493556 (Job #117155) **
	    Security fix. Addressed CVE-2023-45849.

	#2491456 (Job #107898) **
	    'p4 annotate' unnecessarily scanned additional db.rev records
	    when following integration history through files with protection
	    exclusions.  This has been fixed.

	#2491397 (Job #117154) **
	    Security fix. Addressed CVE-2023-45319.

	#2490421 (Job #107457) * ** *** ****
	    Failed SSL connection attempts now produce more detailed
	    and accurate error messages, making it easier to diagnose
	    incorrect SSL configurations. In particular, if a server
	    is experiencing more simultaneous SSL connection attempts
	    than it can handle then it will produce a message to that
	    effect rather than producing a generic SSL failure message.
	    Additionally, transient connection errors are retried more
	    robustly, so some connection attempts that would previously
	    have failed may now succeed.

	#2489148 (Job #117392) **
	    There was a data race between threads in the 'p4 storage -U' command.
	    This has been fixed.

	#2488264 (Job #117222) **
	    Ensures that 'p4d -jr' command to replay the checkpoint in a
	    non empty directory does not update the existing database files.

	#2488070 (Job #117270) **
	    Fixed a component stream validation error when reparenting a stream.

	#2487821 (Job #114933) **
	    When a lazy copy file is sent using 'p4 unzip', 'p4 push' or
	    'p4 fetch' and the source is not part of the package, it will be
	    imported as a non-lazy copy file.

	#2484430 (Job #113319) **
	    Using 'p4 unzip' with -I option to exclude integration records
	    no longer causes a crash when the source of a lazy copy is not
	    included in the zip.

	#2482627 (Job #106491) **
	    'p4 zip' correctly includes archives for lazy copies when used with
	    a revision range.

	#2482523 (Jobs #117098, #117137) **
	    For a parallel checkpoint operation, the start time and end time
	    in the checkpoint history record were the same and the
	    'checkpoint' and 'journal' fields in the 'rotate-journal'
	    trigger were not set. This has been fixed.

	#2481875 (Job #117071) **
	    For 'changes -m -u' it may produce less than m lines, missing valid
	    records in the output. For 'p4 changes' with -i closure option,
	    it may produce result that does not include changes for the files
	    in the source of integration.

	#2479809 (Job #117093) **
	    The orphan scanner, 'p4 storage -l', does not work with space in
	    the depotdirectory argument. This has been fixed.

	#2475698 (Job #114250) **
	    Concurrent 'p4 unlock' and 'p4 lock' commands can result a deadlock
	    and system hang. This change fixes the problem.

	#2474301 (Job #116821) **
	    Some commands that take file paths with changelists specifiers will
	    now position in db.rev to get to the next file instead of scanning.

	#2469524 (Job #116678) **
	    'p4 submit' will no longer clear the commandGroup identifier during
	    the submit process.

	#2468060 (Job #111780) **
	    For 'p4 shelve' with a lot of content that dedups to existing
	    content, it produces lots of shelf archives to be deleted. In these
	    cases database tables stay locked for extended periods of time,
	    resulting performance degradation for other commands. This change
	    improves on this kind of database lock time.

	#2467384 (Job #115204) **
	    For 'p4 changes -m<maxChanges> <filepath>@<change>', this change
	    improves performance by quickly skipping over changes that have a
	    non-matching path.

	#2464103 (Job #115529) **
	    Many 'p4 diff2' commands run simultaneously can hold lock on
	    db.revsh blocking other commands for long periods of time. This
	    change improves performance by making db.revsh access lockless.

	#2463813 (Job #115585) **
	    'p4 topology --explain' now displays the long-form syntax for all
	    the topology options.

	#2463373 (Job #116078) **
	    A chained edge uses the server protocol version of the upstream
	    edge rather than the server protocol version of the commit
	    server. This has been fixed.

	#2463256 (Job #115584) **
	    'p4 topology -m' command now results in topology usage error when
	    used with the options '-a' or '-d'.

	#2462781 (Job #116121) **
	    P4ALTSYNC will now generate a digest on the fly for files that do
	    not have checksums stored in the database.

	#2462372 (Job #116376) **
	    The precedence of overlapping ChangeView entries, including those
	    generated for streams with multiple "import @change" Paths, was
	    not honored correctly.  This has been fixed.

	#2462343 (Job #116382) **
	    'p4 fstat -e CHANGE' would unnecessarily scan db.rev records for
	    files open in other changelists, making it very inefficient when
	    there were many such files.  This has been fixed.

	#2461940 (Job #116409) **
	    The stdout is now flushed after the starting checkpoint message is
	    generated. This is to help scripts determine the current checkpoint
	    number in use.

	#2461702 (Job #116306) **
	    Multifile checkpoints and dumps could contain duplicate records.
	    This has been fixed.

	#2461701 (Job #116373) **
	    The p4d help message now includes details on the -xj option to 
	    display db.ckphist records.

	#2460758 (Job #115558) **
	    'p4 unshelve' is no longer allowed for altsync enabled clients when
	    P4ALTSYNC is not configured correctly.

	#2459572 (Job #116187) **
	    P4ALTSYNC now works as expected with forwarding replicas.

	#2459572 (Job #116348) **
	    Command group logging information is now correctly passed upstream
	    from forwarding-replicas.

	#2459453 (Job #116334) **
	    Tracking metrics for 'rdb.lbr' activity is now reported for
	    scheduling the transfers of missing and bad depot files during
	    a 'p4 verify -t' command.

	#2457982 (Job #116141, #116277) **
	    Fixed problems with upgrade when a stream's view could not be
	    generated.

	#2456741 (Job #116101) * **
	    cURL (for extensions) has been upgraded 8.1.2 to address multiple
	    cURL CVEs: CVE-2023-28319 and CVE-2023-28322

	#2455354 (Job #115964) **
	    'p4 streams -F' would automatically escape the '&' query operator
	    in the special case where it immediately followed the string 'import';
	    this would cause a query parse error when combining two queries with '&'
	    if the first query ended with 'import'.  The automatic escaping behavior
	    has been removed and 'p4 help streams' has been clarified to explain
	    how to escape query operators that are part of a search expression.

	#2454956 (Job #115981) **
	    'p4 sync' of a symlink type file with P4ALTSYNC no longer causes
	    an infinite loop.

	#2453580 (Job #116086) **
	    'p4 fstat -m1 -S //...` once again performs a correct count of all
	    files.

	#2452968 (Job #114741, #115631, #115812) **
	    'p4 streams --viewmatch' has been significantly reworked in order
	    to more accurately return the exact set of streams whose views
	    match a given depot file and to eliminate unnecessary scans of
	    db.streamviewx.

	#2452668 (Job #116033) **
	    23.1 or later edge servers will now omit the altsync option if the
	    commit server has not been upgraded to at least 23.1.

	#2450824 (Job #114820) **
	    'p4 reload -p' will now correctly report errors to the users and if
	    a journalwait is required, the correct journal offset is now used.

	#2449796 (Job #116005) **
	    'p4 add' of a file in a client overlay path could unnecessarily scan
	    all mapped db.revhx records.  Fixed.

	#2448510 (Job #114845) **
	    Parallel checkpoint and dump operations now create an aggregate
	    MD5 file to indicate success.

	#2445284 (Job #114041) **
	    For 'p4 submit' of a graph depot repository if the repository
	    includes submodule the submit would corrupt the repository by
	    replacing the submodule with the directory of the submodule. This
	    change fixes the problem.

	#2442805 (Job #115714) **
	    'p4 fstat -Oz' did not display lazy copies of purged or
	    deleted revisions. This has been fixed.

	#2442681 (Job #115619) **
	    Fixed a 'p4 zip' bug where one half of a move/delete pair was
	    wrongly declared to be missing.

	#2440369 (Job #115687) **
	    This ensures that the respective intermediary server log is not
	    spammed with the topology server warning related to skipping the
	    capture of the server records in the db.topology table in case of
	    any upstream server that is not upgraded to the version >= 2021.2.

	#2437067 (Job #110437) * ** *** ****
	    The network autotune algorithm has been corrected to address the rare
	    cases where large numbers of files being submitted to a Linux server
	    from a Windows client could stall or hang if autotune was enabled
	    (net.autotune=1).

	#2434383 (Job #115391) **
	    Fixed stream view generation at a specific change causing an 
	    endless loop during upgrade.

	#2433630 (Job #115113) **
	    Missing archives no longer cause 'p4 renameuser' to crash.

	#2433577 (Job #115504) **
	    For the graph depot command 'p4 receive-pack' if the pack-file
	    includes merge commits, it is possible for the process to take
	    apparently infinite time and never finish. This can show up as a
	    git-connector mirroring update that never completes. This change
	    fixes the problem.

	#2427917 (Job #114334) **
	    If a stream has one or more components, and a stream client
	    is set to have a StreamAtChange for a change which did not
	    involve the stream spec, then the client view might not
	    include the component stream views, or they might be wrong.
	    This has been fixed.

	#2427515 (Job #114761) **
	    A 'p4 retype -l' request on a revision with a shelved
	    integration generates incorrect records in the db.storage
	    and db.storagesh tables. This has been fixed.

	#2426423 (Job #100988) **
	    'p4 undo' previously gave a empty error message when there were
	    conflicts between different open actions for the same file.  Now it
	    correctly reports the problematic file, the two conflicting actions,
	    and relevant changelist numbers that can be used to break the undo up
	    into non-conflicting ranges.

	#2424554 (Job #87367) *
	    P4IGNORE now defaults to '.p4ignore', 'p4ignore.txt',
	    '$HOME/.p4ignore' and '$HOME/p4ignore.txt'.

	#2423690 (Job #115128) **
	    This change fixes a bug in 'p4 changes' when it is used with options
	    '-m<maxchanges> <filepath>@<changeNumber>'.
	    If the '-m' value is bigger than 10% of the number of changes, and
	    the filepath does not match the first file in a change but matches
	    other files in the change, then the change would be skipped. This
	    change fixes the problem.

	#2423392 (Jobs #114708, #114712) **
	    The default fields to the display checkpoint history command,
	    'p4d -xj', now includes the 'end' date stamp of the operation.
	    The journal date field is now set to the current time for a
	    parallel checkpoint or dump request.

	#2422126 (Job #114848) ** ***
	    p4 pull -l' command could put shared lock on rdb.lbr for the whole
	    duration of the command running, resulting overall performance
	    degradation for edge or proxy servers. This improves the performance
	    by changing 'pull -l' to quickly read all the records it needs and
	    release the lock.


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

Major new functionality in 2023.1 (2023.1/2442900) (2023/05/15)

	#2413980 (Job #104786) * ** ***
	    Support for alternative sync agents
	    
	    The client spec has a new '[no]altsync' option which specifies if
	    the client application should use an alternative sync agent
	    (specified by the P4ALTSYNC environment variable) to perform file
	    operations. The alternative sync agent will be invoked once per
	    connection and will be provided with file metadata instead of the
	    client application writing file content directly; the primary
	    use-case for this functionality is to update the state of virtual
	    file service providers.
	    
	    See: P4ALTSYNC in Helix Core Command-Line (P4) Reference 

	#2350943, #2339529, #2328309 (Jobs #112184, #112183, #111439) **
	    Parallel checkpoint and dump operations accept an 'm'
	    sub-option, that allows each individual database table to
	    be split into multiple checkpoint or dump files. This should
	    allow the checkpoint/dump workload to be spread more evenly
	    between the available threads. The recovery operation
	    supports the 'p' sub-option to recover a parallel checkpoint
	    directory.

	    See: "Parallel checkpointing, dumping and recovery" in the
	    Helix Core Server Administrator Guide 

Technology Preview features in 2023.1 (2023.1/2442900) (2023/05/15)

	#2419976 (Job #5077, #67496, #72878, #108158, #108325, #110287) **
	    Helix Core Server System Resource Monitoring

	    The server can now meter the amount of incoming work it accepts,
	    pausing or rejecting client requests if the amount of free
	    operating system memory or CPU availability is past a configurable
	    threshold.  This feature is platform-specific.  CPU pressure
	    responsiveness is only available on Linux systems with cgroups
	    v2 configured.  Memory awareness is available on all Linux
	    versions as well as Windows, but not on MacOS.

	    Contact Technical Support for guidance when enabling this feature
	    in a production environment.

	    See 'p4 help server-resources' for further information.

Minor new functionality in 2023.1 (2023.1/2442900) (2023/05/15)

	#2413707 (Job #19809) * **
	    'p4 sizes' has a new '-C' flag which causes the filesizes reported
	    to be based on the size that the file would be if written with the
	    current client connection; this accounts for line-ending conversion,
	    charset conversion for unicode/utf8/utf16 filetypes (including the
	    value of 'filesys.utf8bom') and keyword expansion for +k type files.
	    These variables may be overridden with the following additional new
	    flags:
	        -B utf8bom     - Override 'filesys.utf8bom' for utf8 type files
	        -K             - Collapse keywords for +k type files
	        -L line-ending - Override the client's line ending setting
	        -Q charset     - Override P4CHARSET for unicode type files

	#2408924 (Job #114224) **
	    Logs now include the amount of time a command has spent in
	    the paused state (e.g. via 'p4 monitor pause').  Tracking output
	    in the P4LOG log file will show lines like '--- paused $seconds'.
	    Version 56 of the 'CommandEnd' event (1.56) in the structured logs
	    has a new field that represents the same data.

	    The 'serverlog.version.N' configurable can be used to pin a
	    structured log file to a specific server version's format.
	    To retain the prior structured log events format, set the
	    'serverlog.version.N' configurable to 55.

	#2399143 (Job #95529) **
	    The new 'p4 integrated -m <max>' option reports the latest
	    <max> integration records.

	#2397436 (Job #112553) **
	    The server on Linux can now protect itself from the OOM killer
	    during database writes.  This happens automatically when the
	    necessary capabilities have been granted to the server executable,
	    e.g. "sudo setcap 'CAP_SYS_RESOURCE=+ep' p4d".  A new server
	    startup log entry is now written with details about the detected
	    level of support for features like this.

	#2396097 (Job #112520) **
	    'p4 topology -m' now allows the user to mark the server record as
	    moved. Please see 'p4 help topology' for details.

	#2394721 (Job #112311) **
	    New server type 'distribution-server', can be used for content
	    distribution, requires new specific license.

	#2380883 (Job #113299) **
	    The 'p4 admin checkpoint' command now supports the parallel
	    checkpoint and multifile options (-p, -m, -N threads).

	#2373917 (Job #112371) **
	    Long-running server processes now release more memory back to
	    the OS, resulting in up to half as much memory usage in some
	    situations.

	#2368014 (Job #112446) * **
	    Compression-related tasks are now ~38% faster on 64-bit X86.
	    E.g. 'p4 submit' on 'binary' filetypes.

	#2367890 (Job #110101) *** ****
	    The default Perforce mimalloc memory manager configurables are now
	    used in the Proxy and Broker.

	#2359921 (Job #111565) **
	    New flag --preserve-change-numbers added to 'p4 push' and 'p4 fetch'
	    may be used to preserve the pushed/fetched change numbers on the
	    target server, command will fail if there are any conflicting
	    changelist numbers.
	    Configurable 'dm.fetch.preservechangenumbers' disabled by default,
	    can be enabled (set to 1) on the target server for the same effect,
	    server restart not required.

	#2358093 (Job #112666) **
	    'p4 topology -D' now accepts the destination server address and the
	    server id to delete the record. Please see 'p4 help topology' for
	    details.

Bugs fixed in 2023.1 Patch 9 (2023.1/2797325) (2025/07/11)

	#2790706 (Jobs #123929) **
	    Fixed istat crash due to inconsistencies in stream spec data
	    originating from pre-19.1 servers. Run 'p4d -xf 123929' to fix
	    inconsistent data.

	#2793722 (Job #127398) **
	    The stream spec permission checking is no longer applied to submits
	    to streams that do not include a change to the stream spec.
	
	#2788870 (Job #127308) **
	    The modtime of binary files with either the +m modifier or with the
	    modtime option enabled in the client are now correctly passed to
	    altsync agents.

	#2775894 (Job #125223) **
	    We were mistakenly checking the permissions to stream spec when doing
	    submit to a classic depot. We have now stopped checking stream permissions
	    when submitting for a classic depot.

	#2729468 (Jobs #107457, #117470, #118998, #117719) * ** *** ****
	    Improve SSL connection establishment under heavy load. In particular,
	    this eliminates the "wrong version number" error when the client
	    is slow to initiate the SSL handshake after establishing the TCP
	    connection.

	    Improve SSL error detection and handling to prevent reporting
	    non-existent SSL errors. Previously this was theoretically
	    possible but had not been observed.

	    Ignore spurious SSL errors detected during SSL client and server
	    initialization to prevent reporting non-existent SSL errors.
	    Previously this was theoretically possible but had not been
	    observed.

	    Make SSL error handling more robust and provide more detailed
	    and user-friendly SSL error messages.

Bugs fixed in 2023.1 Patch 8 (2023.1/2722319) (2025/02/18)

	#2720928 (Job #124712) **
	    In rare cases the setup to run p4diag automatically can fail on
	    Windows Server 2022 Enterprise without a desktop installed.  This
	    has been corrected.

	#2717516 (Job #124613) **
	    Setting 'auth.ldap.ssllevel=2' on a Windows server will no longer
	    allow connections to LDAP servers with self-signed certificates
	    unless that certificate is installed into the CA store or is
	    specified with 'auth.ldap.cafile'.

	#2713835 (Job #124534) **
	    Serverlocks on Windows servers are no longer deleted in such a way
	    that on rare occasions synchronous operations could occur in
	    parallel.

	#2709957 (Job #122963) **
	    On an edge server with configurables submit.allowbgtransfer=1 and
	    submit.autobgtransfer=1 set, when a file edit is submitted without
	    change, the option '-f submitunchanged' of submit would fail to
	    override 'revertunchanged' from client spec and it would result
	    submit failing with: "No files to submit". This change fixes the
	    problem.

	#2707697 (Jobs #124317, #124320) * **
	    P4ALTSYNC agents are now provided with a 'time' field containing
	    the modtime to set on add/added files of type +m or when the
	    modtime client option is enabled.

	#2698519 (Job #120059) **
	    There is a race condition between directory removal and archive
	    creation on an edge during a 'p4 submit -e' for binary file types.
	    This has been fixed.

Bugs fixed in 2023.1 Patch 7 (2023.1/2693640) (2024/12/10)

	#2692636 (Job #122076) *
	    The command-line client on Windows now prints an error when it
	    detects ambiguous argument encoding.

	#2689099 (Job #114420) **
	    'p4 renameuser' no longer takes long write locks on db.monitor.

	#2686336 (Job #122784) **
	    Corrected crash when authentication fails during istat operation.

	#2685392 (Job #122569) * **
	    cURL has been upgraded 8.10.1

	#2685151 (Job #119735) **
	    On Windows, network share access permissions for RCS depot archives
	    can cause a crash.  This has been resolved.

	#2682942 (Job #117647) **
	    A crash in 'p4 transmit -r' has been corrected.

	#2680582 (Job #121121) **
	    Corrected an unexpected 'Files are missing as a result of one or
	    more move operations' error in the fetch, push, and zip commands.

	#2679937 (Job #114613) **
	    If 'p4 unlock -f' is run for a bunch of individual files, it could
	    result unnecessary scanning of db.domain and holding lock on this
	    table for a long period of time, blocking out other commands. This
	    change fixes the problem.

	#2678662 (Job #123034) **
	    Setting a trigger command to an empty string will now result in an
	    error on execution rather than allow the undefined behavior.

	#2676561 (Job #123250) **
	    Security fix. Addressed CVE-2024-10314, CVE-2024-10344 and
	    CVE-2024-10345

	#2671237 (Job #120977) **
	    Fixed a problem where a user with openstreamspec permission could
	    open a stream spec but not edit the stream spec. Also fixed a
	    problem where a user with writestreamspec permission could not edit
	    and save a new stream spec.

	#2670367 (Job #123015) **
	    Fixed locking order bug when obliterating a stream and the
	    configurable index.domain.owner is 1.

	#2666580 (Job #123094) * ** *** ****
	    OpenSSL has been upgraded to 3.0.15

	#2660279 (Job #113058) **
	    Fixed stream spec obliterate problem where a super or admin user
	    could not obliterate the stream spec if configurable
	    dm.protects.streamspec was set to 1.

	#2648895 (Job #117955) * **
	    The zlib deflate operation uses x64 instructions not supported on
	    older CPUs raising an illegal instruction exception. This has been
	    fixed.

	#2640332 (Job #120764) **
	    Removed unnecessary error "Error object passsed to database already
	    with an error" when attempting to switch a stream workspace with
	    unresolved issues. 

Bugs fixed in 2023.1 Patch 6 (2023.1/2633133) (2024/08/01)

	#2632065 (Job #121790) **
	    If a virus scanner locks a portion of an RCS temp file during
	    a pull operation, a crash may occur.  This has been corrected.

	#2631131 (Job #119346) **
	    In case of a commitServer-Edge-ForwardingReplica chain, there was a
	    problem where on ForwardingReplica a 'p4 submit' after Integ/Resolve
	    could fail because archive files were missing on the Edge server.
	    This change fixes the problem by pulling the missing archive-files
	    for the Edge server when needed, allowing 'p4 submit' to succeed.

	#2631129 (Job #119795) **
	    For p4 fetch', if '-I' flag is used the command could fail
	    unexpectedly with a 'Cannot import' error. This change fixes the
	    problem.

	#2630390 (Job #121621) **
	    Setting a very low value of db.checkpoint.reqlevel can allow a
	    multifile parallel checkpoint or dump to skip small db.files.
	    This has been fixed.

	#2620239 (Job #121119) ** ***
	    Fix for client 'clobber' option being dropped when syncing
	    through a proxy.

	#2619518 (Job #119772) **
	    Fixed a journal inconsistency issue on non-Windows platforms caused
	    by killing a running p4 command.

	#2619515 (Job #121240) **
	    The 'p4 lock' and 'p4 unlock' commands can now be cancelled by
	    using 'p4 monitor terminate' or pressing Ctrl-C on the client.

	#2613734 (Job #115232) **
	    This change introduces a new flag, -E, for p4 copy. The -E flag
	    overrides the current setting for the 'dm.integ.tweaks'
	    configurable and its effect is the same as having
	    'dm.integ.tweaks' set to 32. This flag, similar to the
	    configurable 'dm.integ.tweaks', is kept undoc.

	#2613026 (Job #112564) **
	    Added 'dm.protects.exclusioncheck' check to 'p4 servers',
	    'p4 remotes', 'p4 switch', and 'p4 print'.

	#2612594 (Job #114829) **
	    For 'p4 fstat' locking db.revcx for long period could block other
	    commands like 'p4 submit' to run simultaneously. This change fixes
	    the problem by altering db.revcx lock mode to PEEK mode, if
	    db.peeking is set to greater than 2.

	#2611896 (Job #121091) **
	    Fixed reversion of an open stream spec when using the command
	   'p4 revert -a -Si filelist...'.

	#2610973 (Job #120791) **
	    Fixed stream obliterate endless loop problem.

	#2610961 (Job #87618) **
	    Ignored branch records resulting from a cherry-pick now only
	    grant credit for the cherry-picked revisions, rather than
	    implicitly including all prior revisions as is the case for a
	    normal branch record.  This fixes a problem in which an ignored
	    branch of a file that was copied from an old revision did not
	    grant any credit at all on subsequent integrations.

	#2609822 (Job #121079) **
	    Fixed reversion of an open stream spec when using the command
	   'p4 revert -n -Si filelist...'.

	#2609129 (Job #120840) **
	    If a Helix Core Server is configured with no logging, a crash may
	    occur. This has been corrected.

	#2606107 (Job #120474) **
	    Replication of a journal rotation event from an upstream server
	    using journalcopy can no longer enter a loop.

	#2606075 (Job #115864) **
	    The client filesize cache data is now replicated. If filesize data
	    needs to be generated on a replica, the required archives are pulled
	    on-demand if not already replicated.

	#2603176 (Job #110263) **
	    This change fixes a performance problem in 'p4 obliterate' where it
	    was causing excessive time on edge-server to purge related db.label
	    records.

	#2601166 (Job #118997) **
	    'dm.protects.exclusioncheck' no longer blocks the owner of
	     sub-protection table from modifying it.

	#2580610 (Job #113605) **
	    When 'p4 verify -S @=<change#>' is run with a change# that is not
	    shelved, or was shelved previously and then the shelf was deleted,
	    'p4 verify' for this case would incorrectly output files from other
	    shelved changes. This change fixes the problem.

	#2580259 (Job #119810) **
	    The error message "db.group locked after db.stream" no longer
	    appears when submitting a stream spec on an edge server and
	    then issuing a stream command. Previously, this error could
	    occur in P4V or any client that uses a shared connection.

	#2579717 (Job #119203) **
	    A non-parallel checkpoint request using more than one thread did
	    not ensure that the CHECKPOINT_HEADER note appeared as the first
	    line in the output file. Also the same checkpoint ona Windows platform
	    did not use the correct line ending. This has been fixed.


Bugs fixed in 2023.1 Patch 5 (2023.1/2576871) (2024/03/25)

	#2576352 (Job #112901) **
	    If a file was added with the same name as a file which had
	    previously been moved, then a 'p4 verify' might erroneously
	    report the readded file was missing.  This has been fixed.

	#2576348 (Job #119453) **
	    Fixed "db.streamview locked after db.domain" error when submitting
	    an opened stream spec.

	#2570973 (Job #119620) **
	    The initial 2023.1 release changed the order of precedence for
	    multiple 'p4 labelsync' arguments that reference the same depot
	    file.  This change reverts it to the 2022.2 behavior.  Note that
	    the behavior of conflicting labelsync arguments is not currently
	    documented or formally defined, so any workflows that depend on
	    it are unsupported, and may be negatively impacted by this patch.

	#2569182 (Job #114849) **
	    The fix for job #84375 inadvertently caused issues for the
	    'SearchBindPasswd' field of the 'p4 ldap' specification, resulting 
	    in authentication failures when using that LDAP connection; this
	    has been fixed

	#2567499 (Job #119441) **
	    The aggregate MD5 was not created for a parallel checkpoint on a 
	    replica. This has been fixed.

	#2566234 (Jobs #118375, #112333) **
	    On Windows the atomic rename api is limited in scope by the OS.
	    With this change the atomic rename is first attempted, if the
	    atomic rename fails the operation falls back to a copy truncate.

	#2564640 (Job #119493) **
	    Fixed stream view generation at a specific change causing an 
	    endless loop during upgrade, where the loop occurs for the stream's
	    ancestors and the stream itself is not in the loop.

	#2562156 (Job #119336) **
	    OpenLDAP has been upgraded 2.4.17

Bugs fixed in 2023.1 Patch 4 (2023.1/2560797) (2024/02/22)

	#2557622 (Job #119417) **
	    Fixed a crash when 'p4 unshelve -b/-S' encountered an error.

	#2557496 (Job #116539) **
	    It was possible for the table dump command 'p4d -jd' to create
	    the MD5 checksum file even when the command had failed. This
	    has been fixed.

	#2557184 (Job #116293) **
	    'p4 search' could get stuck when putting a read-lock on the ixtext
	    table. This change fixes the problem by switching to lockless access
	    for the table.

	#2557097 (Job #102151) **
	    This change improves 'p4 sync' performance with complex views by 
	    increasing the lookback limit from the previous value of 8 to a 
	    value set by the new configurable maxLookBack with a default value 
	    of 1000.

	#2553623 (Job #119254) **
	    A parallel recovery would leak memory on note entries in the
	    replay file(s). This has been fixed.

	#2552713 (Job #118004) **
	    On-demand fetching of archives from a replica will now cause the
	    commit server to perform a fetch on-demand if the archive has not
	    yet been transferred from an edge server as part of a background
	    submit. The client requesting the file content will no longer
	    receive a librarian error in this situation.

	#2552001 (118593) **
	    An Extension implementing a 'pressure-pause' hook no longer prevents
	    updates to the trigger table.

	#2547700 (Job #118566) **
	    Parallel recoveries did not detect a case handling mismatch between
	    the server and recovery files. This has been fixed.

	#2546175 (Job #118002) **
	    'p4 obliterate' can no longer write archive delete journal notes
	    when a journal rotation is in progress.

	#2538969 (Job #115632) **
	    Fixed auto-shelve of modified content on distribution server when
	    switching between streams.

Bugs fixed in 2023.1 Patch 3 (2023.1/2534247) (2023/12/15)

	#2531279 (Job #116191) **
	    Fixed DVCS fetch, push and zip commands incorrectly reporting a
	    split move across changelists.

	#2531018 (Job #118342) **
	    Fixed segmentation violation with real-time monitoring enabled.

	#2531015 (Job #118395) **
	    Set digest/filesize on text+k files for 'p4 change -t' command.

Bugs fixed in 2023.1 Patch 2 (2023.1/2513900) (2023/11/03)

	#2512341 (Job #117646) **
	    'p4 unshelve' with multiple files as parameters, if this file-list
	    is not sorted, could erroneously report 'can't unshelve (already
	    opened for edit using a different client view path)'. This change
	    fixes the problem.

	#2510947 (Job #117156) **
	    Security fix. Addressed CVE-2023-35767.

	#2510257 (Job #117185) **
	    The 'db.checkpoint.threads' configurable override was not supported
	    for non-parallel checkpoint and dump requests started directly with
	    'p4d' via the '-N threads' option and requests started by the
	    'p4 admin checkpoint' command via the '-n threads' option. This has
	    been fixed.

	#2510009 (Job #112432) **
	    'p4 fetch' and 'p4 push' commands now update LastFetch/LastPush
	    when user provided filespec argument does not limit remote view.

	#2510008 (Job #117155) **
	    Security fix. Addressed CVE-2023-45849.

	#2510007 (Job #90618, #117153) * ** *** ****
	    Security fix. Addressed CVE-2023-5759.

	#2509225 (Job #111780) **
	    For 'p4 shelve' with a lot of content that dedups to existing
	    content, it produces lots of shelf archives to be deleted. In these
	    cases database tables stay locked for extended periods of time,
	    resulting performance degradation for other commands. This change
	    improves on this kind of database lock time.

	#2508491 (Job #116102) * ** *** ****
	    OpenSSL has been upgraded to 3.0.12

	#2508379 (Job #117154) **
	    Security fix. Addressed CVE-2023-45319.

	#2507034 (Job #117098) **
	    For a parallel checkpoint operation, the start time and end time
	    in the checkpoint history record were the same and the
	    'checkpoint' and 'journal' fields in the 'rotate-journal'
	    trigger were not set. This has been fixed.

	#2505991 (Job #117741) * **
	    cURL (for extensions) has been upgraded 8.4.0 to address multiple
	    cURL CVEs: CVE-2023-38545 and CVE-2023-38546

	#2505638 (Job #117392) **
	    There was a data race between threads in the 'p4 storage -U' command.
	    This has been fixed.

	#2498961 (Job #117071) **
	    For 'changes -m -u' it may produce less than m lines, missing valid
	    records in the output. For 'p4 changes' with -i closure option,
	    it may produce result that does not include changes for the files
	    in the source of integration.

	#2498788 (Job #115204) **
	    For 'p4 changes -m<maxChanges> <filepath>@<change>', this change
	    improves performance by quickly skipping over changes that have a
	    non-matching path.

	#2497916 (Job #114933) **
	    When a lazy copy file is sent using 'p4 unzip', 'p4 push' or
	    'p4 fetch' and the source is not part of the package, it will be
	    imported as a non-lazy copy file.

	#2494346 (Job #117292) **
	    Parallel checkpoint and dump requests do not honor the
	    'db.checkpoint.bufsize' configurable. This has been fixed. Note,
	    with this fix, 'filesys.bufsize' in no longer used to determine
	    the checkpoint write size.

	#2494008 (Job #117270) **
	    Fixed a component stream validation error when reparenting a stream.

	#2489953 (Job #117222) **
	    Ensures that 'p4d -jr' command to replay the checkpoint in a
	    non empty directory does not update the existing database files.
	    
	#2489812 (Job #113319) **
	    Using 'p4 unzip' with -I option to exclude integration records
	    no longer causes a crash when the source of a lazy copy is not
	    included in the zip.

	#2489147 (Job #106491) **
	    'p4 zip' correctly includes archives for lazy copies when used with
	    a revision range.

	#2480069 (Job #117741, #117093) **
	    The orphan scanner, 'p4 storage -l', does not work with space in
	    the depotdirectory argument. This has been fixed.

	#2478674 (Job #114250) **
	    Concurrent 'p4 unlock' and 'p4 lock' commands can result a deadlock
	    and system hang. This change fixes the problem.

	#2473031 (Job #115529) **
	    Many 'p4 diff2' commands run simultaneously can hold lock on
	    db.revsh blocking other commands for long periods of time. This
	    change improves performance by making db.revsh access lockless.

	#2468926 (Job #115585) **
	    'p4 topology --explain' now displays the long-form syntax for all
	    the topology options.

	#2468905 (Job #115584) **
	    'p4 topology -m' command now results in topology usage error when
	    used with the options '-a' or '-d'.

	#2468481 (Job #110437) * ** *** ****
	    The network autotune algorithm has been corrected to address the rare
	    cases where large numbers of files being submitted to a Linux server
	    from a Windows client could stall or hang if autotune was enabled
	    (net.autotune=1).

Bugs fixed in 2023.1 Patch 1 (2023.1/2468153) (2023/07/24)

	#2462781 (Job #116121) **
	    P4ALTSYNC will now generate a digest on the fly for files that do
	    not have checksums stored in the database.

	#2462349 (Job #116376) **
	    The precedence of overlapping ChangeView entries, including those
	    generated for streams with multiple "import @change" Paths, was
	    not honored correctly.  This has been fixed.

	#2462206 (Job #116382) **
	    'p4 fstat -e CHANGE' would unnecessarily scan db.rev records for
	    files open in other changelists, making it very inefficient when
	    there were many such files.  This has been fixed.

	#2461940 (Job #116409) **
	    The stdout is now flushed after the starting checkpoint message is
	    generated. This is to help scripts determine the current checkpoint
	    number in use.

	#2461701 (Job #116373) **
	    The p4d help message now includes details on the -xj option to 
	    display db.ckphist records.

	#2460758 (Job #115558) **
	    'p4 unshelve' is no longer allowed for altsync enabled clients when
	    P4ALTSYNC is not configured correctly.

	#2459572 (Job #116348) **
	    Command group logging information is now correctly passed upstream
	    from forwarding-replicas.

	#2459572 (Job #116187) **
	    P4ALTSYNC now works as expected with forwarding replicas.

	#2459439 (Job #114905) **
	    'p4 sync' is now more tolerant of out-of-memory conditions.
	    Note that the extra error handling included in this fix
	    makes 'p4 sync' honor MaxResults for files synced to the
	    workspace or opened, where it previously did not.

	#2459434 (Job #114906) **
	    'p4 filelog' is now more tolerant of out-of-memory conditions.

	#2459094 (Job #114845) **
	    Parallel checkpoint and dump operations now create an aggregate
	    MD5 file to indicate success.

	#2459030 (Job #116306) **
	    Multifile checkpoints and dumps could contain duplicate records.
	    This has been fixed.

	#2458373 (Job #116101) * **
	    cURL (for extensions) has been upgraded 8.1.2 to address multiple
	    cURL CVEs: CVE-2023-28319 and CVE-2023-28322

	#2458299 (Job #116141, #116277) **
	    Fixed problems with upgrade when a stream's view could not be
	    generated.

	#2455092 (Job #114741) **
	    Fixed a stream viewmatch bug where an exclude path might obscure a
	    share path in the generated streamviews.

	#2454956 (Job #115981) **
	    'p4 sync' of a symlink type file with P4ALTSYNC no longer causes
	    an infinite loop.

	#2453231 (Job #114820) **
	    'p4 reload -p' will now correctly report errors to the users and if
	    a journalwait is required, the correct journal offset is now used.

	#2453069 (Job #116086) **
	    'p4 fstat -m1 -S //...` once again performs a correct count of all
	    files.

	#2452668 (Job #116033) **
	    23.1 or later edge servers will now omit the altsync option if the
	    commit server has not been upgraded to at least 23.1.

	#2449758 (Job #116005) **
	    'p4 add' of a file in a client overlay path could unnecessarily scan
	    all mapped db.revhx records.  Fixed.

	#2448511 (Jobs #114708, #114712) **
	    The default fields to the display checkpoint history command,
	    'p4d -xj', now includes the 'end' date stamp of the operation.
	    The journal date field is now set to the current time for a
	    parallel checkpoint or dump request.

	#2447644 (Job #115980) * ** *** ****
	    OpenSSL has been upgraded to 1.1.1u

	#2446515 (Job #114761) **
	    A 'p4 retype -l' request on a revision with a shelved
	    integration generates incorrect records in the db.storage
	    and db.storagesh tables. This has been fixed.

	#2445284 (Job #114041) **
	    For 'p4 submit' of a graph depot repository if the repository
	    includes submodule the submit would corrupt the repository by
	    replacing the submodule with the directory of the submodule. This
	    change fixes the problem.

	#2444620 (Job #115391) **
	    Fixed stream view generation at a specific change causing an 
	    endless loop during upgrade.

	#2444614 (Job #115619) **
	    Fixed a 'p4 zip' bug where one half of a move/delete pair was
	    wrongly declared to be missing.

	#2443869 (Job #115687) **
	    This ensures that the respective intermediary server log is not
	    spammed with the topology server warning related to skipping the
	    capture of the server records in the db.topology table in case of
	    any upstream server that is not upgraded to the version >= 2021.2.

	#2442805 (Job #115714) **
	    'p4 fstat -Oz' did not display lazy copies of purged or
	    deleted revisions. This has been fixed.

Bugs fixed in 2023.1 (2023.1/2442900) (2023/05/15)

	#2440503 (Job #115503) * **
	    cURL (for extensions) has been upgraded 8.0.1 to address multiple
	    cURL CVEs: CVE-2023-27537, CVE-2023-23916, CVE-2023-23915 and
	    CVE-2023-23914

	#2439308 (Job #112863, #115676 ) **
	    The 'p4 failover' command could be run from a server that
	    has been prepared for the 'p4 failback' command by running
	    'p4d -Fm'. Now 'p4 failover' will fail in this situation with
	    an error message instructing the user to run 'p4 failback' instead.

	#2434101 (Job #115504) **
	    For the graph depot command 'p4 receive-pack' if the pack-file
	    includes merge commits, it is possible for the process to take
	    apparently infinite time and never finish. This can show up as a
	    git-connector mirroring update that never completes. This change
	    fixes the problem.

	#2429038 (Job #114515) **
	    Running 'p4 reopen' with multiple file arguments that include
	    moved files could cause a member of a moved pair to fail to be
	    reopened. This has been fixed.

	#2423940 (Job #115128) **
	    This change fixes a bug in 'p4 changes' when it is used with options
	    '-m<maxchanges> <filepath>@<changeNumber>'.
	    If the '-m' value is bigger than 10% of the number of changes, and
	    the filepath does not match the first file in a change but matches
	    other files in the change, then the change would be skipped. This
	    change fixes the problem.

	#2419973 (Job #111678) **
	    Starting with release 2023.1, servers using central authentication
	    (P4AUTH) require the central server's release version to be at least
	    2023.1. The central server must have a valid license, and must
	    be running when its outer servers are starting up or being upgraded.

	#2419808 (Job #113805) **
	    Queries against a client path with an overlay view would previously
	    be applied to all matching depot paths, meaning that a command
	    executed against a single file could return two (or more) results.
	    This behavior has been changed so that as a general rule, commands
	    which are expected to return a single result per file will only
	    return one depot result per client file when a client path is used,
	    according to the precedence specified in the client view.  Queries
	    against depot paths, or queries which permit multiple revisions to
	    be returned per matching file, are not affected by this change.

	#2417619 (Job #113622) **
	    StreamQWorker is now launched at server startup to finish any
	    leftover processing.

	#2417343 (Job #112669)
	    The Helix Core Proxy installers (.exe and .msi) use the property 
	    P4LOG instead of PRXYLOG to specify the name or path and name of
	    the Helix Core Proxy log file. Note that when upgrading from an old
	    version you will need to use the new property name.

	#2415891 (Job #67312) **
	    The Remapped field in stream specifications did not allow a target
	    path of "...", i.e., remapping into the root.  This has been fixed.

	#2415279 (Job #94950) **
	    Improved locking mechanism for the 'p4 unload' operation.

	#2412791 (Job #113923) **
	    When using the 'filesys.atomic.rename' configuration, an incorrect
	    journal size might be reported.  This has been fixed.

	#2411873 (Job #114552) **
	    The performance of 'p4 populate' has been improved by optimising
	    the inserts of integration records.

	#2409959 (Job #112599) **
	    An integration from a stream client might fail with an error
	    message "The target stream of a stream spec integration must
	    be the stream associated with the current client ...".  This
	    error should only occur when using a '-S' parameter with the 
	    integration command, but did sometimes occur when not using
	    '-S' when the parent of the associated stream has a noinherit
	    ParentView setting.  This has been fixed.

	#2409758 (Job #113006) **
	    The 'p4 client -df' command run on an edge server could result
	    in pending changes that are deleted on the edge but not on the
	    commit server. This would cause the db.change table contents on
	    the commit server to differ from the contents on the edge server.
	    This has been fixed.

	#2409493 (Job #112877) **
	    Replication of large transactions is now more efficient. Previously
	    if the upstream server had yet to complete a transaction, replicas
	    could get to the end of the running journal and then restart the
	    replication from the last consistency point; the repeated records
	    would be retained in memory on the replica. Replicas now continue
	    replication of transactions across requests to the upstream server,
	    preventing both repeated network transfers and reducing memory use.

	#2407879 (Job #113804) **
	    Depot paths that are overlaid in the client view (i.e. lower in
	    precedence than a +-mapping for the same client path) are now
	    considered read-only, similarly to &-mapped paths, in order to
	    avoid confusion around adding or branching files within ambiguously
	    mapped client paths.

	#2407742 (Job #113467) **
	    When a file was opened for 'add' with the exclusive open filetype
	    in a distributed environment and was submitted with the 'reopen'
	    option, the exclusive open type would not be set. This has been
	    fixed.

	#2405801 (Job #113970) **
	    Changes to the configuration 'filesys.atomic.rename' now only take
	    effect upon Server startup.  After changing this configurable, a
	    'p4 admin restart' is required.

	#2405137 (Job #113841) **
	    When using the SDP to recover a rotated / numbered journal
	    from an active Server, a sharing violation will no longer occur.

	#2404949 (Job #114063 ) **
	    If 'p4 license -i' fails due to an IP address change in a license
	    file, the error message now shows both the previous and expected IP
	    addresses.

	#2403655 (Job #114243) **
	    Intermediary server (Replica, Proxy, Broker, etc) login no longer
	    leads to the server crash if the commit server starts with an
	    unspecified host address.

	#2403229 (Jobs #113829, #113840) **
	    Parallel checkpoint, dump and recovery operations now create
	    a db.ckphist record. p4d now supports the '-xj' option to
	    display db.ckphist records.

	#2399402 (Job #113830) **
	    The configurable, 'db.checkpoint.nofiles', that specifies the
	    default split parameter for parallel multifile checkpoint
	    and dump operations has been renamed to 'db.checkpoint.numfiles'.
	    The help page and usage message for 'p4 dbstat' have been
	    updated to reflect this name change.

	#2398674 (Job #112505) **
	    The 'p4 group' on a replica working with an older commit server
	    would fail with error: "Unkown field name 'Description'". This
	    change fixes the problem.

	#2394917 (Job #102021) **
	    Replication on edge servers after large obliterates suffered
	    from poor performance due to excessive scanning on the db.domain
	    table. The performance issue caused by excessive
	    scanning of the db.domain table has been fixed.

	#2393897 (Job #113904) **
	    'p4 shelve -f -c' no longer leads to the deletion of shared shelve
	    archive files on the replica server.

	#2393497 (Job #114030) ****
	    Broker now handles MaxMemory when provided by the Helix Core
	    Command Line client (P4).

	#2393485 (Job #113985) **
	    Using the '-p' option to 'p4 dbstat' with a worklevel of 1
	    could cause a server crash. This has been fixed.

	#2392837 (Job #113967) **
	    Under certain configuration limitations 'p4 fstat' could throw an
	    exception.  This has been fixed.

	#2392735 (Job #113267) **
	    For 'p4 sync -E <path>@<label>', when label includes an unknown
	    change number, sync would incorrectly succeed by syncing to the
	    latest committed change. This change corrects it to fail with a
	    proper error message.

	#2932312 (Job #112760) **
	    Parallel checkpoint and dump operations now create an MD5 file
	    in the checkpoint/dump directory for each checkpoint/dump output
	    file created.

	#2391631 (Job #113971) **
	    Upgrade steps no longer run prematurely when being rerun on
	    a replica.

	#2391143 (Job #113915) **
	    Enabling the buffering of server logs could cause a deadlock.
	    This has been fixed.

	#2390874 (Job #87716) **
	    Users of type 'operator' can now run 'p4 journals'.

	#2390593 (Job #112639) **
	    This change improves performance for 'p4 changes' when it is used
	    with options: '-m<maxchanges> <filepath>@<changeNumber>'.
	    This is specially effective if filepath is not too narrow and
	    changes with matching files are not rare. If this is not the case,
	    this change can detect it and will follow the old logic so that
	    performance never gets noticeably worse.

	#2390102 (Jobs #23789, #113496, #113768) **
	    'p4 dirs' and all commands that accept branch mappings as command
	    arguments (e.g. 'p4 diff2 dir1/... dir2/...') produced incorrect
	    or duplicate results when using client paths in a client with
	    overlay mappings.  This has been fixed by disregarding overlays
	    when deriving branch mappings between depot paths from client
	    mappings; only the higher precedence depot path will be considered
	    in the generated mapping and in the command result when a client
	    path is specified.

	#2389867 (Job #113831) **
	    Rerunning the last number of upgrade steps by setting the 'upgrade'
	    counter back using the 'p4 counter -f upgrade <n-known-good>'
	    command on the innermost server and then restarting the
	    innermost server now behaves correctly: the upgrade steps beyond
	    the value of the 'upgrade' counter run and then replicate outward.

	#2389146 (Job #113495) **
	    The 'p4 fstat -L' command now performs less database work and
	    consumes fewer resources when run from workspaces with large
	    numbers of files synced.

	#2388212 (Job #111114) **
	    Changes to Extension instance configurations that resulted in
	    changed depot paths on events taking a depot path no longer
	    produce duplicated events for the Extension instance.

	#2387362 (Job #113622) **
	    Fixed a problem where viewmatch streamviews did not update after
	    child stream was deleted.

	#2384150 (Job #101277) **
	    The 'journal-rotate-lock' and 'journal-rotate' triggers are now
	    invoked on replicas that use journalcopy (e.g. standby servers)
	    at the point that that the 'pull -L' completes the replay of a
	    rotated journal.

	#2380509 (Job #112645) **
	    If the configurable 'dm.stream.components' is set 0, the commands
	    'p4 files', 'p4 fstat', and 'p4 dirs' no longer show files or dirs
	    which originate from component views.

	#2380501 (Job #112771) **
	    'p4 fstat' now displays pathPermissions of a file as well as the
	    effectiveComponentType if the file comes from a component view.
	    The pathPermissions value will either be 'readonly' (not submitable)
	    or 'writable' (submitable).  The effectiveComponent type is the
	    most restrictive component type in the chain of components from
	    which the file originates; the values will be 'readonly',
	    'writeimport+', or 'writeall'.

	#2380057 (Job #109988) **
	    'p4 info' run from P4V no longer takes an excessive number of
	    database locks.

	#2377082 (Job #112616) **
	    Since we changed the storage default to 'lbr.autocompress=1', The +D
	    type modifier that is entered through a typemap is ignored. This
	    change fixes the problem.

	#2376914 (Job #113459) **
	    An edge server chained to another edge server now correctly records
	    the target serverid in 'p4 topology'.

	#2376517 (Job #113377) **
	    'p4 storage -c changenum' did not work when 'changenum' had
	    been renumbered. This has been fixed.

	#2375904 (Job #112472) **
	    Improve performance of end of line handling during checkpointing
	    for Windows.

	#2375617 (Job #111069) **
	    Ensures that the sensitive data such as address, root, etc are
	    hidden in the Broker and Proxy info output for the unauthorised/
	    unauthenticated user when dm.info.hide is set.

	#2373920 (Job #113366) **
	    LuaSQLite3 for Extensions has been updated to the latest
	    revision (ba0ad5e0f0).

	#2372354 (Job #112649)
	    Added a message that appears when opening a file in a writable
	    component for a stream client with the StreamAtChange field set.
	    The message indicates that due to the StreamAtChange field being
	    set, the file cannot be submitted.

	#2372146 (Job #113364) **
	    SQLite3 for Extensions has been updated to version 3.40.0.

	#2369295 (Job #111274, #108480) **
	    'p4 topology' now displays the IP address that the server listens
	    on instead of the end user client IP address for the intermediary
	    servers.

	#2368325 (Job #112654) **
	    Long lock wait timing is now recorded correctly at monitor level 5+.

	#2367095 (Job #110980) **
	    Under rare circumstances, 'p4 istat -ac //taskName' might give
	    incorrect integToParent results if the workspace was not associated
	    with the task stream.  This has been fixed.

	#2363670 (Job #113021) **
	    Ensured that when a client of an edge server submits changes to the
	    Paths, Remapped, or Ignored fields of a stream spec, the client view
	    is updated to reflect those changes.

	#2363352 (Job #91936) **
	    'p4 integrate' will now limit the total number of integration
	    actions and branched files that it will scan in search of an ideal
	    merge base.  These limits are set to 100k and 100 respectively, and
	    can be modified via the (undoc) 'dm.integ.maxact' and
	    'dm.integ.maxbranch' configurables.  If one of the limits is
	    exceeded, the integration will not fail; the base will be chosen
	    based on the data that was gathered before the limit.

	#2362994 (Job #106523, #106524) **
	    'p4 unzip -n' will now scan the entire archive for possible missing
	    archive errors.

	#2362883 (Job #112710) **
	    When 'p4 clean' updated a file on a workspace to match the depot,
	    the 'syncTime' field of the have record was not updated. This
	    would cause performance issues with 'p4 clean -m' since it
	    could not detect when MD5 calculations were not needed.
	    This has been fixed.

	#2362779 (Job #110998) **
	    This change improves performance for p4api when processing specs 
	    with large changelists. The performance improvement is also
	    noticeable in 'p4 -ztag describe <changenumber>' and 'p4 changes'
	    with option "--field Files+=<additional-filename>" when there is
	    already a large changelist.

	#2359840 (Job #111928) **
	    When 'p4 unlock' is run on an edge server, requests sent to the
	    commit server are now batched when unlocking globally locked files.

	#2358404 (Job #112807) **
	    When failover through failback is repeated using the same servers
	    on Windows, the second 'p4 failback' command may fail with the
	    error 'journal exists and unexpectedly not empty'. This has been
	    fixed.

	#2357792 (Job #112233) **
	    If a user tried to start a former master after failover or failback
	    before running 'p4d -Fm', 'p4d -Fs', or changing the server.id,
	    they were advised to change the server.id. The error now does
	    not tell the user to change server.id when failback has occurred,
	    or when failback may be run from that P4ROOT.

	#2357682 (Job #106649) **
	    The Extension API call GetAutoClientApi() no longer creates an
	    invalid ticket when there is a server hostname lookup mismatch.

	#2354911 (Job #112681) **
	    Not performing a journal rotation after a failover through failback
	    cycle before repeating failover through failback with the same
	    servers could cause the second failback to fail. This has been
	    fixed.

	#2352097 (Job #101073) **
	    Performance is improved for 'p4 change -o' of shelved restricted
	    changes when the user has no access to the paths in the
	    restricted change.

	#2352094 (Job #112370) **
	    'p4 sync' for LFS files in graph depot on a replica could fail by
	    just generating LFS file attributes as file contents. This change
	    fixes the problem.

	#2351916 (Job #110507) **
	    'p4 zip -c' without file arguments no longer causes a server
	    crash.

	#2351732 (Job #96964, #106560) **
	    Some integrations involving a target task stream resulted in a
	    baseless merge when the base did exist as a file that was indirectly
	    related. This has been fixed.

	#2350523 (Job #112234) **
	    When 'failbackconfigs' is missing when running 'p4d -Fs',
	    the error would report that 'failoverconfigs' is missing.
	    This has been fixed.

	#2344992 (Job #112360) **
	    Revoking list access will now revoke stream spec access.

	#2342205 (Job #093477) **
	    'p4 unshelve' no longer excessively scans db.workingx when used in
	    conjunction with a file argument.

	#2341866 (Job #112274) **
	    Client-supplied command identifiers are properly escaped in the log.

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

Major new functionality in 2022.2 (2022.2/2369846) (2022/11/16)

	#2323550 (Jobs #111683, #111684, #111685) **
	    Added Writable Components feature, with new stream component types
	    writeimport+ and writeall.  If a stream component is defined as
	    writeimport+ in a stream consumer, then the stream consumer clients
	    can open for edit and submit changes to any files in import+ paths
	    in the stream component.  If a stream component is defined as
	    writeall, then the stream consumer clients can open for edit and
	    submit changes to files in share, isolate, or import+ paths in the
	    stream component.

	#2302144 (Jobs #41853, #109932, #110537, #110737) **
	    Added parallel checkpointing, dumping and recovery.
	    The 'p' suboption to -jc, -jd and -jr allows the use of
	    concurrent threads writing/reading to multiple checkpoint
	    files, one per database table. For example:
	        $ p4d -r . -N 4 -jcp cp
	        Checkpointing files to cp.ckp.9154...
	        $ p4d -r . -N 4 -jrp cp.ckp.9154
	        Recovering from cp.ckp.9154...
	    The checkpoint files are placed into a newly created directory
	    based on the checkpoint/dump prefix. The number of threads to use
	    is controlled by the 'db.checkpoint.threads' configurable.
	    This can be overridden on the command line for checkpoint and
	    recovery with the '-N threads' option.

	    Changes to 'db.checkpoint.threads' will apply to the next checkpoint
	    or journal dump; no server restart is required.

Minor new functionality in 2022.2 (2022.2/2369846) (2022/11/16)

	#2382272 (Job #109101) **
	    BTree consolidation and repair merges pages where possible
	    and can recover lost internal node space.
	    Run 'p4d -xrc' on a single table or all tables.
	    Set 'db.internal.repair' configurable to 1 to have runtime
	    processes do space recovery, including internal node space
	    if it avoids pages splits.

	#2360521 (Jobs #100355, #113009) **
	    When you log in with a license that will soon expire, a warning now
	    appears about the need to update the license to avoid downtime. This
	    change introduces two new configurables:
	    1) 'auth.licenseexpiry.warn', which enables the license expiry
	       warning:
	       0: no license expiry warning
	       1: Warn only users with permission level 'admin' or higher, when
	          they log in (default)
	       2: Warn all users when they log in
	    2) 'auth.licenseexpiry.warnthreshold', is the number of days prior
	       to license expiry when the warnings start to appear. The default
	       is 7 days.

	    Changes to either 'auth.licenseexpiry.warn' or
	    'auth.licenseexpiry.warnthreshold' will apply to all new logins; no
	    server restart required.

	#2342301 (Job #109600) **
	    'p4 topology' now reports:
	    - the context of capturing the topology server records
	    - the address, destination address and the server-id of the
	      respective target server.
	    The prior '-d' flag has been replaced by the '-D' flag, which
	    permanently removes topology server records.
	    The '-d' flag's new behavior is to mark a server in the topology
	    as deleted whilst leaving the history intact. For more details,
	    please see 'p4 help topology'.

	#2331726 (Job #109101) **
	    BTree consolidation and repair merges pages where possible
	    and can recover lost internal node space.
	    Run 'p4d -xrc' on a single table or all tables.
	    Set 'db.internal.repair' configurable to 1 to have runtime
	    processes do space recovery, including internal node space
	    if it avoids pages splits.

	#2330294 (Job #111573) **
	    Server log files now include an estimate of the memory used
	    by the server to process a command.  Tracking output in the
	    P4LOG log file now includes output like
	    '--- memory cmd/proc 6mb/10mb' that represents megabytes of
	    committed, touched memory used by a command.  The 'cmd' portion
	    is what the particular command being logged used, and the 'proc'
	    portion is what the peak usage for the process/thread is - this
	    comes into play when multiple commands are run on the same
	    connection.

	    Version 55 of the 'CommandEnd' event (1.55) in the structured logs
	    have two new fields that represent the same data.

	    The 'serverlog.version.N' configurable can be used to pin a
	    structured log file to a specific server version's format.
	    To retain the prior structured log events format, set the
	    'serverlog.version.N' configurable to 54.

	#2328306 (Job #111568) **
	    The track output in server log files now include network stats for
	    upstream server-to-server communication as well as with the client
	    or downstream server. These stats are recorded as additional 'rpc'
	    lines with the target server's P4PORT in parentheses in the P4LOG
	    file and as additional 'NetworkPerformance' events in the structured
	    logs at version 55 (8.55), where the 'f_trackType' field has the
	    P4PORT appended to the 'rpc' string after a '-'.  Note that the
	    himark is not used on client connections (including connections
	    from servers to upstream servers), and so will remain at the default
	    value of 2000.

	    The 'serverlog.version.N' configurable can be used to pin a
	    structured log file to a specific server version's format.
	    To retain the prior structured log events format, set the
	    'serverlog.version.N' configurable to 54.

	#2330292 (Job #111584) **
	    Server triggers have a new 'serverprocesspid' variable provided to
	    them that is the PID of the entire server process on both Windows
	    and Unix platforms.  This compliments the existing 'serverpid'
	    variable which is the thread ID that's handling a command on
	    Windows, and the PID on Unixes.

	#2328638 (Job #110937) **
	    Two new options has been added for 'p4 changes':
	    --stream, is for filtering result to changes that contain a stream.
	    --nostream, is for filtering result to changes that do not contain
	    a stream.

	#2328154 (Job #59960) **
	    Group specifications can now specify a memory limit (MaxMemory) for
	    commands run by group members.  See 'p4 help maxmemory' for details.
	    The limit is applied each time a single command is run, and does
	    not affect groups of commands as a whole.  Note that the memory
	    limit is best-effort and that commands may exceed the limit for a
	    time between checks.  P4API programs that run multiple commands
	    on a single connection will be disconnected from the server when
	    the memory limit is hit.  Note that the memory limit is more
	    accurate at larger values than smaller ones (as in single or double
	    digit) due to differences in when/where memory is sampled.

	#2328077 (Job #83788) **
	    The new 'p4 renameclient' command renames a client to a new client
	    name by modifying database records pertaining to the old client.
	    This command creates the new client, changes database records for
	    existing work in progress to use the new client name, and then
	    deletes the old client from the domain table. The entities that are
	    modified include pending and shelved changes owned by the old
	    client, fixes to pending changes by the old client, files opened by
	    the client, and the client's have list. The 'run.renameclient.allow'
	    configurable can be used to restrict users that can run the
	    'p4 renameclient' command.

	#2325440 (Job #110831) **
	    Added new '--use-stream-change=N' option for 'p4 sync' for syncing
	    stream clients to use the stream spec view at or before change N.
	    If no change N is specified, then the maximum change specifier in
	    the file list is used.  For N=0 or N=head, the current stream spec
	    view is used.

	    Also added configurable 'dm.sync.streamchange', which takes values
	    0 (default) or 1.  When set to 1, 'p4 sync' will implicitly use 
	    '--use-stream-change=N', where N is the maximum change specifier
	    used in the file list;  if no change specifier is used then the
	    current stream spec view is used.

	    If the StreamAtChange field is set in the client specification,
	    then that value overrides any value given for '--use-stream-change'.

	    Changes to 'dm.sync.streamchange' will apply to all new commands;
	    no server restart required.

	#2323074 (Job #21537) **
	    On Windows Server 2016 and newer, journal rotation can be performed
	    using an atomic rename.  Previous journal rotation was performed
	    as a copy and truncate operation.  The atomic rename journal
	    rotation offers a significant performance gain only on NTFS
	    filesystems.  By default the 'filesys.atomic.rename' configurable
	    is set to 0 (disabled).

	    Changes to 'filesys.atomic.rename' will not apply until the server
	    has been restarted.

	#2315124 (Job #111351) **
	    Structured logging improvements.
	    This release adds a new command group identifier which clients
	    can use to tie multiple events to a single action for improved
	    traceability. The command group identifier has been added to all
	    structured log event types that contain command fields,
	    positioned at column 14 (after the command arguments field),
	    increasing the version number of those events to 55 (e.g. 2.55).

	    The 'serverlog.version.N' configurable can be used to pin a
	    structured log file to a specific server version's format.
	    To retain the prior structured log events format, set the
	    'serverlog.version.N' configurable to 54.

	#2306230 (Job #103797) **
	    The -jr recovery command to p4d now accepts the '-S' option.
	    Using this option ignores all storage records in the replay
	    file and instead recalculates the net storage reference count
	    change from the rev records. It applies the recalculated
	    reference count at the end of the replay or end of each
	    transaction. The '-S' option cannot be combined with the '-m'
	    option.
	    This option has a performance impact on journal replay and is
	    intended for use under the guidance of Perforce Support.

	#2306041 (Job #106424) **
	    The new '--streamviews' option has been added to the p4 fstat,
	    p4 files, and p4 dirs commands to report files and directories from
	    stream Paths and Components. Also known as stream materialization.

	#2300668 (Job #104865) **
	    The command identifier (see #1881458) is now exposed to triggers
	    via the new 'commandIdent' variable.

	#2280769 (Job #105490) **
	    For 'p4 sync' with a changelist argument, the new -E option causes
	    the command to fail with a message if the changelist is not a
	    committed change. If a command is run with multiple file arguments,
	    a message line indicates any invalid change in an argument.
	    When the command is run as 'p4 sync -E <filepath>@now' on a replica,
	    the replica waits for any changes that are in transit to be
	    replicated before the sync begins.

	#2261234 (Job #108124) **
	    New 'failed-back' trigger and extension types have been added.
	    Either or both may be fired when a standby server becomes the
	    new master and first starts up during a successful
	    'p4 failback' command.

	#2255753 (Job #109524) **
	    'p4 storage' now reports whether an archive is shelved or committed.

Bugs fixed in 2022.2 Patch 5 (2022.2/2693782) (2024/12/10)

	#2692632 (Job #122076) *
	    The command-line client on Windows now prints an error when it
	    detects ambiguous argument encoding.

	#2687911 (Job #114420) **
	    'p4 renameuser' no longer takes long write locks on db.monitor.

	#2686782 (Job #119735) **
	    On Windows, network share access permissions for RCS depot archives
	    can cause a crash.  This has been resolved.

	#2686774 (Job #122784) **
	    Corrected crash when authentication fails during istat operation.

	#2684592 (Job #122569) * **
	    cURL has been upgraded 8.10.1

	#2683554 (Job #117647) **
	    A crash in 'p4 transmit -r' has been corrected.

	#2680587 (Job #121121) **
	    Corrected an unexpected 'Files are missing as a result of one or
	    more move operations' error in the fetch, push, and zip commands.

	#2678663 (Job #123034) **
	    Setting a trigger command to an empty string will now result in an
	    error on execution rather than allow the undefined behavior.

	#2676562 (Job #123250) **
	    Security fix. Addressed CVE-2024-10314, CVE-2024-10344 and
	    CVE-2024-10345

	#2670658 (Job #123015) **
	    Fixed locking order bug when obliterating a stream and the
	    configurable index.domain.owner is 1.

	#2670355 (Job #120977) **
	    Fixed a problem where a user with openstreamspec permission could
	    open a stream spec but not edit the stream spec. Also fixed a
	    problem where a user with writestreamspec permission could not edit
	    and save a new stream spec.

	#2666580 (Job #123094) * ** *** ****
	    OpenSSL has been upgraded to 3.0.15

	#2659725 (Job #113058) **
	    Fixed stream spec obliterate problem where a super or admin user
	    could not obliterate the stream spec if configurable
	    dm.protects.streamspec was set to 1.

Bugs fixed in 2022.2 Patch 4 (2022.2/2637361) (2024/08/09)

	#2633516 (Job #121790) **
	    If a virus scanner locks a portion of an RCS temp file during
	    a pull operation, a crash may occur.  This has been corrected.

	#2630647 (Job #120764) **
	    Removed unnecessary error "Error object passsed to database already
	    with an error" when attempting to switch a stream workspace with
	    unresolved issues. 

	#2629260 (Job #119795)
	    For p4 fetch', if '-I' flag is used the command could fail
	    unexpectedly with a 'Cannot import' error. This change fixes
	    the problem.

	#2610983 (Job #121091) **
	    Fixed reversion of an open stream spec when using the command
	   'p4 revert -a -Si filelist...'.

	#2609848 (Job #120791) **
	    Fixed stream obliterate endless loop problem.

	#2609806 (Job #87618) **
	    Ignored branch records resulting from a cherry-pick now only
	    grant credit for the cherry-picked revisions, rather than
	    implicitly including all prior revisions as is the case for a
	    normal branch record.  This fixes a problem in which an ignored
	    branch of a file that was copied from an old revision did not
	    grant any credit at all on subsequent integrations.

	#2609372 (Job #121079) **
	    Fixed reversion of an open stream spec when using the command
	   'p4 revert -n -Si filelist...'.

	#2609129 (Job #120840) **
	    If a Helix Core Server is configured with no logging, a crash may
	    occur. This has been corrected.

	#2602112 (Job #102151) **
	    This change improves 'p4 sync' performance with complex views by
	    increasing the lookback limit from the previous value of 8 to a
	    value set by the new configurable maxLookBack with a default value
	    of 1000.

	#2585216 (Job #119810) **
	    The error message "db.group locked after db.stream" no longer
	    appears when submitting a stream spec on an edge server and
	    then issuing a stream command. Previously, this error could
	    occur in P4V or any client that uses a shared connection.

	#2573911 (Job #119453) **
	    Fixed "db.streamview locked after db.domain" error when submitting
	    an opened stream spec.

	#2573498 (Job #112901) **
	    If a file was added with the same name as a file which had
	    previously been moved, then a 'p4 verify' might erroneously
	    report the readded file was missing.  This has been fixed.

	#2568943 (Jobs #118375, #112333) **
	    On Windows the atomic rename api is limited in scope by the OS.
	    With this change the atomic rename is first attempted, if the
	    atomic rename fails the operation falls back to a copy truncate.

	#2563512 (Job #119336) **
	    OpenLDAP has been upgraded 2.4.17

	#2546174 (Job #118002) **
	    'p4 obliterate' can no longer write archive delete journal notes
	    when a journal rotation is in progress.

Bugs fixed in 2022.2 Patch 3 (2022.2/2531894) (2023/12/11)

	#2530935 (Job #118342) **
	    Fixed segmentation violation with real-time monitoring enabled.

	#2527034 (Job #112432) **
	    'p4 fetch' and 'p4 push' commands now update LastFetch/LastPush
	    when user provided filespec argument does not limit remote view.

        #2523176 (Job #110437) * ** *** ****
            The network autotune algorithm has been corrected to address the rare
            cases where large numbers of files being submitted to a Linux server
            from a Windows client could stall or hang if autotune was enabled
            (net.autotune=1).

	#2521554 (Job #114849) **
	    The fix for job #84375 inadvertently caused issues for the
	    'SearchBindPasswd' field of the 'p4 ldap' specification, resulting 
	    in authentication failures when using that LDAP connection; this
	    has been fixed

	#2519170 (Job #117156) **
	    Security fix. Addressed CVE-2023-35767.

	#2519169 (Job #117155) **
	    Security fix. Addressed CVE-2023-45849.

	#2518890 (Job #90618, #117153) * ** *** ****
	    Security fix. Addressed CVE-2023-5759.

	#2518730 (Job #117154) **
	    Security fix. Addressed CVE-2023-45319.

	#2510694 (Job #117392) **
	    There was a data race between threads in the 'p4 storage -U' command.
	    This has been fixed.

	#2508491 (Job #116102) * ** *** ****
	    OpenSSL has been upgraded to 3.0.12

	#2506626 (Job #117741) * **
	    cURL (for extensions) has been upgraded 8.4.0 to address multiple
	    cURL CVEs: CVE-2023-38545 and CVE-2023-38546

	#2506262 (Job #116191) **
	    Fixed DVCS fetch, push and zip commands incorrectly reporting a
	    split move across changelists.

	#2497917 (Job #114933) **
	    When a lazy copy file is sent using 'p4 unzip', 'p4 push' or
	    'p4 fetch' and the source is not part of the package, it will be
	    imported as a non-lazy copy file.

	#2497043 (Job #113319) **
	    Using 'p4 unzip' with -I option to exclude integration records
	    no longer causes a crash when the source of a lazy copy is not
	    included in the zip.

	#2496086 (Job #116306) **
	    Multifile checkpoints and dumps could contain duplicate records.
	    This has been fixed.

	#2496084 (Job #112713) **
	    The parallel dump operation, 'p4d -jdp', now supports the
	    '-N threads' option to override the 'db.checkpoint.threads'
	    configurable.

	#2494347 (Job #117292) **
	    Parallel checkpoint and dump requests do not honor the
	    'db.checkpoint.bufsize' configurable. This has been fixed. Note,
	    with this fix, 'filesys.bufsize' in no longer used to determine
	    the checkpoint write size.

	#2493794 (Job #117270) **
	    Fixed a component stream validation error when reparenting a stream.

	#2489963 (Job #117222) **
	    Ensures that 'p4d -jr' command to replay the checkpoint in a
	    non empty directory does not update the existing database files.

	#2489807 (Job #106491) **
	    'p4 zip' now correctly includes archives for lazy copies when used
	    with a revision range.

	#2480068 (Job #117093) **
	    The orphan scanner, 'p4 storage -l', does not work with space in
	    the depotdirectory argument. This has been fixed.

	#2476244 (Job #114250) **
	    Concurrent 'p4 unlock' and 'p4 lock' commands can result a deadlock
	    and system hang. This change fixes the problem.

Bugs fixed in 2022.2 Patch 2 (2022.2/2468771) (2023/07/25)

	#2466052 (Job #116141, #116277) **
	    Fixed problems with upgrade when a stream's view could not be
	    generated.

	#2462372 (Job #116376) **
	    The precedence of overlapping ChangeView entries, including those
	    generated for streams with multiple "import @change" Paths, was
	    not honored correctly.  This has been fixed.

	#2458374 (Job #116101) * **
	    cURL (for extensions) has been upgraded 8.1.2 to address multiple
	    cURL CVEs: CVE-2023-28319 and CVE-2023-28322

	#2455674 (Job #114761) **
	    A 'p4 retype -l' request on a revision with a shelved
	    integration generates incorrect records in the db.storage
	    and db.storagesh tables. This has been fixed.

	#2452669 (Job #114820) **
	    'p4 reload -p' will now correctly report errors to the users
	    and if a journalwait is required, the correct journal offset
	    is now used.

	#2447644 (Job #115980) * ** *** ****
	    OpenSSL has been upgraded to 1.1.1u

	#2441682 (Job #115619) **
	    Fixed a 'p4 zip' bug where one half of a move/delete pair was
	    wrongly declared to be missing.

	#2441537 (Job #115676) **
	    The 'p4 failover' command could be run from a server that
	    has been prepared for the 'p4 failback' command by running
	    'p4d -Fm'. Now 'p4 failover' will fail in this situation with
	    an error message instructing the user to run 'p4 failback' instead.

	#2441108 (Job #115503) * **
	    cURL (for extensions) has been upgraded 8.0.1 to address multiple
	    cURL CVEs: CVE-2023-27537, CVE-2023-23916, CVE-2023-23915 and
	    CVE-2023-23914

	#2441105 (Job #115687) **
	    This ensures that the respective intermediary server log is not
	    spammed with the topology server warning related to skipping the
	    capture of the server records in the db.topology table in case of
	    any upstream server that is not upgraded to the version >= 2021.2.

	#2433554 (Job #115391) **
	    Fixed stream view generation at a specific change causing an 
	    endless loop during upgrade.

	#2432065 (Job #114515) **
	    Running 'p4 reopen' with multiple file arguments that include
	    moved files could cause a member of a moved pair to fail to be
	    reopened. This has been fixed.

	#2425796 (Job #113467) **
	    When a file was opened for 'add' with the exclusive open filetype
	    in a distributed environment and was submitted with the 'reopen'
	    option, the exclusive open type would not be set. This has been
	    fixed.

	#2420407 (Job #112599) **
	    An integration from a stream client might fail with an error
	    message "The target stream of a stream spec integration must
	    be the stream associated with the current client ...".  This
	    error should only occur when using a '-S' parameter with the
	    integration command, but did sometimes occur when not using
	    '-S' when the parent of the associated stream has a noinherit
	    ParentView setting.  This has been fixed.

	#2419898 (Job #113622) **
	    StreamQWorker is now launched at server startup to finish any
	    leftover processing.

Bugs fixed in 2022.2 Patch 1 (2022.2/2407422) (2023/02/14)

	#2406330 (Job #106649, #114300) **
	    The Extension API call GetAutoClientApi() no longer creates an
	    invalid ticket when there is a server hostname lookup mismatch.

	#2404727 (Job #114243) **
	    Intermediary server (Replica, Proxy, Broker, etc) login no longer
	    leads to the server crash if the commit server starts with an
	    unspecified host address.

	#2403887 (Job #114346) * ** *** ****
	    OpenSSL has been upgraded to 1.1.1t

	#2403048 (Job #113841) **
	    When using the SDP to recover a rotated / numbered journal
	    from an active Server, a sharing violation will no longer occur.

	#2401810 (Job #113985) **
	    Using the '-p' option to 'p4 dbstat' with a worklevel of 1
	    could cause a server crash. This has been fixed.

	#2400081 (Job #114030) ****
	    Broker now handles MaxMemory when provided by the Helix Core
	    Command Line client (P4).

	#2398904 (Job #112505) **
	    The 'p4 group' on a replica working with an older commit server
	    would fail with error: "Unkown field name 'Description'". This
	    change fixes the problem.

	#2398784 (Job #113891) **
	    'p4 fstat' would report a readonly pathPermissions for a stream
	    client share path which was writable.  This has been fixed.   

	#2396783 (Job #113923) **
	    When using the 'filesys.atomic.rename' configuration, an incorrect
	    journal size might be reported.  This has been fixed.

	#2394719 (Job #113904) **
	    'p4 shelve -f -c' no longer leads to the deletion of shared shelve
	    archive files on the replica server.

	#2394518 (Job #113267) **
	    For 'p4 sync -E <path>@<label>', when label includes an unknown
	    change number, sync would incorrectly succeed by syncing to the
	    latest commited change. This change corrects it to fail with a
	    proper error message.

	#2394123 (Job #113970) **
	    Changes to the configuration 'filesys.atomic.rename' now only take
	    effect upon Server startup.  After changing this configurable, a
	    'p4 admin restart' is required.

	#2393903 (Job #113200) * **
	    cURL (for extensions) has been upgraded 7.86.0
	    Lua-cURLv3 (for extensions) has been upgraded 0.3.13

	#2393803 (Job #113971) **
	    Upgrade steps no longer run prematurely when being rerun on
	    a replica.

	#2393215 (Job #113831) **
	    Rerunning the last number of upgrade steps by setting the 'upgrade'
	    counter back using the 'p4 counter -f upgrade <n-known-good>'
	    command on the innermost server and then restarting the
	    innermost server now behaves correctly: the upgrade steps beyond
	    the value of the 'upgrade' counter run and then replicate outward.

	#2393213 (Job #110980) **
	    Under rare circumstances, 'p4 istat -ac //taskName' might give
	    incorrect integToParent results if the workspace was not associated
	    with the task stream.  This has been fixed.

	#2392882 (Job #111114) **
	    Changes to Extension instance configurations that resulted in
	    changed depot paths on events taking a depot path no longer
	    produce duplicated events for the Extension instance.

	#2392841 (Job #113495) **
	    The 'p4 fstat -L' command now performs less database work and
	    consumes fewer resources when run from workspaces with large
	    numbers of files synced.

	#2392308 (Job #113915) **
	    Enabling the buffering of server logs could cause a deadlock.
	    This has been fixed.

	#2392307 (Job #101277) **
	    The 'journal-rotate-lock' and 'journal-rotate' triggers are now
	    invoked on replicas that use journalcopy (e.g. standby servers)
	    at the point that that the 'pull -L' completes the replay of a
	    rotated journal.

	#2391399 (Job #113967) **
	    Under certain configuration limitations 'p4 fstat' could throw an
	    exception.  This has been fixed.

	#2386857 (Job #113299) **
	    The 'p4 admin checkpoint' command now supports the parallel
	    checkpoint and multifile options (-p, -m, -N threads).

	#2386457 (Job #113622) **
	    Fixed a problem where viewmatch streamviews did not update after
	    child stream was deleted.

	#2385057 (Job #112360) **
	    Revoking list access will now revoke stream spec access.

	#2382644 (Job #112863) **
	    The 'p4 failover' command could be run from a server that
	    is eligible for the 'p4 failback' command. Now 'p4 failover' is
	    only allowed in this scenario when used with the '--force' option.

	#2382272 (Job #109101) **
	    The 'p4d -xrc' maintenance command has been added to consolidate
	    lost free space within database pages reported by 'p4d -xv' with
	    the message 'some pages have lost unused space'; if you have not
	    seen this warning, 'p4d -xrc' will not do anything but may hold
	    locks on the database for a significant period of time.

	    This command will not cause the database files to change size.

	#2381400 (Job #112233) **
	    If a user tried to start a former master after failover or failback
	    before running 'p4d -Fm', 'p4d -Fs', or changing the server.id,
	    they were advised to change the server.id. The error now does
	    not tell the user to change server.id when failback has occurred,
	    or when failback may be run from that P4ROOT.

	#2381087 (Job #109988) **
	    'p4 info' run from P4V no longer takes an excessive number of
	    database locks.

	#2380287 (Job #112807) **
	    When failover through failback is repeated using the same servers
	    on Windows, the second 'p4 failback' command may fail with the
	    error 'journal exists and unexpectedly not empty'. This has been
	    fixed.

	#2378640 (Job #112645) **
	    If the configurable dm.stream.components is set 0, the commands
	    'p4 files', 'p4 fstat', and 'p4 dirs' no longer show files or dirs
	    which originate from component views.

	#2378639 (Job #112771) **
	    'p4 fstat' now displays pathPermissions of a file as well as the 
	    effectiveComponentType if the file comes from a component view.
	    The pathPermissions value will either be 'readonly' (not submitable)
	    or 'writable' (submitable).  The effectiveComponent type is the 
	    most restrictive component type in the chain of components from
	    which the file originates; the values will be 'readonly', 
	    'writeimport+', or 'writeall'.

	#2378209 (Job #113459) **
	    An edge server chained to another edge server now correctly records
	    the target serverid in 'p4 topology'.

	#2378064 (Job #112681) **
	    Not performing a journal rotation after a failover through failback
	    cycle before repeating failover through failback with the same
	    servers could cause the second failback to fail. This has been
	    fixed.

	#2374575 (Job #110101) *** ****
	    The default Perforce mimalloc memory manager configurables are now
	    used in the Proxy and Broker.

	#2374503 (Job #112710) **
	    When 'p4 clean' updated a file on a workspace to match the depot,
	    the 'syncTime' field of the have record was not updated. This
	    would cause performance issues with 'p4 clean -m' since it
	    could not detect when MD5 calculations were not needed.
	    This has been fixed.

	#2372677 (Job #111274, #108480) **
	    'p4 topology' now displays the IP address that the server listens
	    on instead of the end user client IP address for the intermediary
	    servers.

	#2372100 (Job #112649)
	    Added a message that appears when opening a file in a writable
	    component for a stream client with the StreamAtChange field set.
	    The message indicates that due to the StreamAtChange field being
	    set, the file cannot be submitted.

	#2371957 (Job #112234)
	    When 'failbackconfigs' is missing when running 'p4d -Fs',
	    the error would report that 'failoverconfigs' is missing.
	    This has been fixed.

	#2371535 (Job #96964, #106560) **
	    Some integrations involving a target task stream resulted in a
	    baseless merge when the base did exist as a file that was indirectly
	    related. This has been fixed.

Bugs fixed in 2022.2 (2022.2/2369846) (2022/11/16)

	#2366794 (Job #106524) **
	    'p4 unzip -n' will now scan the entire archive for possible missing
	    archive errors.

	#2363757 (Job #112361) **
	    A performance issue with checkpoint/dump/verify operations on
	    Windows platforms due to overlapped IO has been fixed.

	#2363428 (Job #113021) **
	    The current client's views are now correctly updated when stream
	    spec changes are submitted from edge servers.

	#2354702 (Job #110507) **
	    'p4 zip -c' without file arguments no longer causes a server crash.

	#2353733 (Job #112370) **
	    'p4 sync' for LFS files in graph depot on a replica could fail by
	    just generating LFS file attributes as file contents. This change
	    fixes the problem.

	#2353664 (Job #112600) **
	    A server process or thread will no longer recurse indefinitely when
	    blocked trying to acquire a write lock on the db.monitor table while
	    attempting to update lock information in that table.

	#2351772 (Job #101073) **
	    Performance is improved for 'p4 change -o' of shelved restricted
	    changes when the user has no access to the paths in the
	    restricted change.

	#2351539 (Job #111229) *
	    Client side decompression of unicode+C utf8+C and utf16+C type
	    files now correctly completes before the final charset conversion,
	    avoiding partial character translation errors.

	#2351537 (Job #111948) **
	    The archives for shelves are no longer deleted by edge servers
	    configured with 'lbr.replication' set to 'shared' or 'ondemand',
	    in case they are in use by the commit server.

	#2349248 (Job #112471) **
	    Adding a non-existent file no longer worked when the client view
	    had two or more lines. This has been fixed.

	#2348530 (Job #112174) **
	    Performance is improved for when 'p4 lock -g' is ran on an edge
	    server by deferring replication to the end of the command when
	    multiple communication requests between the edge and commit
	    servers take place.

	#2346893 (Job #106401) **
	    A new configurable 'dm.user.setinitialpasswd' has been added to
	    control who can set a user's initial password. The default setting
	    is 1, which is identical to existing behaviour, allowing all users
	    to set their own passwords. Setting it to 0 improves security by
	    limiting initial password setting to only super users. Before
	    setting this configurable to 0, ensure that an existing super user
	    has a secure password. Changes to 'dm.user.setinitialpasswd' will
	    apply to all new commands; no server restart is required.

	#2346885 (Job #112139) **
	    Performance is improved for when 'p4 revert' is ran on an edge
	    server for exclusively locked files by deferring replication to
	    the end of the command when multiple communication requests
	    between the edge and commit servers take place.

	#2346839 (Job #112112) **
	    Performance is improved for when 'p4 edit' or 'p4 delete' is ran on
	    an edge server for exclusively locked files by deferring
	    replication to the end of the command when multiple communication
	    requests between the edge and commit servers take place.

	#2346282 (Job #111262) **
	    Revoking list access using an exclusionary protections entry with
	    a path of '-//...' will now revoke access as intended for commands
	    such as 'p4 changes' and 'p4 describe'. The changed behavior is
	    enabled by default, but can be disabled by setting the
	    'dm.protects.exclusioncheck' configurable to 0.

	    Changes to 'dm.protects.exclusioncheck' will apply to all new
	    commands; no server restart required.

	#2343078 (Job #111623, #111625) **
	    Performance is improved for 'p4 edit' and 'p4 delete' with many
	    file arguments that include globally or exclusively-locked files
	    when run on an edge server separated from the commit server by more
	    than a minimal amount of network latency.

	#2342014 (Job #111570) **
	    The performance of 'p4 unlock' with many file arguments has been
	    improved.

	#2340395 (Job #112059) **
	    Autoreload labels can now be correctly accessed using the same
	    connection that the label was created on.

	#2340339 (Job #112087) **
	    'p4 sync' of a graph depot file of type 'binary' when run on a
	    replica would sync a corrupted file to the replica client. This
	    change fixes the problem.

	#2339358 (Job #112171) **
	    'p4 dbstat' now supports a '-p' option that displays
	    the levels of the database files and the number of pages
	    contained within each level. The display also includes
	    information on how a database file would be split for
	    a multifile checkpoint or dump request. See 'p4 help
	    dbstat' for more details.

	#2332972 (Job #111529) **
	    Performance is improved for 'p4 lock' with many file arguments.
	    The new configurable 'dm.lock.batch', with a default value of 10000,
	    defines the batch size of records to be processed in one database
	    transaction.

	#2331388 (Job #111916) **
	    Fix upgrade for error 'No stream "//stream" existed at change NNN'
	    or 'Stream "//stream" was deleted after change NNN' occuring
	    during upgrade step PopulateStreamViewsWithAtChanges.

	#2330544 (Job #111623, #111625, #111988) **
	    Performance is improved for 'p4 edit' and 'p4 delete' with many
	    file arguments that include globally or exclusively-locked files
	    when run on an edge server separated from the commit server by more
	    than a minimal amount of network latency.

	#2328661 (Job #111337) **
	    'p4 unshelve -S' now correctly prevents exclusively locked (+l)
	    files from being unshelved across streams when the target file is
	    already opened in another client.

	#2328307 (Job #111933) **
	    The commit server now batches results returned to an edge server
	    when 'p4 lock -g' is ran on an edge server. The batch size can be
	    controlled by the configurable 'dm.locks.global.result.batch.net'.

	#2327827 (Job #111963) **
	    'p4 fstat -OL' run on an edge server now uses the configurable
	    'dm.locks.global.batch.net'.

	#2327327 (Job #110812) **
	    Replicas will now re-run any failed upgrades on server restart and
	    will continue to run any pending upgrades and those run in isolation
	    on the replica.

	#2326859 (Job #111950) **
	    The new configurable 'dm.locks.global.result.batch.net' controls the
	    batch size of global lock results returned from the commit server to
	    the edge server.

	#2326858 (Job #111953) **
	    'p4 lock -g' run on an edge server now uses the configurable
	    'dm.locks.global.batch.net'.

	#2325979 (Job #111778, #111927) **
	    The new configurables 'dm.locks.excl.batch.net' and
	    'dm.locks.global.batch.net' control the batch sizes of exclusive
	    and global lock requests from edge servers to commit servers.

	    Changes to 'dm.locks.excl.batch.net' or 'dm.locks.global.batch.net'
	    will apply to all new commands; no server restart required.

	#2325897 (Job #111912) **
	    Fix for viewmatch crash bug when streamview pathSource is empty.

	#2322559 (Job #111569) **
	    'p4 revert -k' now batches the reverts written to the database based
	    on the new configurable 'dm.revert.batch' which defaults to 10000
	    where it previously wrote updates in batches of at least 100 files.
	    On an edge server, this can also massively reduce the number unlock
	    calls sent to the commit server.

	    Changes to 'dm.revert.batch' will apply to all new
	    commands; no server restart required.

	#2322201 (Job #111654) **
	    The default value for the 'dm.batch.net' configurable has been
	    increased from 1000 to 10000.

	#2322022 (Job #111601) **
	    Commit servers now correctly log the track information for submits
	    from edge servers.

	#2322021 (Job #111630) **
	    'p4 protects' now reuses the current user's protections table when
	    applicable (this requires either -H or -h set to the client's IP),
	    and the protections data is now re-used for all arguments to reduce
	    the time spent scanning db.protects.

	#2321059 (Job #110387) **
	    Replication no longer fails to start if the extensions depot has
	    been deleted.

	#2319279 (Job #111398, #111510) **
	    'p4 lock -g' and 'p4 fstat -OL' on edge servers now perform better
	    when a large number of results are returned.

	#2314503 (Job #98290) **
	    The 'p4 ldap' spec's SearchPasswd field now supports the %quote%
	    placeholder for embedding " characters in passwords.

	#2314317 (Job #110505) **
	    'p4 fstat -L' and 'p4 sync -L' now supports spec and remote depot
	    file arguments.

	#2313664 (Job #109972) **
	    'p4 fstat' now correctly reports exclusive locks on edge servers
	    when run against any server in a commit/edge environment.

	#2313579 (Job #110633) **
	    Performance is improved for 'p4 reopen' with many file arguments
	    that include global or exclusively-locked files when run on an
	    edge server separated from the commit server by more than a
	    minimal amount of network latency.

	#2313319 (Job #110678) **
	    Added configurable 'dm.integ.multiplestreams', which takes values 0
	    and 1, with a default of 0.  When set to 1, multiple stream 
	    integration targets are allowed, as long as none of the streams is
	    a task stream.

	    Changes to 'dm.integ.multiplestreams' will apply to all new
	    commands; no server restart required.

	#2313217 (Job #105742) **
	    'p4 diff' now correctly diffs against files that were shelved from
	    an integrate command that synced the files.

	#2312131 (Job #111487, #104580) **
	    'p4 labelsync' no longer causes the server to crash when multiple
	    calls on the same connection reference the same autoreload label.

	#2311912 (Job #111227) **
	    The 'p4 istat' command could give different results depending on
	    whether a change specifier was given to an import path in the stream
	    associated with the client workspace.  This has been fixed.

	#2311375 (Job #111469) **
	    'p4 lock -g' can no longer cause a hang when the number of files
	    being locked is an exact multiple of the batch size.

	#2309511 (Job #111546) * ** *** ****
	    OpenSSL has been upgraded to 1.1.1q

	#2308630 (Job #104498) *
	    'p4 submit' could fail with error "Translation of file content
	    failed near line..." when server is in the unicode mode. This has
	    been fixed.

	#2306933 (Job #105291) **
	    Deleting entries in the protection table using 'p4 user -d -F'
	    or 'p4 group -d -F' will now delete inline comments and will no
	    longer shift the comment incorrectly.

	#2305074 (Job #111120, #111121, #111123, #111126) **
	    In a federated environment, where an edge server is at version
	    2020.2 or greater, but an upstream server at version 2020.1 or
	    less, the stream ParentView feature has been disabled.
	    Similarly, if an upstream server is at 2021.1 or less, the 
	    streams --viewmatch feature has been disabled.

	#2304266 (Job #110978) **
	    'p4 protect' now validates that the 'Path' field in an owner's
	    sub-protections spec matches the argument provided.

	#2303630 (Job #111182) **
	    'p4 fstat -L' run against a server with graph depot repos no longer
	    causes the server to crash.

	#2302276 (Job #110637) **
	    The tagged output of the 'p4 groups' command was missing the
	    'description' field. This change adds the missing field.

	#2301378 (Job #108829) **
	    'p4 info' no longer records multiple command start log entries when
	    the 'dm.info.hide' configurable is set to 1.

	#2301122 (Job #110932) **
	    'p4 fstat' no longer shows incorrect movedFile value for files which
	    have been added and then moved to a new filename without submitting.

	#2300794 (Job #111030) **
	    Fixed StreamQWorker bug where a stream change would not be
	    processed if another stream was opened for edit.

	#2300134 (Job #111070) **
	    'p4 print' no longer reports an error when either the offset or size
	    flags are used and the user has access to any graph depot repos.

	#2298541 (Job #110832) **
	    The 'PopulateStreamViewsWithAtChanges' upgrade step now sets the
	    correct path type when populating the table used stream viewmatch.

	#2297955 (Job #108541) **
	    In rare cases a portion of the depot mapping logic could be
	    invalidated. A log message is now written rather than allow this
	    to happen.

	#2297775 (Job #110359) **
	    All lines of WLIST type custom spec fields are now correctly
	    formatted with a leading tab.

	#2297605 (Job #101447) *
	    A race condition when calculating the timezone offset has been
	    fixed, which previously affected the modtime on files that were
	    sync'ed in parallel.

	#2296527 (Job #110093) ** *** ****
	    Services listening on SSL no longer allocate additional memory
	    for repeated connections.

	#2296478 (Job #110836) **
	    Removing a component from a stream spec with noinherit parentviews
	    now correctly removes the component views.

	#2295728 (Job #109803) **
	    Changes to a stream specification that do not cause the view to
	    change no longer trigger the StreamQWorker.

	#2294910 (Job #110875) **
	    When either 'server.locks.dir' or 'server.extensions.dir' has
	    been set on the master and not set on the standby server, failover
	    would set the configurable to the default value instead of
	    unsetting the value on the master as expected. This has been
	    fixed.

	#2294331 (Job #110835) **
	    Stream with noinherit parentviews and stream components are now
	    correctly updated when the component's stream paths are updated.

	#2293593 (Job #110859) **
	    'p4 -ztag streams -a' now reports either 'parentDeleted' or
	    'parentObliterated' rather than failing when the parent of a
	    deleted stream has been deleted.

	#2293350 (Job #050785, #110843) ** ***
	    'p4 info' for the proxy server now displays the sensitive data
	    only for the authenticated users when the configurable
	    'dm.info.hide' is set.

	#2291455 (Job #110666, #110804) **
	    If a stream spec A had a component definition, and a stream
	    B was created with a noinherit ParentView, a "Missing stream"
	    error would result.  This is has been fixed.

	#2291454 (Job #110789) **
	    The 'PopulateStreamViewsWithAtChanges' upgrade step now correctly
	    handles "Missing stream" errors internally.

	#2291264 (Job #110708) **
	    'p4 login' for a LDAP authenticated user will no longer report
	    a password expiry message if the user has an expired password
	    stored in the database.

	#2290300 (Job #110293) **
	    'p4 topology -t' now reports an error if the input value exceeds
	    the maximum range.

	#2289328 (Job #110735, #110753) **
	    If a stream spec is open for edit, and a component is added to the
	    stream spec, then upon submit the component-consumer relationship
	    should have been saved to db.streamrelation, but it wasn't. This has
	    been fix as well as a db.streamrelation lock issue.

	#2288530 (Job #99689) **
	    Peeking is no longer used for tables sharing their internal cache
	    within the server (i.e. by default, db.monitor and db.jnlack); this
	    prevents server crashes that resulted from commands using partial
	    modifications.

	#2286550 (Job #110582) **
	    BTrees were loosing space within the internal (index) nodes of
	    the BTree. This space loss was sticky and would degrade the
	    performance of the tree over time by reducing the effectiveness
	    of the indexing. The "p4d -xv" and "p4 dbverify" operations
	    will now report this space if it is located. This report is
	    only a warning. This change fixes one source of index space loss.
	    However because the loss is sticky, there will still be reports
	    of the internal node space issue.

	#2285895 (Job #110556) **
	    The 'p4d -Fm' command has a new long option and may now be invoked
	    using 'p4d --pre-failback'. The 'p4d -Fs' command also has a new
	    long option and may now be invoked using 'p4d --post-failback'.

	#2282928 (Job #109487) **
	    Replicas configured with 'lbr.replication=none' no longer check for
	    archive sharing with the commit-server.

	#2279257 (Job #110492) **
	    'p4 switch' no longer allows switching to deleted streams.

	#2278646 (Job #102803) **
	    'p4 verify' could incorrectly report purged revisions of the
	    +Sn type as missing. This has been fixed. 

	#2277955 (Job #110361) **
	    Restarting a server with an unspecified host address ensures that
	    the correct date is now set for a new topology record in the
	    db.topology database table.

	#2273383 (Job #110077) **
	    'p4 storage -U' now supports the use of multiple threads, either
	    specified on the command line with '-N threads' or the
	    'lbr.storage.threads' configurable.

	#2270780 (Job #110050) **
	    'p4 storage -v' operation on the commit server will no longer lead
	    to BAD! filesize for the ktext files as an unexpanded digest is
	    stored in the db.storagesh table during the shelve operation when
	    'lbr.replication' is set to 'shared'.

	#2270095 (Job #110049) **
	    An edge submit operation will no longer delete the existing shelve
	    archive files on the Edge server when 'lbr.replication' is set to
	    'shared'.

	#2269165 (Job #109910) **
	    Shelve promotion operation now no longer creates a new copy of the
	    shelve archive files unnecessarily when the commit server runs on
	    the version prior to 2020.2.

	#2263257 (Job #109848) **
	    A Shelve operation will no longer delete or overwrite the existing
	    shelve archive files on the Edge server when the 'lbr.replication'
	    is set to shared.

	#2253071 (Job #109626) **
	    The 'p4 storage -U' command would only recompute the digest for
	    keyed revisions with an unset digest. It now recomputes the digest
	    for all revisions with unset digests.

	#2248751 (Job #109383) **
	    The storage upgrade process could miss updating the digest of
	    revisions that had been reopened to a keyed type. This has been
	    fixed.

	#2213659 (Job #108374) **
	    The untagged output of 'p4 topology' is now reformatted to be
	    consistent with the topology table schema.

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

Major new functionality in 2022.1 (2022.1/2285021)

	#2260122 (Job #108091 #108093 #108094 #108092 #109639 #109672 #109738
	              #109791 ) **

	    Stream Components 

	    Stream Components allow stream client views to include other stream
	    views. By referencing another stream, using the component syntax,
	    that stream becomes a component of the consuming stream.

	    Any stream can become a component by being referenced in another
	    stream view. However, a stream may not reference itself as a
	    component, either directly or indirectly (via other referenced
	    component streams).

	    Components can be nested to arbitrary levels, e.g. stream A
	    references component stream B which references component stream C,
	    and so on.

	    Similar to import template paths, a stream component allows the
	    stream client access to files outside of the current stream, but
	    without the maintenance issues associated with keeping template
	    paths up to date.

	    Each component will have the form of:

	      component_type component_folder component_stream[@[change|label]]

	    The only component_type currently available is 'readonly'.
	    A readonly component means that component files can be synced, but
	    cannot be submitted.

	    The component_folder field specifies a directory prefix for each
	    component view file.  The specified directory will be directly under
	    the workspace root directory.

	    The component_stream field specifies the name and path of the
	    component stream, which can be pinned to a change or automatic
	    label.

	    If @change or @label (automatic label) is specified, then the
	    version of the component stream specification at or before the
	    change or label is used, and any files synced will be at revisions
	    at or before the change or label.

	    For example, given three streams //streams/A, //streams/B,
	    //streams/C, and stream A has a component definition:

	      readonly dirB //streams/B

	    and stream B has a component definition:

	      readonly dirC //streams/C

	    then a client of stream A will have the views:

	      //streams/A/...  //clientname/...
	      //streams/B/...  //clientname/dirB/...
	      //streams/C/...  //clientname/dirB/dirC/...

	    Like template paths, component views are inherited by descendants of
	    the defining stream, unless a descendant has a noinherit ParentView.
	    If a descendant stream is converted to have a noinherit ParentView,
	    the component definition is copied to the descendant.

	    Note that a stream component only affects client views.  Branch
	    views are not affected by stream components, so integrations between
	    parent and child are unaffected by component definitions.

	    Associated with stream components is a new configurable,
	    dm.stream.components, which takes values 0 (default) and 1.
	    When set to 0, stream client views are not affected by stream
	    components.
	    When set to 1, component views are joined with the current stream
	    views to create client views.

	    For more details about this feature, see 'p4 help stream' or the
	    Components section of the Streams chapter of the Helix Core
	    Command-Line (P4) Guide.

	#2254609 (Job #108122 #108123 ) **
	    New commands are available to support failback to the
	    former master server.

	    1) The 'p4d -Fm' command prepares the former master to become
	       a standby server that is ready for 'p4 failback'. 

	    2) The 'p4 failback' command restores the original master to
	       its previous role as master.

	    3) The 'p4d -Fs' command restores the original standby server
	       to its previous role as the standby for the restored master.

	    For details about this procedure, see 'p4 help failbackintro'.

	#2246250 (Job #102661 #105847 #105853 #106018) **
	    Deleting a stream with 'p4 stream -d' now marks the stream spec as
	    deleted in a similar way to 'p4 delete', preserving the history of
	    the stream spec.
	    Deleted streams will only be reported by 'p4 streams' when the '-a'
	    flag is provided. 'p4 streamlog' now displays stream delete actions.
	    To permanently remove a stream, use 'p4 stream --obliterate [-y]'.

	#2237481 (Job #108302) **
	    When 'rt.monitorfile' is set, the monitor level can now be adjusted
	    in realtime affecting any running commands.

	#2191842 (Job #107352) * **
	    Text files that are stored compressed on the server are now
	    decompressed client-side.  This excludes +k type files which require
	    keyword expansion server-side.  Replication also benefits from this
	    too by transferring the compressed archives without needing to
	    decompress or re-compress them.

Minor new functionality in 2022.1 (2022.1/2285021)

	#2384427 (Job #110101) *** ****
	    The default Perforce mimalloc memory manager configurables are now
	    used in the Proxy and Broker.

	#2261304 (Job #100964) **
	    'p4 copy/clean/integ/merge/revert/submit/sync/undo' now
	    have '-K' flags that will suppress the expansion of keywords in +k
	    type files.

	#2246523 (Job #103900) **
	    'p4 print' has the new 'offset' and 'size' options to provide the
	    ability to print out a portion of a file. If 'offset' is not present
	    or is negative, it is assumed to be zero and print will start from
	    the beginning of the file. If 'size' is not present or is negative,
	    print will continue to the end of the file.
	    This change works on both binary and text files and with proxy
	    servers and forwarding-replicas.

	#2242828 (Job #107538) ***
	    A new option '-xD' can be used to display or set the serverid for
	    the Proxy server by running the command 'p4p -xD'.

	#2239115 (Job #108848) **
	    The default for configurable "lbr.autocompress" is now 1 (previously
	    it was 0).

	#2234167 (Job #108785) **
	    The 'p4 topology' command has two new flags '-F' and '-T' which
	    filter the results and limit the fields reported respectively.

	#2230534 (Job #79935) **
	    For 'p4d -jd' and 'p4d -jr', the new '-R <service>' option provides
	    an easier way to produce or recover from checkpoints.
	    Instead of listing the tables to be excluded, use the '-R' option
	    to indicate the service type. This is sufficient for p4d to exclude
	    the appropriate tables for that service type.

	#2223950 (Job #95923) **
	    This change enhances and simplifies 'p4d -jd' and 'p4d -jr' commands
	    for creating a dumped checkpoint and recovering from it.
	    For 'p4d -jd' a new option '-P <server-id>' is added. Based on the
	    service type of the target <server-id> and the "rpl.replay.userrp"
	    configurable setting there, 'p4d -jd' excludes the right tables and
	    adds the target server-id in the checkpoint file. 
 	    For 'p4d -jr' if a server.id file does not exist and the checkpoint
	    file has the information, 'p4d -jr' creates the server.id file.

	#2217838 (Job #108209) **
	    The 'p4 topology' command has a new '-t' flag that limits the
	    results to entries that have been seen within the specified number
	    of days.

	#2217622 (Job #107638) **
	    'p4 topology' has a new tagged field 'LastSeenDate' which is the
	    last time a service entry was seen.

	#2216172 (Job #108025) **
	    The 'p4 topology' command has a new '-d' flag for deleting entries
	    based on date.  It may be combined with '-e' to delete all records
	    prior to that date, and with '-s' to filter by a specified server
	    address.  The '-y' flag is required before the records are
	    permanently removed.

	#2210386 (Job #95923) **
	    This change enhances and simplifies 'p4d -jd' and 'p4d -jr' commands
	    for creating and replaying filtered checkpoints for replica seeding.
	    For 'p4d -jd' a new option '-P <server-id>' has been added, which
	    users the specified server spec to apply any table or record
	    filtering required while creating the checkpoint.
	    Additionally the target server-id is recorded in the checkpoint
	    file, which 'p4d -jr' will now use to populate the new server's
	    server.id, unless already set.

	#2201395 (Job #95125) **
	    The group specification now has a new field for "Description".

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

Important note:

	Please refer to:
	http://www.perforce.com/perforce/r22.1/user/relnotes.txt
	to get up to date GA and post-GA information about this release.

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

Bugs fixed in 2022.1 Patch 7 (2022.1/2617865) (2024/06/28)

	#2609870 (Job #121091) **
	    Fixed reversion of an open stream spec when using the command
	   'p4 revert -a -Si filelist...'.

	#2609119 (Job #121079) **
	    Fixed reversion of an open stream spec when using the command
	   'p4 revert -n -Si filelist...'.

	#2609113 (Job #87618) **
	    Ignored branch records resulting from a cherry-pick now only
	    grant credit for the cherry-picked revisions, rather than
	    implicitly including all prior revisions as is the case for a
	    normal branch record.  This fixes a problem in which an ignored
	    branch of a file that was copied from an old revision did not
	    grant any credit at all on subsequent integrations.

	#2609107 (Job #120791) **
	    Fixed stream obliterate endless loop problem.

	#2586320 (Job #119810) **
	    The error message "db.group locked after db.stream" no longer
	    appears when submitting a stream spec on an edge server and
	    then issuing a stream command. Previously, this error could
	    occur in P4V or any client that uses a shared connection.

	#2573486 (Job #119453) **
	    Fixed "db.streamview locked after db.domain" error when submitting
	    an opened stream spec.

	#2569056 (Job #112901) **
	    If a file was added with the same name as a file which had
	    previously been moved, then a 'p4 verify' might erroneously
	    report the readded file was missing.  This has been fixed.

	#2562513 (Job #119336) **
	    OpenLDAP has been upgraded 2.4.17

Bugs fixed in 2022.1 Patch 6 (2022.1/2534689) (2023/12/18)

	#2533921 (Job #110437) * ** *** ****
	    The network autotune algorithm has been corrected to address the rare
	    cases where large numbers of files being submitted to a Linux server
	    from a Windows client could stall or hang if autotune was enabled
	    (net.autotune=1).

	#2532194 (Job #112432) **
	    'p4 fetch' and 'p4 push' commands now update LastFetch/LastPush
	    when user provided filespec argument does not limit remote view.

	#2531695 (Job #117156) **
	    Security fix. Addressed CVE-2023-35767.

	#2531694 (Job #117155) **
	    Security fix. Addressed CVE-2023-45849.

	#2531693 (Job #90618, #117153) * ** *** ****
	    Security fix. Addressed CVE-2023-5759.

	#2531280 (Job #117154) **
	    Security fix. Addressed CVE-2023-45319.

	#2509148 (Job #117741) * **
	    cURL (for extensions) has been upgraded 8.4.0 to address multiple
	    cURL CVEs: CVE-2023-38545 and CVE-2023-38546

	#2530934 (Job #118342) **
	    Fixed segmentation violation with real-time monitoring enabled.

	#2508491 (Job #116102) * ** *** ****
	    OpenSSL has been upgraded to 3.0.12

	#2498457 (Job #114933) **
	    When a lazy copy file is sent using 'p4 unzip', 'p4 push' or
	    'p4 fetch' and the source is not part of the package, it will be
	    imported as a non-lazy copy file.

	#2497044 (Job #113319) **
	    Using 'p4 unzip' with -I option to exclude integration records
	    no longer causes a crash when the source of a lazy copy is not
	    included in the zip.

	#2493358 (Job #117270) **
	    Fixed a component stream validation error when reparenting a stream.

	#2489969 (Job #117222) **
	    Ensures that 'p4d -jr' command to replay the checkpoint in a
	    non empty directory does not update the existing database files.

	#2489809 (Job #106491) **
	    'p4 zip' correctly includes archives for lazy copies when used with
	    a revision range.

	#2482330 (Job #117093) **
	    The orphan scanner, 'p4 storage -l', does not work with space in
	    the depotdirectory argument. This has been fixed.

Bugs fixed in 2022.1 Patch 5 (2022.1/2469977) (2023/07/28)

	#2466140 (Job #116141, #116277) **
	    Fixed problems with upgrade when a stream's view could not be
	    generated.

	#2462349 (Job #116376) **
	    The precedence of overlapping ChangeView entries, including those
	    generated for streams with multiple "import @change" Paths, was
	    not honored correctly.  This has been fixed.

	#2459098 (Job #114761) **
	    A 'p4 retype -l' request on a revision with a shelved
	    integration generates incorrect records in the db.storage
	    and db.storagesh tables. This has been fixed.

	#2458375 (Job #116101) * **
	    cURL (for extensions) has been upgraded 8.1.2 to address multiple
	    cURL CVEs: CVE-2023-28319 and CVE-2023-28322.

	#2452638 (Job #114820) **
	    'p4 reload -p' will now correctly report errors to the users 
	    and if a journalwait is required, the correct journal offset is 
	    now used

	#2445382 (Job #115503) * **
	    cURL (for extensions) has been upgraded 8.0.1 to address multiple
	    cURL CVEs: CVE-2023-27537, CVE-2023-23916, CVE-2023-23915 and
	    CVE-2023-23914.

	#2447644 (Job #115980) * ** *** ****
	    OpenSSL has been upgraded to 1.1.1u

	#2442015 (Job #115676) **
	    The 'p4 failover' command could be run from a server that
	    has been prepared for the 'p4 failback' command by running
	    'p4d -Fm'. Now 'p4 failover' will fail in this situation with
	    an error message instructing the user to run 'p4 failback' instead.

	#2440214 (Job #115619) **
	    Fixed a 'p4 zip' bug where one half of a move/delete pair was
	    wrongly declared to be missing.

	#2436084 (Job #115391) **
	    Fixed stream view generation at a specific change causing an 
	    endless loop during upgrade.

	#2431460 (Job #114515) **
	    Running 'p4 reopen' with multiple file arguments that include
	    moved files could cause a member of a moved pair to fail to be
	    reopened. This has been fixed.

	#2426238 (Job #113467) **
	    When a file was opened for 'add' with the exclusive open filetype
	    in a distributed environment and was submitted with the 'reopen'
	    option, the exclusive open type would not be set. This has been
	    fixed.

	#2419903 (Job #112599) **
	    An integration from a stream client might fail with an error
	    message "The target stream of a stream spec integration must
	    be the stream associated with the current client ...".  This
	    error should only occur when using a '-S' parameter with the
	    integration command, but did sometimes occur when not using
	    '-S' when the parent of the associated stream has a noinherit
	    ParentView setting.  This has been fixed.

	#2418354 (Job #113622) **
	    StreamQWorker is now launched at server startup to finish any
	    leftover processing.

Bugs fixed in 2022.1 Patch 4 (2022.1/2409226) (2023/02/21)

	#2408496 (Job #113495) **
	    The 'p4 fstat -L' command now performs less database work and
	    consumes fewer resources when run from workspaces with large
	    numbers of files synced.

	#2407418 (Job #101277) **
	    The 'journal-rotate-lock' and 'journal-rotate' triggers are now
	    invoked on replicas that use journalcopy (e.g. standby servers)
	    at the point that that the 'pull -L' completes the replay of a
	    rotated journal.

	#2406326 (Job #106649, #114300) **
	    The Extension API call GetAutoClientApi() no longer creates an
	    invalid ticket when there is a server hostname lookup mismatch.

	#2403887 (Job #114346) * ** *** ****
	    OpenSSL has been upgraded to 1.1.1t

	#2398905 (Job #112505) **
	    The 'p4 group' on a replica working with an older commit server
	    would fail with error: "Unkown field name 'Description'". This
	    change fixes the problem.

	#2396321 (Job #113971) **
	    Upgrade steps no longer run prematurely when being rerun on
	    a replica.

	#2394769 (Job #113831) **
	    Rerunning the last number of upgrade steps by setting the 'upgrade'
	    counter back using the 'p4 counter -f upgrade <n-known-good>'
	    command on the innermost server and then restarting the
	    innermost server now behaves correctly: the upgrade steps beyond
	    the value of the 'upgrade' counter run and then replicate outward.

	#2394720 (Job #113904) **
	    'p4 shelve -f -c' no longer leads to the deletion of shared shelve
	    archive files on the replica server.

	#2392875 (Job #111114) **
	    Changes to Extension instance configurations that resulted in
	    changed depot paths on events taking a depot path no longer
	    produce duplicated events for the Extension instance.

	#2392309 (Job #113915) **
	    Enabling the buffering of server logs could cause a deadlock.
	    This has been fixed.

	#2386273 (Job #113622) **
	    Fixed a problem where viewmatch streamviews did not update after
	    child stream was deleted.

	#2386047 (Job #110812) **
	    Replicas will now re-run any failed upgrades on server restart and
	    will continue to run any pending upgrades and those run in isolation
	    on the replica.

	#2383313 (Job #112863) **
	    The 'p4 failover' command could be run from a server that
	    is eligible for the 'p4 failback' command. Now 'p4 failover' is
	    only allowed in this scenario when used with the '--force' option.

	#2382758 (Job #112233) **
	    If a user tried to start a former master after failover or failback
	    before running 'p4d -Fm', 'p4d -Fs', or changing the server.id,
	    they were advised to change the server.id. The error now does
	    not tell the user to change server.id when failback has occurred,
	    or when failback may be run from that P4ROOT.

	#2381648 (Job #112807) **
	    When failover through failback is repeated using the same servers
	    on Windows, the second 'p4 failback' command may fail with the
	    error 'journal exists and unexpectedly not empty'. This has been
	    fixed.

	#2381086 (Job #109988) **
	    'p4 info' run from P4V no longer takes an excessive number of
	    database locks.

	#2380339 (Job #112681) **
	    Not performing a journal rotation after a failover through failback
	    cycle before repeating failover through failback with the same
	    servers could cause the second failback to fail. This has been
	    fixed.

	#2375111 (Job #112710) **
	    When 'p4 clean' updated a file on a workspace to match the depot,
	    the 'syncTime' field of the have record was not updated. This
	    would cause performance issues with 'p4 clean -m' since it
	    could not detect when MD5 calculations were not needed.
	    This has been fixed.

	#2374192 (Job #111274, #108480, #113338) **
	    'p4 topology' now displays the IP address that the server listens
	    on instead of the end user client IP address for the intermediary
	    servers.

	#2373002 (Job #112234) **
	    When 'failbackconfigs' is missing when running 'p4d -Fs',
	    the error would report that 'failoverconfigs' is missing.
	    This has been fixed.

	#2367693 (Job #106524) **
	    'p4 unzip -n' will now scan the entire archive for possible missing 
	    archive errors.

	#2365386 (Job #99689) **
	    Peeking is no longer used for tables sharing their internal cache
	    within the server (i.e. by default, db.monitor and db.jnlack); this
	    prevents server crashes that resulted from commands using partial
	    modifications.

Bugs fixed in 2022.1 Patch 3 (2022.1/2361553) (2022/10/28)

	#2358289 (Job #110505) **
	    'p4 fstat -L' and 'p4 sync -L' now supports spec and remote depot
	    file arguments.

	#2355956 (Job #105742) **
	    'p4 diff' now correctly diffs against files that were shelved from
	    an integrate command that synced the files.

	#2354729 (Job #110507) **
	    'p4 zip -c' without file arguments no longer causes a server
	    crash.

	#2352779 (Job #104498) *
	    'p4 submit' could fail with error "Translation of file content
	    failed near line...", when server is in the Unicode mode. This
	    change fixes the problem.

	#2352579 (Job #112370) **
	    'p4 sync' for LFS files in graph depot on a replica could fail by
	    just generating LFS file attributes as file contents. This change
	    fixes the problem.

	#2352382 (Job #112600) **
	    A server process or thread will no longer recurse indefinitely when
	    blocked trying to acquire a write lock on the db.monitor table while
	    attempting to update lock information in that table.

	#2351538 (Job #111229) *
	    Client side decompression of unicode,+C utf8+C and utf16+C type
	    files now correctly completes before the final charset conversion,
	    avoiding partial character translation errors.

	#2351273 (Job #111948) **
	    The archives for shelves are no longer deleted by edge servers
	    configured with 'lbr.replication' set to 'shared' or 'ondemand',
	    in case they are in use by the commit server.

	#2350945 (Job #112361) **
	    Fix a performance issue with checkpoint/dump/verify operations
	    on Windows platforms due to overlapped IO.

	#2349852 (Job #101073) **
	    Performance is improved for 'p4 change -o' of shelved restricted
	    changes when the user has no access to the paths in the
	    restricted change.

	#2348377 (Job #112471) **
	    Adding a non-existent file no longer worked when the client view
	    had two or more lines. This has been fixed.

Bugs fixed in 2022.1 Patch 2 (2022.1/2344699)

	#2340205 (Job #111623, #111625, #111988) **
	    Performance is improved for 'p4 edit' and 'p4 delete' with many
	    file arguments that include globally or exclusively-locked files
	    when run on an edge server separated from the commit server by more
	    than a minimal amount of network latency.

	#2340063 (Job #112087) **
	    'p4 sync' of a graph depot file of type 'binary' when run on a
	    replica would sync a corrupted file to the replica client.
	    This change fixes the problem.

	#2336891 (Job #112174) **
	    Performance is improved for when 'p4 lock -g' is ran on an edge
	    server by deferring replication to the end of the command when
	    multiple communication requests between the edge and commit
	    servers take place.

	#2336186 (Job #112139) **
	    Performance is improved for when 'p4 revert' is ran on an edge
	    server for exclusively locked files by deferring replication to
	    the end of the command when multiple communication requests
	    between the edge and commit servers take place.

	#2336185 (Job #112112) **
	    Performance is improved for when 'p4 edit' or 'p4 delete' is ran on
	    an edge server for exclusively locked files by deferring
	    replication to the end of the command when multiple communication
	    requests between the edge and commit servers take place.

	#2335001 (Job #111953) **
	    'p4 lock -g' run on an edge server now uses the configurable
	    'dm.locks.global.batch.net'.

	#2334412 (Job #111933) **
	    The commit server now batches results returned to an edge server
	    when 'p4 lock -g' is ran on an edge server. The batch size can be
	    controlled by the configurable 'dm.locks.global.result.batch.net'.

	#2333661 (Job #111963) **
	    'p4 fstat -OL' run on an edge server now uses the configurable
	    'dm.locks.global.batch.net'.

	#2333658 (Job #111950) **
	    The new configurable 'dm.locks.global.result.batch.net' controls the
	    batch size of global lock results returned from the commit server to
	    the edge server.

	#2333649 (Job #111570) **
	    The performance of 'p4 unlock' with many file arguments has been
	    improved.

	#2333641 (Job #111569) **
	    'p4 revert -k' now batches the reverts written to the database based
	    on the new configurable 'dm.revert.batch' which defaults to 10000
	    where it previously wrote updates in batches of at least 100 files. 
	    On an edge server, this can also massively reduce the number unlock
	    calls sent to the commit server.

	#2333189 (Job #111778, #111927) **
	    The new configurables 'dm.locks.excl.batch.net' and
	    'dm.locks.global.batch.net' control the batch sizes of exclusive and
	    global lock requests from edge servers to commit servers.

	#2331761 (Job #111529) **
	    Performance is improved for 'p4 lock' with many file arguments.
	    The new configurable dm.lock.batch, with a default value of 10000,
	    defines the batch size of records to be processed in one database
	    transaction.

	#2331243 (Job #111916) **
	    Fix upgrade for error 'No stream "//stream" existed at change NNN'
	    or 'Stream "//stream" was deleted after change NNN' occuring
	    during upgrade step PopulateStreamViewsWithAtChanges.

	#2328901 (Job #111654) **
	    The default value for the 'dm.batch.net' configurable has been
	    increased from 1000 to 10000.

	#2325435 (Job #111912) **
	    Fix for viewmatch crash bug when streamview pathSource is empty.

	#2324104 (Job #111469) **
	    'p4 lock -g' no longer can cause a hang when the number of files
	    being locked is an exact multiple of the batch size.

	#2319862 (Job #111227) **
	    The 'p4 istat' command could give different results depending on
	    whether a change specifier was given to an import path in the stream
	    associated with the client workspace.  This has been fixed.

	#2319277 (Job #111398, #111510) **
	    'p4 lock -g' and 'p4 fstat -OL' on edge servers now perform better
	    when a large number of results are returned.

	#2318516 (Job #110678) **
	    Added configurable dm.integ.multiplestreams, which takes values 0
	    and 1, with a default of 0.  When set to 1, multiple stream 
	    integration targets are allowed, as long as none of the streams is
	    a task stream.

	#2313703 (Job #111487, #104580) **
	    'p4 labelsync' no longer causes the server to crash when multiple
	    calls on the same connection reference the same autoreload label.

	#2313663 (Job #109972) **
	    'p4 fstat' now correctly reports exclusive locks on edge servers
	    when run against any server in a commit/edge environment.

	#2313332 (Job #110633) **
	    Performance is improved for 'p4 reopen' with many file arguments
	    that include global or exclusively-locked files when run on an
	    edge server separated from the commit server by more than a
	    minimal amount of network latency.

	#2309677 (Job #105291) **
	    Deleting entries in the protection table using 'p4 user -d -F'
	    or 'p4 group -d -F' will now delete inline comments and will no
	    longer shift the comment incorrectly.

	#2309511 (Job #111546) * ** *** ****
	    OpenSSL has been upgraded to 1.1.1q

	#2308971 (Job #110978) **
	    'p4 protect' now validates that the 'Path' field in an owner's
	    sub-protections spec matches the argument provided.

Bugs fixed in 2022.1 Patch 1 (2022.1/2305383)

	#2304500 (Job #111120, #111121, #111123, #111126) **
	    In a federated environment, where an edge server is at version
	    2020.2 or greater, but an upstream server at version 2020.1 or
	    less, the stream ParentView feature has been disabled. 
	    Similarly, if an upstream server is at 2021.1 or less, the 
	    streams --viewmatch feature has been disabled.  

	#2303762 (Job #111182) **
	    'p4 fstat -L' run against a server with graph depot repos no longer
	    causes the server to crash.

	#2303008 (Job #101447) *
	    A race condition when calculating the timezone offset has been
	    fixed, which previously affected the modtime on files that were
	    sync'ed in parallel.

	#2302463 (Job #110637) **
	    The 'p4 groups' command with -ztag option was missing the
	    'description' field. This change adds the missing field.

	#2300847 (Job #111070) **
	    The 'p4 print' command issued when there are both graph depot and
	    classic files, and options offset or size are used, could fail with
	    with a usage error. This change fixes the problem.

	#2300672 (Job #110932) **
	    Fixed bug where for a file which has been added, not
	    submitted and then moved to a new filename, fstat displays
	    an incorrect movedFile.

	#2300512 (Job #111030) **
	    Fixed StreamQWorker bug where a stream change would not be 
	    processed if another stream was opened for edit.

	#2298780 (Job #108541) **
	    In rare cases a portion of the depot mapping logic could be
	    invalidated. A log message is now written rather than allow this
	    to happen.

	#2298045 (Job #110832) **
	    Fix for upgrade bug where the path type of a viewmatch result could
	    be wrong.

	#2297777 (Job #102389) **
	    Ensure custom spec fields for type LLIST are formatted with tabs.

	#2297125 (Job #050785, #110843) ** ***
	    'p4 -ztag info' on the proxy server now displays the proxy cache
	    root directory and the correct proxy root directory.

	#2297037 (Job #110093) ** *** ****
	    Services listening on SSL no longer allocate additional memory
	    for repeated connections.

	#2296016 (Job #110836) **
	    Fixed bug where removing a component from a stream spec with
	    noinherit parentviews did not remove the component views.

	#2294480 (Job #110708) **
	    'p4 login' for a LDAP authenticated user will no longer report
	    a password expiry message if the user has an expired password
	    stored in the database.

	#2294315 (Job #109803) **
	    Fixed bug where any change to a stream specification would cause
	    StreamQWorker to process the change, even if the view had not 
	    changed.  Fixed so that StreamQWorker only processes the change
	    if the view is impacted.

	#2294018 (Job #110835) **
	    Fixed bug where a stream with a noinherit ParentView and a stream
	    component did not see changes to the component view when the 
	    component stream paths were updated.

	#2293521 (Job #110859) **
	    Fixed bug causing 'p4 -ztag streams -a' with parent and child
	    both deleted to fail. Now report either 'parentDeleted' or
	    'parentObliterated'.

	#2293155 (Job #110359) **
	    Ensure all lines of a WLIST custom spec field are correctly
	    formatted with leading tabs.

	#2290985 (Job #110293) **
	    'p4 topology -t' now reports an error if the input value exceeds
	    the maximum range.

	#2290500 (Job #110666, #110804) **
	    If a stream spec A had a component definition, and a stream
	    B was created with a noinherit ParentView, a "Missing stream"
	    error would result.  This is has been fixed.

	#2290499 (Job #110789) **
	    Fixed "Missing stream" error occuring during upgrade step
	    PopulateStreamViewsWithAtChanges.

	#2289190 (Job #110735, #110753) **
	    If a stream spec is open for edit, and a component is added to the
	    stream spec, then upon submit the component-consumer relationship
	    should have been saved to db.streamrelation, but it wasn't.  Fixed.
	    This change also fixes a db.streamrelation lock issue.

Bugs fixed in 2022.1 (2022.1/2285021)

	#2278182 (Job #110361) **
	    The correct date is now set for any a new topology records on
	    restart of servers listening on any address.

	#2269263 (Job #109847) **
	    The 'p4 unshelve' command when performed through a different client,
	    could fail with "tampered with after resolve". This change fixes the
	    problem.

	#2263620 (Job #109150) **
	    If multiple references to an archive file exist, 'p4 restore' could
	    fail with a librarian delete error. This change fixes the problem.

	#2271353 (Job #110050) **
	    Running 'p4 storage -v' on the commit server no longer reports BAD!
	    filesize for ktext files shelved from an edge server configured with
	    lbr.replication=shared.

	#2270664 (Job #110049) **
	    A submit from edge server with lbr.replication=shared will no longer
	    delete in use shelve archive files.

	#2269877 (Job #109910) **
	    Shelve promotion from an edge server with lbr.replication=shared no
	    longer creates unnecessary copies of the shelve's archive files when
	    the commit server is pre-2020.2.

	#2269263 (Job #109847) **
	    'p4 unshelve' of a ktext file from a different client to the one
	    that shelved the file will no longer cause future shelve or submit
	    commands of that file to fail with "tampered with after resolve".

	#2268811 (Job #109848) **
	    Shelves created on an edge server with lbr.replication=shared will
	    no longer delete or overwrite the existing archive files.

	#2263620 (Job #109150) **
	    'p4 restore' no longer fails with a librarian delete error if
	    multiple references to an archive exist.

	#2261560 (Job #109831) **
	    Shelve promotion using either -r or -f to replace a shelved file
	    will no longer be recorded with the prior files checksum or size.

	#2260183 (Job #108415) **
	    Globally locking a file from an edge server that is in the process
	    of being shelved from the same workspace will no longer result in
	    the shelve operation removing the lock on the edge server.

	#2259033 (Job #108754) **
	    The graph object references counts are now stored in db.refcntadjust
	    rather than excessively journaling the object records.

	#2258757 (Job #108285) **
	    'p4 graph purge-refhist' no longer requires the '.git' suffix as
	    part of the repo-name, which is now fully validated.

	#2256026 (Job #109575) *
	    The client internal handling of P4IGNORE has been optimized to
	    reduce both filesystem and in-memory operations.

	#2254741 (Job #109709) **
	    Opening large numbers exclusive locked (+l) files on an edge server
	    is now far more efficient.

	#2254699 (Job #109616) **
	    Replicating a journal containing older versions of database
	    records can crash the commit server. This has been fixed.

	#2254481 (Job #109725) **
	    'p4 add' no longer requests that the client perform the P4IGNORE
	    checks for files that have already been checked.

	#2253532 (Job #109148) **
	    'p4 submit' and 'p4 shelve' now check only the depots they will
	    affect against 'filesys.depot.min'.

	#2249937 (Job #108754) **
	    Graph depot object reference calculation on updates now happen in
	    the background after a receive-pack has succeeded.

	#2247996 (Job #109124) **
	    If a submit from an edge server fails, any archives transferred to
	    the commit server are now cleaned up.

	#2244994 (Job #109370) **
	    'p4 submit -e' run on an edge server no longer creates additional
	    archives when the shelved files being submitted are not
	    deduplicated.

	#2244339 (Job #109435) **
	    Shelve promotion will no longer overwrite the archive files created
	    by 'p4 shelve' prior to upgrading from a pre-2020.2 release that are
	    still in use by the other shelved changelists.

	#2242404 (Job #109389) **
	    Disallowed the use of integration option -1 with task stream
	    targets.

	#2241521 (Job #109343) **
	    Background submit now falls back to standard edge-submit if it
	    would overwrite archive files created by 'p4 shelve' prior to
	    upgrading from a pre-2020.2 release that are still in use by other
	    shelved changelists.

	#2239572 (Job #109272) **
	    Under specific conditions, a race condition between triggers and
	    background processes could cause the trigger result to be lost.

	#2237764 (Job #109050, #109266, #109289) **
	    When the lbr.autocompress configurable was set to 1, the '+D'
	    file type modifier was ignored, which prevented the creation of RCS
	    files.  This change fixes the problem.

	#2237480 (Job #109210) **
	    'p4 lock' no longer returns text messages in tagged mode.

	#2236113 (Job #108847) **
	    'p4 submit' will no longer overwrite the archive files created by
	    'p4 shelve' prior to upgrading from a pre-2020.2 release that are
	    still in use by other shelved changelists.

	#2234955 (Job #109050, #109289) **
	    When the lbr.autocompress configurable was set to 1, the '+D'
	    file type modifier was ignored, which prevented the creation of RCS
	    files.  This change fixes the problem.

	#2234869 (Job #108864) **
	    'p4 groups -v' in tagged output mode no longer locks db.user. 

	#2233787 (Job #108603, #109073) **
	    Restricted changelists with associated stream specs no longer reveal
	    the stream spec to users who lack list access to that stream.
	    The change description is only shown to users with read access to
	    the stream spec or any files affected by the change.

	#2233706 (Job #109163) **
	    The journal entries for deleted records on case-insensitive servers
	    now always record the key portion of the record with the case that
	    was stored in the database.

	#2233787 (Job #104047) **
	    Standby servers now check the correct db.upgrades table.

	#2232017 (Job #107091) **
	    'p4 stream -o' can now be run from 2020.1 or greater edge servers 
	    replicating from pre-2020.1 commit servers.

	#2229311 (Job #108692) **
	    The output from "p4 help-graph commands" was missing the command
	    "p4 graph verify". This change fixes the problem.

	#2229202 (Job #108693) **
	    The "p4 help verify" output did not mention "p4 help-graph verify".
	    This change fixes the problem.

	#2227171 (Job #108172) **
	    Compressed archives are now verified without decompression if the
	    checksum of the compressed form of the archive has been recorded in
	    the storage tables. These checksums may be generated by running
	    'p4 storage -u'. Note: 'p4 storage -v' will no longer report BAD for
	    ktext files that have not had checksums calculated to be consistent
	    with 'p4 verify'.

	#2225097 (Job #108573, #108792) **
	    Updates to a globally locked file's change, user and type by
	    'p4 reopen' on an edge server is now correctly updated on the
	    commit server.

	#2225097 (Job #108878) **
	    Under specific conditions, the server could have written log output
	    to STDOUT while using the RSH protocol. This has been fixed.

	#2225097 (Job #108947) **
	    'p4 switch' run against an edge server now correctly propagates
	    the stash change to the commit server even if the shelve fails.

	#2225057 (Job #110110) **
	    The mimalloc library has been upgraded to 1.7.3.

	#2224867 (Job #108934) * ** *** ****
	    The SSL handshake timeout configurable 'ssl.client.timeout' is no
	    longer overridden by a shorter 'net.maxwait' configurable value.

	#2223871 (Job #107762) **
	    The current journal (rather than a recently-rotated journal) is
	    now correctly used when determining the current journal position for
	    functionality such as commands awaiting replication. Such commands
	    will no longer be inordinately delayed by a journal rotation on
	    the upstream server.

	#2223852 (Job #102796) **
	    'p4 renameuser' now recalculates the digest for any keyed
	    revisions affected by the command. The digests of the keyed
	    revisions will instead be unset if the configuration
	    variable 'dm.change.skipkeyed' is set to 1.

	#2221826 (Job #108618) **
	    When making several stream spec changes in quick succession,
	    the last change might not be reflected the streams view match
	    feature, due to timing issues.  This has been fixed.

	#2221183 (Job #108767) **
	    The 'p4d -xx' consistency check between db.change/db.desc now
	    correctly detects mismatches between the truncated and the complete
	    descriptions.

	#2220200 (Job #108791) **
	    This change excludes the db.refcntadjust table from replication.
	    It also changes 'p4 journaldbchecksums' so that it does not
	    process db.refcntadjust.

	#2219912 (Job #96885) **
	    A concurrent parallel submit and revert in the same workspace
	    could turn off search permission on the clientEntity/0,d
	    serverlock directory. This has been fixed.

	#2219464 (Job #105051) **
	    Since the 'p4 annotate' command does not show binary diffs by
	    default, the 'dm.annotate.maxsize' configurable's limit is no
	    longer enforced against binary files unless the '-t' flag is
	    used.

	#2219255 (Job #102670) **
	    'p4 fstat -Ob' now reports the correct path to archives when either
	    the depot has been mapped to a non-default location or
	    'server.depot.root' is in use.

	#2218003 (Job #108779) **
	    The 'p4 reopen' command exhibited degraded performance after
	    an enhancement was made to prevent moved file pairs from being
	    split into different changelists. This performance problem has been
	    fixed.

	#2217097 (Job #104342) **
	    Memory allocation failures generated within the server's
	    memory manager during 'journalcopy' are now reported rather
	    than ungracefully terminating the operation. If the '-i' option
	    was specified, the journal buffer size is reduced for each retry
	    until the operation is successful.

	#2216191 (Job #108691) **
	    The usage message for the command "p4 graph" was missing a hyphen.
	    It is now corrected to say "Usage: see p4 help-graph".

	#2216121 (Job #108642) **
	    The DestinationServerAddress in 'p4 topology' is now recorded as
	    the address the intermediary connected from rather than one of the
	    addresses the intermediary is listening on.

	#2214507 (Job #108591) **
	    A rare server crash related to streams with many import paths has
	    been fixed.

	#2214507 (Job #108581) **
	    'p4 opened -g' run against a forwarding replica chained to an edge
	    server no longer reports a distributed configuration error.

	#2214507 (Job #108553) **
	    Running 'p4 lock -g' on an edge server against a file that is
	    already locked in the current workspace will no longer report an
	    error.

	#2214507 (Job #108528) **
	    'p4 fstat -OL' run against a forwarding replica chained to an edge
	    server now reports global lock information.

	#2214253 (Job #108701) **
	    Errors encountered on the P4TARGET server when attempting to
	    satisfy a foreground 'p4 journalcopy' command (that is, not
	    specified in a "startup.i" configurable) are now correctly
	    returned to the standby server rather than passed to the client.

	#2214148 (Job #103362) **
	    Clients of type 'partitioned' can no longer converted to 'readonly'
	    type if there are files open on that client.

	#2213971 (Job #108022) **
	    The 'lbr.storage.skipkeyed' configurable now defaults to 2.

	#2213659 (Job #108374) **
	    The untagged output of 'p4 topology' is now reformatted to be
	    consistent with the topology table schema.

	#2209522 (Job #108613) **
	    Starting a server with the -v command line option set to just a
	    number without logging category no longer causes a crash.

	#2209517 (Job #108451) **
	    The upgrade step for graph "Compute and set Refcount" now results
	    in fewer transactions in the journal file, improving performance.

	#2208701 (Job #108548) **
	    File transfer progress information from the server, found by
	    querying the archive file, is now sent even when the depot has
	    been mapped to a non-default location.

	#2208700 (Job #108547) **
	    'p4 verify -R' no longer fails to locate archives in depots that
	    have non-default path translations in their 'Map' fields.

	#2208520 (Job #108583) **
	    One of the tasks of 'p4 failover' involves updating certain
	    configurables on the master server to match the corresponding
	    values from the standby. If one of these configurables is set
	    to a zero-length string on the master server during failover,
	    that configurable on the master may not have been handled
	    correctly.  This has been fixed.

	#2208328 (Job #108446) **
	    Change to improve performance of the PopulateStreamRelationTable
	    upgrade step.

	#2208076 (Job #108430) **
	    When a child stream would inherit an exclude or isolate path from
	    a parent, the Stream View Match feature would incorrectly identify
	    the pathSource as the child stream.  This has been fixed.

	#2206113 (Job #108503) **
	    Ticket validation is now handled correctly for commands run against
	    edge servers via additional intermediary servers.

	#2203767 (Job #108316) **
	    'p4 depot -d' now uses the storage tables to prevent deletion of
	    depots still in use by either lazy copies or deduplicated shelves.

	#2202103 (Job #108010) **
	    'p4 login' no longer opens the db.view table.

	#2198808 (Job #108045) **
	    In a rare case an internal context structure can be NULL. This error
	    condition is now caught and reported.

	#2196727 (Job #108084) **
	    There was a race condition during the server upgrade process between
	    storage upgrade and the server lock cleanup.  This has been fixed.

	#2194604 (Job #108129) **
	    The current journal position is no longer computed incorrectly
	    during a concurrent journal rotation.

	#2190761 (Job #108026) *
	    Clients can now receive per-file progress information for files
	    less than 1KB in transfer size.

	#2190763 (Job #108027) **
	    File transfer progress information from the server now correctly
	    represents the filesize to be transfered instead of the final size
	    of the file on client's filesystem. This value is found by stating
	    the archive file.

	#2190311 (Job #108028) *
	    Clients that receive invalid encoded file types from a 22.1 or
	    greater server will now report an error.

	#2189571 (Job #073829) *
	    Task streams can be obliterated using the -T option.
	    This bug fix provides the additional ability to obliterate
	    task streams with the @change specification.

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

Major new functionality in 2021.2 (2021.2/2201121)

	#2180319 (Job #107778, #107792) **
	    The server's memory manager has changed to mimalloc, enabling
	    support for extensions on Windows servers. The mimalloc version
	    is shown in 'p4 -ztag info' and 'p4d -V'.

	    If running the server in a memory-constrained environment on Linux,
	    the vm.overcommit_memory sysctl should be set to a value of 2.
	    After changing this sysctl, additional swap space might be
	    needed. Further information is available in:
	      https://community.perforce.com/s/article/17500

	#2169718 (Job #106370, #107662) **
	    'p4 streams --viewmatch //depotpath' returns the stream name,
	    import path type, stream view path, and depot path of streams
	    that have views containing the given //depotPath, or that have
	    views contained by the depot path.  Multiple --viewmatch flags
	    with depot path arguments can be supplied.

	#2166164 (Job #92986) **
	    Graph depot objects are now reference counted to allow 'p4 graph gc'
	    to perform garbage collection and remove orphaned objects.

	#2158104 (Job #89984) **
	    Allow ditto (&) mappings to be used with paths in Stream Specs.
	    The new path type 'import&' allows the same source to be mapped to
	    multiple read only targets. See 'p4 help stream'.

	#2154547 (Job #71723, #96278, #104780) * ** *** ****
	    P4TRUST is no longer required for SSL connects where the server
	    provides a certificate that's not self-signed and can be verified
	    by the client.
	    
	    Clients based on the 2021.2 C/C++ P4API (including derived APIs)
	    will now attempt to verify the server's SSL certificate against the
	    local system's CA certificate store and compare the certificate's
	    subjects with the host portion of the P4PORT used by the client.
	    If successful P4TRUST will be not be required, otherwise P4TRUST
	    will continue to be required for that connection.
	    
	    The CA path may be specified with the 'ssl.client.ca.path'
	    client-side configurable, if the CA is not present in the system's
	    CA store or if validation against a specific CA is required. 
	    
	    Validation may be disabled by setting the 'ssl.client.cert.validate'
	    client-side configurable to 0 to revert to the prior P4TRUST only
	    mechanism. Setting this client-side configurable to 2 will skip the
	    CA validation, and only ensure that the server certificate's subject
	    matches the client's P4PORT.
	    
	    'p4 trust' may still be used regardless of the server certificate
	    validation, creating P4TRUST records for the IP of the server
	    and, if the server's certificate isn't self-signed, also the
	    hostname. The hostname recording can be disabled by setting the
	    'ssl.client.trust.name' client-side configurable to 0. Setting the
	    client-side configurable to 2 will prevent 'p4 trust' recording the
	    IP address of the server, but will still only record hostnames for
	    servers without self-signed certificates.
	    
	    These client-side configurable can be set for clients in P4CONFIG
	    files or passed into the client using the '-v' global flag. Proxies
	    and Brokers will accept the configurable as part of P4DEBUG or '-v'.
	    'p4 configure set' may be used on servers (requiring a full stop and
	    restart on change), which will apply to all server-to-server SSL
	    connections: client-side configuration on servers will not apply to
	    clients connecting to the server.

Technology Preview features in 2021.2 (2021.2/2201121)

	#2163747 (Job #105594) **
	    'p4 topology' lists all Helix Core services that are directly and
	    indirectly connected to the server on which the command is run.
	    Only super and operator users can run this command.

Minor new functionality in 2021.2 (2021.2/2201121)

	#2160834 (Job #87753) **
	    'p4 labels -R' limits output to autoreload labels.

	#2159960 (Job #104790) **
	    Any 'p4 submit' failure caused by a missing file of a moved file
	    pair now reports the additional error message "Cannot submit
	    half of a moved file pair".

	#2149027 (Job #74084) **
	    Forwarding replicas can now be chained off of edge servers.
	    To operate correctly, the forwarding replica MUST have a serverID
	    and a corresponding server spec with the ReplicatingFrom field
	    correctly populated.

	#2147664 (Job #97304) **
	    Propagating attributes are now supported on edge servers.

	#2142870 (Job #106990) **
	    Metrics are now reported for librarian operations on depot files
	    when the applicable thresholds are exceeded. The tracking metrics
	    are reported by librarian filetype (e.g. RCS, binary, etc.).

	#2135777 (Job #96589) **
	    The new configurable 'dm.open.show.globallocks', when set to 1,
	    causes commands that open files on edge servers to report any
	    global locks affecting those files by querying the commit server.

	#2128577 (Job #106385) **
	    'p4 describe' run against a graph depot change will now show any
	    submodule changes in the diff section, comparing the referenced
	    SHA1s.

	#2125653 (Job #105804) **
	    'p4 fstat -OL' run against an edge server will display any global
	    locks that apply to specified files by querying the commit server.

	#2122156 (Job #53509) **
	    Structured logs can now buffer log entries to be written after a
	    threshold has been reached. The threshold is defined on a per-log
	    basis in bytes with the new 'serverlog.bufsz.N' configurable.

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

Important note:

	Please refer to:
	http://www.perforce.com/perforce/r21.2/user/relnotes.txt
	to get up to date GA and post-GA information about this release.

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

Bugs fixed in 2021.2 Patch 10 (2021.2/2536545) (2023/12/20)

	#2536028 (Job #117156) **
	    Security fix. Addressed CVE-2023-35767.

	#2535435 (Job #117155) **
	    Security fix. Addressed CVE-2023-45849.

	#2535383 (Job #90618, #117153) * ** *** ****
	    Security fix. Addressed CVE-2023-5759.

	#2535372 (Job #117154) **
	    Security fix. Addressed CVE-2023-45319.

	#2509147 (Job #117741) * **
	    cURL (for extensions) has been upgraded 8.4.0 to address multiple
	    cURL CVEs: CVE-2023-38545 and CVE-2023-38546

	#2508491 (Job #116102) * ** *** ****
	    OpenSSL has been upgraded to 3.0.12

	#2499201 (Job #113319) **
	    Using 'p4 unzip' with -I option to exclude integration records
	    no longer causes a crash when the source of a lazy copy is not
	    included in the zip.

	#2489986 (Job #117222) **
	    Ensures that 'p4d -jr' command to replay the checkpoint in a
	    non empty directory does not update the existing database files.

Bugs fixed in 2021.2 Patch 9 (2021.2/2469788) (2023/07/27)

	#2467002 (Job #116141, #116277) **
	    Fixed problems with upgrade when a stream's view could not be
	    generated.

	#2466568 (Job #115391) **
	    Fixed stream view generation at a specific change causing an 
	    endless loop during upgrade.

	#2459095 (Job #114761) **
	    A 'p4 retype -l' request on a revision with a shelved
	    integration generates incorrect records in the db.storage
	    and db.storagesh tables. This has been fixed.

	#2458376 (Job #116101) * **
	    cURL (for extensions) has been upgraded 8.1.2 to address multiple
	    cURL CVEs: CVE-2023-28319 and CVE-2023-28322.

	#2450815 (Job #114820) **
	    'p4 reload -p' will now correctly report errors to the users and if
	    a journalwait is required, the correct journal offset is now used.

	#2447644 (Job #115980) * ** *** ****
	    OpenSSL has been upgraded to 1.1.1u

	#2445384 (Job #115503) * **
	    cURL (for extensions) has been upgraded 8.0.1 to address multiple
	    cURL CVEs: CVE-2023-27537, CVE-2023-23916, CVE-2023-23915 and
	    CVE-2023-23914.

	#2439416 (Job #115619) **
	    Fixed a 'p4 zip' bug where one half of a move/delete pair was
	    wrongly declared to be missing.

	#2424185 (Job #114515) **
	    Running 'p4 reopen' with multiple file arguments that include
	    moved files could cause a member of a moved pair to fail to be
	    reopened. This has been fixed.

	#2418365 (Job #112599) **
	    An integration from a stream client might fail with an error
	    message "The target stream of a stream spec integration must
	    be the stream associated with the current client ...".  This
	    error should only occur when using a '-S' parameter with the
	    integration command, but did sometimes occur when not using
	    '-S' when the parent of the associated stream has a noinherit
	    ParentView setting.  This has been fixed.

Bugs fixed in 2021.2 Patch 8 (2021.2/2410559) (2023/02/23)

	#2406327 (Job #106649, #114300) **
	    The Extension API call GetAutoClientApi() no longer creates an
	    invalid ticket when there is a server hostname lookup mismatch.
 
	#2403887 (Job #114346) * ** *** ****
	    OpenSSL has been upgraded to 1.1.1t

	#2396948 (Job #113971) **
	    Upgrade steps no longer run prematurely when being rerun on
	    a replica.

	#2396322 (Job #113831) **
	    Rerunning the last number of upgrade steps by setting the 'upgrade'
	    counter back using the 'p4 counter -f upgrade <n-known-good>'
	    command on the innermost server and then restarting the
	    innermost server now behaves correctly: the upgrade steps beyond
	    the value of the 'upgrade' counter run and then replicate outward.

	#2394796 (Job #113904) **
	    'p4 shelve -f -c' no longer leads to the deletion of shared shelve
	    archive files on the replica server.

	#2391143 (Job #113915) **
	    Enabling the buffering of server logs could cause a deadlock.
	    This has been fixed.

	#2389724 (Job #102670) **
	    'p4 fstat -Ob' now reports the correct path to archives when either
	    the depot has been mapped to a non-default location or
	    'server.depot.root' is in use.

Bugs fixed in 2021.2 Patch 7 (2021.2/2389249) (2023/01/05)

	#2388512 (Job #111114) **
	    Changes to Extension instance configurations that resulted in
	    changed depot paths on events taking a depot path no longer
	    produce duplicated events for the Extension instance.

	#2388511 (Job #106649) **
	    The Extensions GetAutoClientApi() function is now insensitive to
	    resolved hostname differences in P4PORT.

	#2386048 (Job #110812) **
	    Replicas will now re-run any failed upgrades on server restart 
	    and will continue to run any pending upgrades and those run in 
	    isolation on the replica.

	#2383354 (Job #113622) **
	    Fixed a problem where viewmatch streamviews did not update after
	    child stream was deleted.

	#2379601 (Job #112710) **
	    When 'p4 clean' updated a file on a workspace to match the depot,
	    the 'syncTime' field of the have record was not updated. This
	    would cause performance issues with 'p4 clean -m' since it
	    could not detect when MD5 calculations were not needed.
	    This has been fixed.

	#2376057 (Job #104047) **
	    Standby servers now check the correct db.upgrades table.

	#2372683 (Job #111274, #108480, #113338) **
	    'p4 topology' now displays the IP address that the server listens
	    on instead of the end user client IP address for the intermediary
	    servers.

	#2371896 (Job #99689) **
	    Peeking is no longer used for tables sharing their internal cache
	    within the server (i.e. by default, db.monitor and db.jnlack); this
	    prevents server crashes that resulted from commands using partial
	    modifications.

	#2366409 (Job #106524) **
	    'p4 unzip -n' will now scan the entire archive for possible missing 
	    archive errors.

	#2364636 (Job #109148) **
	    'p4 submit' and 'p4 shelve' now check only the depots they will
	    affect against 'filesys.depot.min'.

	#2357901 (Job #110505) **
	    'p4 fstat -L' and 'p4 sync -L' now supports spec and remote depot
	    file arguments.

	#2357218 (Job  #111988) **
	    Performance is improved for 'p4 edit' and 'p4 delete' with many
	    file arguments that include globally or exclusively-locked files
	    when run on an edge server separated from the commit server by more
	    than a minimal amount of network latency.

	#2354795 (Job #110507) **
	    'p4 zip -c' without file arguments no longer causes a server
	    crash.

	#2352780 (Job #104498) *
	    'p4 submit' could fail with error "Translation of file content
	    failed near line...", when server is in the Unicode mode. This
	    change fixes the problem.

	#2352689 (Job #112370) **
	    'p4 sync' for LFS files in graph depot on a replica could fail by
	    just generating LFS file attributes as file contents. This change
	    fixes the problem.
 
	#2348541 (Job #111933) **
	    The commit server now batches results returned to an edge server
	    when 'p4 lock -g' is ran on an edge server. The batch size can be
	    controlled by the configurable 'dm.locks.global.result.batch.net'.

	#2348536 (Job #112174) **
	    Performance is improved for when 'p4 lock -g' is ran on an edge
	    server by deferring replication to the end of the command when
	    multiple communication requests between the edge and commit
	    servers take place.

	#2347979 (Job #112471) **
	    Adding a non-existent file no longer worked when the client view
	    had two or more lines. This has been fixed.

	#2346887 (Job #112139) **
	    Performance is improved for when 'p4 revert' is ran on an edge
	    server for exclusively locked files by deferring replication to
	    the end of the command when multiple communication requests
	    between the edge and commit servers take place.

	#2346842 (Job #112112) **
	    Performance is improved for when 'p4 edit' or 'p4 delete' is ran on
	    an edge server for exclusively locked files by deferring
	    replication to the end of the command when multiple communication
	    requests between the edge and commit servers take place.

	#2346723 (Job #111953) **
	    'p4 lock -g' run on an edge server now uses the configurable
	    'dm.locks.global.batch.net'.

	#2345942 (Job #111963) **
	    'p4 fstat -OL' run on an edge server now uses the configurable
	    'dm.locks.global.batch.net'.

	#2345937 (Job #111569) **
	    'p4 revert -k' now batches the reverts written to the database based
	    on the new configurable 'dm.revert.batch' which defaults to 10000
	    where it previously wrote updates in batches of at least 100 files. 
	    On an edge server, this can also massively reduce the number unlock
	    calls sent to the commit server.

	#2345932 (Job #111623, #111625) **
	    Performance is improved for 'p4 edit' and 'p4 delete' with many
	    file arguments that include globally or exclusively-locked files
	    when run on an edge server separated from the commit server by more
	    than a minimal amount of network latency.

	#2345121 (Job #111950) **
	    The new configurable 'dm.locks.global.result.batch.net' controls the
	    batch size of global lock results returned from the commit server to
	    the edge server.

	#2342399 (Job #105742) **
	    'p4 diff' now correctly diffs against files that were shelved from
	    an integrate command that synced the files.

	#2342018 (Job #111778, #111927) **
	    The new configurables 'dm.locks.excl.batch.net' and
	    'dm.locks.global.batch.net' control the batch sizes of exclusive and
	    global lock requests from edge servers to commit servers.

	#2340342 (Job #112087) **
	    'p4 sync' of a graph depot file of type 'binary' when run on a
	    replica would sync a corrupted file to the replica client. This
	    change fixes the problem.

	#2337914 (Job #111948) **
	    The archives for shelves are no longer deleted by edge servers
	    configured with 'lbr.replication' set to 'shared' or 'ondemand',
	    in case they are in use by the commit server.

Bugs fixed in 2021.2 Patch 6 (2021.2/2338640)

	#2335571 (Job #101073) **
	    Performance is improved for 'p4 change -o' of shelved restricted
	    changes when the user has no access to the paths in the
	    restricted change.

	#2334155 (Job #112059) **
	    Queries to an autoreloaded label created on the same connection
	    as the query are once again possible.

	#2328900 (Job #111654) **
	    The default value for the 'dm.batch.net' configurable has been
	    increased from 1000 to 10000.

	#2327977 (Job #104342) **
	    Memory allocation failures generated within the server's memory
	    manager during 'journalcopy' are now reported rather than
	    ungracefully terminating the operation.

	#2327536 (Job #108701) **
	    Errors encountered on the P4TARGET server when attempting to
	    satisfy a foreground 'p4 journalcopy' command (that is, not
	    specified in a "startup.i" configurable) are now correctly
	    returned to the standby server rather than passed to the client.

	#2325260 (Job #111570) **
	    The performance of 'p4 unlock' with many file arguments has been
	    improved.

	#2324106 (Job #111469) **
	    'p4 lock -g' no longer can cause a hang when the number of files
	    being locked is an exact multiple of the batch size.

	#2323530 (Job #111529) **
	    Performance is improved for 'p4 lock' with many file arguments.
	    The new configurable dm.lock.batch, with a default value of 10000,
	    defines the batch size of records to be processed in one database
	    transaction.

Bugs fixed in 2021.2 Patch 5 (2021.2/2321724)

	#2319682 (Job #111227) **
	    The 'p4 istat' command could give different results depending on
	    whether a change specifier was given to an import path in the stream
	    associated with the client workspace.  This has been fixed.

	#2318196 (Job #111398, #111510) **
	    'p4 lock -g' and 'p4 fstat -OL' on edge servers now perform better
	    when a large number of results are returned.

	#2313915 (Job #110678) **
	    Added configurable dm.integ.multiplestreams, which takes values 0
	    and 1, with a default of 0.  When set to 1, multiple stream 
	    integration targets are allowed, as long as none of the streams is
	    a task stream.

	#2313704 (Job #111487, #104580) **
	    'p4 labelsync' no longer causes the server to crash when multiple
	    calls on the same connection reference the same autoreload label.

	#2312873 (Job #110633) **
	    Performance is improved for 'p4 reopen' with many file arguments
	    that include global or exclusively-locked files when run on an
	    edge server separated from the commit server by more than a
	    minimal amount of network latency.

	#2312250 (Job #109972) **
	    'p4 fstat' now correctly reports exclusive locks on edge servers
	    when run against any server in a commit/edge environment.

	#2309511 (Job #111546) * ** *** ****
	    OpenSSL has been upgraded to 1.1.1q

	#2307382 (Job #105291) **
	    Deleting entries in the protection table using 'p4 user -d -F'
	    or 'p4 group -d -F' will now delete inline comments and will no
	    longer shift the comment incorrectly.

	#2306882 (Job #111182) **
	    'p4 fstat -L' run against a server with graph depot repos no longer
	    causes the server to crash.

	#2304738 (Job #110978) **
	    'p4 protect' now validates that the 'Path' field in an owner's
	    sub-protections spec matches the argument provided.

	#2302638 (Job #111120, #111121, #111123, #111126) **
	    In a federated environment, where an edge server is at version
	    2020.2 or greater, but an upstream server at version 2020.1 or
	    less, the stream ParentView feature has been disabled. 
	    Similarly, if an upstream server is at 2021.1 or less, the 
	    streams --viewmatch feature has been disabled.  

	#2299228 (Job #111030) **
	    Fixed StreamQWorker bug where a stream change would not be 
	    processed if another stream was opened for edit.

	#2298781 (Job #108541) **
	    In rare cases a portion of the depot mapping logic could be
	    invalidated. A log message is now written rather than allow this
	    to happen.

	#2297778 (Job #110359) **
	    Ensure all lines of a WLIST custom spec field are correctly
	    formatted with leading tabs.

	#2297123 (Job #050785, #110843) ** ***
	    'p4 -ztag info' on the proxy server now displays the proxy cache
	    root directory and the correct proxy root directory.

	#2296902 (Job #109803) **
	    Fixed bug where any change to a stream specification would cause
	    StreamQWorker to process the change, even if the view had not 
	    changed.  Fixed so that StreamQWorker only processes the change
	    if the view is impacted.

	#2294479 (Job #110708) **
	    'p4 login' for a LDAP authenticated user will no longer report
	    a password expiry message if the user has an expired password
	    stored in the database.
	    
	#2288554 (Job #103362) **
	    Clients of type 'partitioned' can no longer converted to 'readonly'
	    type if there are files open on that client.

	#2278180 (Job #110361) **
	    Restarting a server with an unspecified host address ensures that
	    the correct date is now set for a new topology record in the
	    db.topology database table.

	#2277678 (Job #110387) **
	    Replication no longer fails to start if the extensions depot has
	    been deleted.

	#2275696 (Job #110093) ** *** ****
	    Services listening on SSL no longer allocate additional memory
	    for repeated connections.

Bugs fixed in 2021.2 Patch 4 (2021.2/2273812)

	#2272545 (Job #109910) **
	    Shelve promotion operation now no longer creates a new copy of the
	    shelve archive files unnecessarily when the commit server runs on
	    the version prior to 2020.2.

	#2271349 (Job #110050) **
	    'p4 storage -v' operation on the Commit server will no longer lead
	    to BAD! filesize for the ktext files as an unexpanded digest is
	    stored in the db.storagesh table during the shelve operation when
	    lbr.replication is set to shared.

	#2271156 (Job #108415) **
	    Globally locking a file from an edge server that is in the process
	    of being shelved from the same workspace will no longer result in
	    the shelve operation removing the lock on the edge server.

	#2270673 (Job #110049) **
	    An edge submit operation will no longer delete the existing shelve
	    archive files on the Edge server when lbr.replication is set to
	    shared.

	#2270123 (Job #109709) **
	    Opening large numbers exclusive locked (+l) files on an edge server
	    is now far more efficient.

	#2269259 (Job #109847) **
	    The 'p4 unshelve' command when performed through a different client,
	    could fail with "tampered with after resolve". This change fixes the
	    problem.

	#2268993 (Job #109150) **
	    If multiple references to an archive file exist, 'p4 restore' could
	    fail with a librarian delete error. This change fixes the problem.

	#2268892 (Job #109848) **
	    A shelve operation will no longer delete or overwrite the existing
	    shelve archive files on the edge server when the lbr.replication is
	    set to shared.

	#2266263 (Job #109988) **
	    'p4 info' run from P4V no longer takes an excessive number of
	    database locks.

Bugs fixed in 2021.2 Patch 3 (2021.2/2264565)

	#2260566 (Job #109959) * ** *** ****
	    OpenSSL has been upgraded to 1.1.1n to address
	    possible vulnerability CVE-2022-0778. 

	#2254700 (Job #109616) **
	    Replicating a journal containing older versions of database
	    records can crash the commit server. This has been fixed. 

Bugs fixed in 2021.2 Patch 2 (2021.2/2252059)

	#2245087 (Job #109370) **
	    'p4 submit -e' run on an Edge server will only create a new archive
	    if the existing archive is shared by other shelves.

	#2244753 (Job #109435) **
	    Shelve promotion will no longer overwrite the archive files created
	    by 'p4 shelve' prior to upgrading to 2020.2 that are still in use
	    by the other shelved changelists.

	#2244265 (Job #109210) **
	    'p4 lock' no longer returns text messages in tagged mode.

	#2242014 (Job #109343) **
	    Background submit now falls back to standard edge-submit if it
	    would overwrite archive files created by 'p4 shelve' prior to
	    upgrading to 2020.2 that are still in use by other shelved
	    changelists.

	#2241748 (Job #109389) **
	    Disallowed the use of integration option -1 with task stream
	    targets.

	#2237948 (Job #108847) **
	    'p4 submit' will no longer overwrite the archive files created by
	    'p4 shelve' prior to upgrading to 2020.2 that are still in use by
	    other shelved changelists.

	#2236990 (Job #108767) **
	    The 'p4d -xx' consistency check between db.change/db.desc now
	    correctly detects mismatches between the truncated and the complete
	    descriptions.

	#2234572 (Job #108864) **
	    Ensure tagged 'p4 groups -v' is lockless against db.user. 

	#2233170 (Job #108603, #109073) **
	    If a stream spec change was in a changelist, and the changelist 
	    Type was restricted, or the configurable defaultChangeType was
	    set to restricted, then a user with no list access could see 
	    the stream spec in the change, or the change in the list of
	    changes,or a user with only read access could read the change
	    description.  This has been fixed.

	#2231623 (Job #107091) **
	    Permit 'p4 stream -o' from a 2020.1 edge server connected to
	    a 2019.2 commit server.

	#2230127 (Job #108026) *
	    Clients can now receive per-file progress information for files
	    less than 1KB in transfer size.

	#2230127 (Job #108548, #108027) **
	    File transfer progress information from the server now correctly
	    represents the filesize to be transfered instead of the final size
	    of the file on client's filesystem. This value is found by stating
	    the archive file, which now works even when the depot has been
	    mapped to a non-default location.

	#2229316 (Job #108642) **
	    The DestinationServerAddress in 'p4 topology' is now recorded the
	    address the intermediary connected from rather than one of the
	    addresses the intermediary is listening on.

	#2226023 (Job #108547) **
	    'p4 verify -R' no longer fails to locate archives in depots that
	    have non-default path translations in their 'Map' fields.

	#2225062 (Job #108613) **
	    Starting a server with the -v command line option set to just a
	    number without logging category no longer causes a crash.

	#2225048 (Job #108503) **
	    Ticket validation between for certain commands failed when edge
	    servers and additional intermediary servers were involved. This
	    has been fixed.

	#2224929 (Job #108947) **
	    'p4 switch' run against an edge server now correctly propagates
	    the stash change to the commit server even if the shelve fails.

	#2224925 (Job #108934) * ** *** ****
	    The SSL handshake timeout configurable 'ssl.client.timeout' is no
	    longer overridden by shorter 'net.maxwait' configurable value.

	#2223926 (Job #108878, #109272) **
	    Under specific conditions, the server could have written log output
	    to STDOUT while using the RSH protocol. This has been fixed.

	#2222490 (Job #107762) **
	    Commands awaiting replication will no longer be inordinately
	    delayed by a journal rotation on the upstream server.

	#2222213 (Job #108791) **
	    This change excludes the db.refcntadjust table from replication.
	    It also changes 'p4 journaldbchecksums' so that it does not
	    process db.refcntadjust.

	#2221719 (Job #108618) **
	    When making several stream spec changes in quick succession,
	    the last change might not be reflected the streams view match
	    feature, due to timing issues.  This has been fixed.

Bugs fixed in 2021.2 Patch 1 (2021.2/2220431)

	#2217542 (Job #108779) **
	    The 'p4 reopen' command exhibited degraded performance after
	    an enhancement was made to prevent moved file pairs from being
	    split into different changelists. This performance problem has been
	    fixed.

	#2216544 (Job #108573, #108792) **
	    Updates to a globally locked file's change, user and type by
	    'p4 reopen' on an edge server is now correctly updated on the
	    commit server.

	#2209739 (Job #108451) **
	    The upgrade step "Compute and set Refcount" can generate many small
	    transactions in the journal table, degrading replication. This
	    change fixes the problem.

	#2208728 (Job #108591) **
	    A rare server crash related to streams with many import paths has
	    been fixed.

	#2208178 (Job #108446) **
	    Change to improve performance of the PopulateStreamRelationTable
	    upgrade step.

	#2207580 (Job #108581) **
	    'p4 opened -g' run against a forwarding replica chained to an edge
	    server no longer reports a distributed configuration error.

	#2207473 (Job #108553) **
	    Running 'p4 lock -g' on an edge server against a file that is
	    already locked in the current workspace will no longer report an
	    error.

	#2207212 (Job #108045) **
	    In a rare case an internal context structure can be NULL. This error
	    condition is now caught and reported.

	#2207211 (Job #108528) **
	    'p4 fstat -OL' run against a forwarding replica chained to an edge
	    server now reports global lock information.

	#2207057 (Job #108430) **
	    When a child stream would inherit an exclude or isolate path from
	    a parent, the Stream View Match feature would incorrectly identify
	    the pathSource as the child stream.  Fixed.

Bugs fixed in 2021.2 (2021.2/2201121)

	#2197174 (Job #108166) **
	    Fix for lock error "Locking failure: db.counters locked after
	    db.upgrades!" printed in log file, when using 'p4 upgrades'
	    after an upgrade.

	#2187256 (Job #101618) **
	    The 'fstat -Rs -e <change> -Ol <files>@=<change>' command
	    sometimes reported a digest for a shelved file that
	    is deleted, such as a file opened for delete or move/delete.
	    This variant of the fstat command been fixed to not report a
	    digest for a deleted file.

	#2185853 (Job #105430) **
	    Sometimes a merge resolve incorrectly joins the last two lines of
	    one part of the merge. This could occur if an end-of-line character
	    was missing on the last line of the file for the base, source, or
	    target.  This is now fixed when new configurable merge.dl.endeol,
	    which defaults to 0, is set to 1. However, some cases that might
	    resolve correctly without the configurable being set might now
	    register a conflict that must be resolved manually.

	#2186481 (Job #107943) **
	    'p4 stream -ov' can now be run against non-existing streams when
	    the 'dm.protects.streamspec' configurable is set to 1.

	#2184709 (Job #106310, #90948) **
	    The 'pull -u --batch' command could excessively retry its
	    batch when any transfer error occurred, causing the pull
	    thread to stall instead of moving on to request other archives.
	    This was due to a regression that was introduced in 2019.2 
	    by a fix to allow 'pull -u --batch' to resume after a failed
	    connection. Both of these bugs have been fixed.

	#2183935
	    Correct a Stream spec problem where identical LH Sides of an
	    Import& and a Remapped Path caused both the remapped view
	    and the import& view to appear in the client view.

	#2181960 (Job #102576, #107859) **
	    Now the maximum number of consecutive dots for each entry in the
	    Ignored field of stream specifications is 5.

	#2179619 (Job #104877) **
	    When the 'p4 reopen -c' command was used with command line
	    arguments containing moved files, it was possible for 'movedFrom'
	    and 'movedTo' files of the same move pair to be split across
	    different changelists. Now 'p4 reopen -c' with file arguments
	    will attempt to prevent a move pair split using the same
	    behavior used by 'p4 revert'. When only the 'movedTo' file is
	    specified for this scenario, both files of the moved pair
	    will be successfully reopened into the specified change. If
	    only the 'movedFrom' file is specified, the command will not
	    succeed.

	#2179490 (Job #107107) **
	    Prevent parent stream 'import+' causing child 'import' on same view
	    to be submittable.

	#2179101 (Job #107756) **
	    Parent import& should not override child import+ in generated Views.
	    For streams with identical paths in parent/child hierarchies, the
	    child import+ should override a parent's import&.

	#2178325 (Job #105916) **
	    'p4 reconcile' now correctly handles client workspaces with ditto
	    maps and change views.

	#2176143 (Job #107796) * ** *** ****
	    OpenSSL has been upgraded to 1.1.1k

	#2172103 (Job #107572) **
	    Running 'p4 sync' or 'p4 print' from a commit server could
	    report librarian errors when the requested archive files had
	    not yet been fetched from the originating edge server during
	    background submit. This has been fixed by allowing those archives
	    to be fetched on demand.

	#2170596 (Job #107537) ****
	    An example of setting a Broker's server ID has been added to the
	    sample configuration file.

	#2168285 (Job #106452) **
	     Command arguments in log files will no longer contain non-printable
	     characters when the '-T' tagged filter option is used.

	#2166345 (Job #107354) **
	    The digest and size fields for ktext files are now recomputed
	    when the submitted changelist involving those revisions is
	    updated. Setting a new configurable 'dm.change.skipkeyed' to 1 will
	    skip the recalculation and instead unset both fields.

	#2165780 (Job #107513) * **
	    SQLite (for extensions) has been upgraded 3.36.0

	#2165714 (Job #107736) **
	    OpenLDAP has been upgraded 2.4.59

	#2165146 (Job #107505) **
	    Cyrus-SASL has been patched to address CVE-2019-19906.

	#2163884 (Job #107252) **
	    ClientEntity server locks could leak when using the 'p4 changes'
	    command and specifying a non-existent client. This has been fixed.

	#2161336 (Job #107362) **
	    A storage scan could ignore valid archive files in a directory
	    after it processed a corrupt RCS format file. This has been fixed.

	#2160517 (Job #104080) **
	    'p4 shelve' now correctly deduplicates the ktext type files.

	#2159543 (Job #106143) **
	    The 'pull -u' threads on a standby server to a commit server
	    could fail to transfer archives from a promoted shelved change when
	    there is latency between the commit server and the edge server
	    causing slow transfer of archives to the commit server. This
	    has been addressed by allowing 'pull -u' threads on standby
	    servers to retry transfers of missing archives.

	#2159278 (Job #107283) **
	    'p4 unload -p' no longer fails to promote shelves files that are
	    deduplicated on the commit server.

	#2158807 (Job #107119) **
	    Correct bug preventing integration to a parentless task stream.

	#2158799 (Job #106906) **
	    Correct bug which prevented submitting a stream spec when
	    no stream spec permissions exist. Now OPEN permissions
	    anywhere will permit the submission of a stream spec. 
	    If any stream spec permission exists, then stream spec permissions
	    are required for a particular stream spec.

	#2158021 (Job #104691) **
	    A new configuration variable 'dm.populate.skipkeyed' set to 1
	    will unset the digest and filesize for ktext files during a
	    'p4 populate' command, rather than recalculate those fields.

	#2156138 (Job #107216) *
	    Old processors that cannot excute a pshufb instruction could
	    cause the p4 program to crash when transferring files via
	    a client with the 'compress' option set. This has been fixed.

	#2154419 (Job #107209) **
	    Fixed integration problem where after a file is moved, readded,
	    then integrated, a future integration of the readded file would
	    target the moved file on target integration side.

	#2153520 (Job #107115) **
	    Errors encountered while journalcopy'ing in a background thread
	    that are reported to the standby or forwarding-standby's server
	    log will no longer be missing parts of the error message.

	#2149996 (Job #91036) **
	    'p4 reconcile' now updates the synctime in the have records if the
	    file on the client is identical to the file on the server, but the
	    modtime has changed. This improves performance of future runs of
	    'p4 reconcile -m'.

	#2149899 (Bug #106795) **
	    Fixed undo problem, a source file is integrated, then a source file
	    revision is undone in the previous integration range, and a later
	    integration attempt claims that all revisions were already
	    integrated.  Now the configurable dm.integ.undo, and the integration
	    option 'p4 integ -Ru', will fix this problem by only creating
	    integration credits for previous integrations that were not in an
	    undo revision range.

	#2148282 (Job #99138) **
	    Support CPUs that do not implement SSSE3 extensions.
	    This caused 'p4 unzip' to fail on old AMD processors.

	#2144933 (Job #106998) **
	    'p4d -xx' now creates more consistent placeholder change records
	    during the db.rev/db.change table pair integrity check.

	#2143700 (Job #105082) * **
	    cURL (for extensions) has been upgraded 7.75.0
	    
	#2143699 (Job #105082) * **
	    Lua (for extensions) has been upgraded 5.3.6

	#2143698 (Job #105082) * **
	    Lua-cURLv3 (for extensions) has been upgraded 0.3.12

	#2142435 (Job #102776, #106796) **
	    Updated 'p4 help resolve' to distinguish between resolving with
	    auto-merge ('p4 resolve -am') and resolving manually with an accept
	    merge ('p4 resolve' and choose the 'am' option).  Resolving with
	    auto-merge will not guarantee that all integrations will be merges,
	    only that the choice is automated and merge will be chosen when
	    optimal.

	#2139752 (Job #106707) **
	    Running p4 submit -e multiple times on a shelf revision produced on
	    a pre-20.2 server in descending change number order can incorrectly
	    overwrite an archive. This has been fixed.

	#2139749 (Job #106645) **
	    'p4 storage -d -y' now releases all table locks while deleting or
	    moving archives.

	#2132125 (Job #106665) **
	    The the repo count limit on for licensed server is now unlimited
	    unless specifically overridden in the license.

	#2131605 (Job #106610) **
	    Running 'p4 submit -e -b' on a promoted shelved change could
	    cause the archives associated with that change to be lost on
	    the commit server. This has been fixed.

	#2130772 (Job #106579) **
	    The unlicensed limit on the repo count has been changed to 3.

	#2129703 (Job #106620) **
	    Errors encountered when querying an upstream server for the status
	    of an upgrade step are now correctly propagated back downstream.

	#2129526 (Job #106628) **
	    Under specific conditions that cannot normally occur, a file open
	    for integrate but without any resolve records could cause the server
	    to crash during submit. This has been fixed.

	#2124389 (Job #106228, #106333) **
	    'p4d -xv' now reports the error on each table that fails validation
	    instead of exiting after the first error.

	#2123505 (Job #105391) **
	    The performance of verifying archives using the storage tables
	    has been improved. ('p4 verify -Z', p4 storage -v')

	#2122892 (Job #106380) **
	    Missing archives were sometimes not reported by 'p4 verify -z'.
	    This has been fixed.

	#2120207 (Job #104527) **
	    Fix for wrong stream view generation with an embedded wildcard.
	    If a stream is a grandchild of the mainline, and has a one 
	    parameter import path, and share paths which are contained in the
	    import path, then the view generated for the first share path with
	    an embedded wildcard would be incorrect. This problem only occurred
	    on Linux and Windows platforms.

	#2116954 (Job #106209) **
	    'p4 license -u' commands run against replica servers are now
	    forwarded to the commit server for an authoritative response. To
	    query the license installed on a replica, run 'p4 license -u -l'.

	#2114810 (Job #106109) **
	    Deleting a client workspace containing a space character would
	    leave behind a client entity serverlock. This has been fixed.

	#2109884 (Job #107924) *
	    The thread based client transfer class can no longer enter a mutex
	    deadlock on connection error.

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

Major new functionality in 2021.1 (2021.1/2126753)

	#2050924 (Job #104782) **
	    Realtime Performance Counters
	    The server now tracks a number of server-wide performance counters
	    in file-backed shared memory. This functionality is enabled when
	    the 'rt.monitorfile' configurable is set, specifying the file to
	    use to back the shared memory. The counters can be read by external
	    applications using the P4API's MonItems class (see the example
	    p4mon-prometheus-exporter), by running 'p4d' with the new
	    '--show-realtime' flag or by running 'p4 monitor realtime'.
	    See 'p4 help realtime' for more information.

	    Changes to 'rt.monitorfile' will apply after a server restart.

Minor new functionality in 2021.1 (2021.1/2126753)

	#2122485 (Job #94296, #106251) **
	    It is now possible to move or rename a file where either the target
	    path is a substring of the source path, or vice-versa. For example:
	        p4 move //depot/main/A //depot/main/A/A

	#2118597 (Job #86714, #106051) **
	    A new flag, --purged-only, has been added to 'p4 obliterate'.
	    This flag removes previously purged rev records.

	#2104005 (Job #105160) **
	    Preview mode of 'p4 failover' now reports a "No errors reported"
	    message when no errors or problems are detected. Note that problem
	    detection in preview mode might report more errors or warnings than
	    would be encountered in an actual failover.

	#2095201 (Job #95658, #101217) **
	    When a file is moved or renamed, and a second file is re-added under
	    the original name of the first file, problems can occur when
	    integrations are done.  Previously, the re-added file could only be
	    integrated after the moved file was integrated, resolved, and
	    submitted. The re-added file is now integrated with the moved file,
	    and resolved after all other integrations have been resolved, and
	    all the resolves are submitted together.

	    The configurable bitmask dm.integ.tweaks can now be set to value
	    32 (default 0). If dm.integ.tweaks value 32 (e.g., 0x20 or 0b100000)
	    is set, then the re-added file will be integrated only after the
	    corresponding moved file has been integrated, resolved and submitted.
	    If value 32 is not set, then the re-added file will be integrated and
	    resolved with the corresponding moved file.

	    Please note that the action of setting other bits in the bitmask are
	    not affected by value 32.

	#2091268 (Job #105473) ** *** ****
	    More information about intermediaries is sent to the upstream server
	    and recorded in the route.csv structured log.

	#2091097 (Job #105182) **
	    Partitioned and readonly client names can now be used in revision
	    specifiers on commands run from the same client workspace. E.g.
	        p4 -c client-name files //...@client-name

	#2087184 (Job #105571) **
	    The 'p4 verify -z' code was sorting all the matching revisions
	    prior to elimiating the duplicates on the archive path.
	    The sort has been replaced with a btree lookup to eliminate
	    duplicates, reducing the memory requirements and allowing the
	    batch (-b) option to be specified.

	#2079569 (Job #105468) ** *** ****
	    Servers, proxies and brokers can now send complete SSL certificate
	    chains to the client. This happens automatically when multiple
	    certificates are included in certificate.txt. The chain certificates
	    should follow the end-entity certificate.

	#2077542 (Job #105387) * ** *** ****
	    The new client-side configurables, 'ssl.client.tls.version.max' and
	    'ssl.client.tls.version.min', control which TLS versions a client
	    will accept (defaulting to TLS 1.2 and 1.3). If not explicitly set,
	    explicitly setting 'ssl.tls.version.min' and 'ssl.tls.version.max'
	    will apply to client connections for backwards compatibility. Both
	    pairs of configurables may be used in servers, proxies or brokers
	    where both upstream (client-side) and downstream (server-server)
	    connections are made.

	#2074554 (Job #105285) **
	    Licenses can now be issued for MAC addresses in addition to
	    IP addresses and FQDNs.

	#2073209 (Jobs #95622, #102195) **
	    A new '--only [ MISSING | BAD ]' option has been added to
	    'p4 verify' to limit the errors reported. In particular the
	    '--only MISSING' avoids all expensive digest calculations and thus
	    speed up calls of 'p4 verify -t (--only MISSING)' used to transfer
	    missing archives on replicas.

	#2069250 (Jobs #78168, #105718) **
	    'p4 pull -l -j -v' run against a replicas will now report the total
	    number of bytes of journal that the upstream server has yet to
	    deliver, potentially across multiple journal rotations.

	    Setting the new 'rpl.track.behind' configurable to 1 or greater will
	    cause the metadata pull thread to request the lag data too, to be
	    exposed via a realtime performance counter and/or logged when 'rpl'
	    is set to at least 1.

	    Changes to 'rpl.track.behind' will not apply until replication has
	    restarted; a server restart is recommended.

	#2065650 (Job #91177) **
	    'p4 obliterate', when run in report mode, now includes how many
	    archived revisions it would delete (if any). With no -A flag, it
	    reports the number of archived revisions that it ignored.

	#2051466 (Job #104797) **
	    Replicas now guard against incorrect 'lbr.replication' configuration
	    in more cases. If 'lbr.replication' is set to 'readonly' or 'cache'
	    the replica will refuse to replicate if any of non-remote,
	    non-archive depots' archives are shared with the commit server.
	    If 'lbr.replication' is set to 'shared', all non-remote, non-archive
	    depots' archives must be shared with the commit server or the server
	    will refuse to replicate.

	#2045672 (Job #74704) *
	    This change allows the user to run 'p4d -xv' on one or more selected
	    tables, rather than all tables.

	#2045571 (Job #85778) **
	    Added server configurable dm.resolve.ignoredeleted, which
	    takes values 0 (default) and 1.

	    When a file has been deleted in branch A and not in branch B,
	    then a merge of B into A will result in a conflict, and a
	    subsequent 'p4 resolve -as' will skip the resolve.  When
	    dm.resolve.ignoredeleted is set to 1, 'p4 resolve -as' will
	    resolve by ignoring the source file changes.

	#2021125 (Job #102531) **
	    For 'p4 graph log' added an option '-P <path>' to allow limiting
	    output by path.

	#2015040 (Job #103743) *
	    The command-line client now performs fewer reads of config files.

	#2016164 (Job #103457) **
	    In the repo spec, added four new fields that will be used by gconn
	    to save mirroring attributes. These four fields are for SecretToken,
	    Status, ExcludedBranches and HideFetchUrl of a mirrored repo through
	    gconn.

	#2012864 (Job #64164) **
	    Server startup errors are now reported to stderr as well as the
	    configured log.

Bugs fixed in 2021.1 Patch 8 (2021.1/2452965) (2023/06/14)

	#2447644 (Job #115980) * ** *** ****
	    OpenSSL has been upgraded to 1.1.1u

	#2445383 (Job #115503) * **
	    cURL (for extensions) has been upgraded 8.0.1 to address multiple
	    cURL CVEs: CVE-2023-27537, CVE-2023-23916, CVE-2023-23915 and
	    CVE-2023-23914

	#2438757 (Job #115619) **
	    Fixed a 'p4 zip' bug where one half of a move/delete pair was
	    wrongly declared to be missing.

	#2417710 (Job #112599) **
	    An integration from a stream client might fail with an error
	    message "The target stream of a stream spec integration must
	    be the stream associated with the current client ...".  This
	    error should only occur when using a '-S' parameter with the
	    integration command, but did sometimes occur when not using
	    '-S' when the parent of the associated stream has a noinherit
	    ParentView setting.  This has been fixed.

Bugs fixed in 2021.1 Patch 7 (2021.1/2411457) (2023/02/27)

	#2406328 (Job #106649, #114300) **
	    The Extension API call GetAutoClientApi() no longer creates an
	    invalid ticket when there is a server hostname lookup mismatch.

	#2394813 (Job #113904) **
	    'p4 shelve -f -c' no longer leads to the deletion of shared shelve
	    archive files on the replica server.

Bugs fixed in 2021.1 Patch 6 (2021.1/2389558) (2023/01/06)

	#2388510 (Job #111114) **
	    Changes to Extension instance configurations that resulted in
	    changed depot paths on events taking a depot path no longer
	    produce duplicated events for the Extension instance.

	#2388509 (Job #106649) **
	    The Extensions GetAutoClientApi() function is now insensitive to
	    resolved hostname differences in P4PORT.

	#2379918 (Job #112710) **
	    When 'p4 clean' updated a file on a workspace to match the depot,
	    the 'syncTime' field of the have record was not updated. This
	    would cause performance issues with 'p4 clean -m' since it
	    could not detect when MD5 calculations were not needed.
	    This has been fixed.

	#2376238 (Job #99689) **
	    Peeking is no longer used for tables sharing their internal cache
	    within the server (i.e. by default, db.monitor and db.jnlack); this
	    prevents server crashes that resulted from commands using partial
	    modifications.

	#2376059 (Job #110387) **
	    Replication no longer fails to start if the extensions depot has
	    been deleted.

	#2376058 (Job #104047) **
	    Standby servers now check the correct db.upgrades table.

	#2373982 (Job #104342) **
	    Memory allocation failures generated within the server's memory
	    manager during 'journalcopy' are now reported rather than
	    ungracefully terminating the operation.

	#2373751 (Job #108701) **
	    Errors encountered on the P4TARGET server when attempting to
	    satisfy a foreground 'p4 journalcopy' command (that is, not
	    specified in a "startup.i" configurable) are now correctly
	    returned to the standby server rather than passed to the client.

	#2367692 (Job #106524) **
	    'p4 unzip -n' will now scan the entire archive for possible missing
	    archive errors.

	#2364874 (Job #109148) **
	    'p4 submit' and 'p4 shelve' now check only the depots they will
	    affect against 'filesys.depot.min'.

	#2357900 (Job #110505) **
	    'p4 fstat -L' and 'p4 sync -L' now supports spec and remote depot
	    file arguments.

	#2357271 (Job #111948) **
	    The archives for shelves are no longer deleted by edge servers
	    configured with 'lbr.replication' set to 'shared' or 'ondemand',
	    in case they are in use by the commit server.

	#2357219 (Job #111988) **
	    Performance is improved for 'p4 edit' and 'p4 delete' with many 
	    file arguments that include globally or exclusively-locked files 
	    when run on an edge server separated from the commit server by more 
	    than a minimal amount of network latency. 

	#2355118 (Job #110507) **
	    'p4 zip -c' without file arguments no longer causes a server
	    crash.

	#2353115 (Job #104498) *
	    'p4 submit' could fail with error "Translation of file content
	    failed near line...", when server is in the Unicode mode. This
	    change fixes the problem.

	#2348543 (Job #111950, #111933) **
	    The commit server now batches results returned to an edge server
	    when 'p4 lock -g' is ran on an edge server. The batch size can be
	    controlled by the configurable 'dm.locks.global.result.batch.net'.

	#2348537 (Job #112174) **
	    Performance is improved for when 'p4 lock -g' is ran on an edge
	    server by deferring replication to the end of the command when
	    multiple communication requests between the edge and commit
	    servers take place.

	#2347710 (Job #112471) **
	    Adding a non-existent file no longer worked when the client view
	    had two or more lines. This has been fixed.

	#2346889 (Job #112139) **
	    Performance is improved for when 'p4 revert' is ran on an edge
	    server for exclusively locked files by deferring replication to
	    the end of the command when multiple communication requests
	    between the edge and commit servers take place.

	#2346845 (Job #112112) **
	    Performance is improved for when 'p4 edit' or 'p4 delete' is run
	    on an edge server for exclusively locked files by deferring 
	    replication to the end of the command when multiple communication
	    requests between the edge and commit servers take place.

	#2346724 (Job #111953) **
	    'p4 lock -g' run on an edge server now uses the configurable
	    'dm.locks.global.batch.net'.

	#2345938 (Job #111569) **
	    'p4 revert -k' now batches the reverts written to the database based
	    on the new configurable 'dm.revert.batch' which defaults to 10000
	    where it previously wrote updates in batches of at least 100 files. 
	    On an edge server, this can also massively reduce the number unlock
	    calls sent to the commit server.

	#2345933 (Job #111623, #111625) **
	    Performance is improved for 'p4 edit' and 'p4 delete' with many
	    file arguments that include globally or exclusively-locked files
	    when run on an edge server separated from the commit server by more
	    than a minimal amount of network latency.

	#2343067 (Job #111778, #111927) **
	    The new configurables 'dm.locks.excl.batch.net' and
	    'dm.locks.global.batch.net' control the batch sizes of exclusive and
	    global lock requests from edge servers to commit servers.

	#2342016 (Job #111570) **
	    The performance of 'p4 unlock' with many file arguments has been
	    improved.

	#2340375 (Job #105742) **
	    'p4 diff' now correctly diffs against files that were shelved from
	    an integrate command that synced the files.

	#2339209 (Job #101073) **
	    Performance is improved for 'p4 change -o' of shelved restricted
	    changes when the user has no access to the paths in the
	    restricted change.

	#2339085 (Job #112237) **
	    Running 'p4 reshelve' from a forwarding replica could cause
	    the reshelved change to be orphaned if a later submit operation
	    from the upstream server reuses the same changelist number.
	    This has been fixed.

	#2331762 (Job #111529) **
	    Performance is improved for 'p4 lock' with many file arguments.
	    The new configurable dm.lock.batch, with a default value of 10000,
	    defines the batch size of records to be processed in one database
	    transaction.

	#2328899 (Job #111654) **
	    The default value for the 'dm.batch.net' configurable has been
	    increased from 1000 to 10000.

	#2326862 (Job #111398) **
	    'p4 lock -g' ran on an edge server now performs better when large
	    numbers of results are returned.

	#2324152 (Job #111487, #104580) **
	    'p4 labelsync' no longer causes the server to crash when multiple
	    calls on the same connection reference the same autoreload label.

	#2324107 (Job #111469) **
	    'p4 lock -g' no longer can cause a hang when the number of files
	    being locked is an exact multiple of the batch size.

	#2318507 (Job #111227) **
	    The 'p4 istat' command could give different results depending on
	    whether a change specifier was given to an import path in the stream
	    associated with the client workspace.  This has been fixed.


Bugs fixed in 2021.1 Patch 5 (2021.1/2313999)

	#2310299 (Job #110633) **
	    Performance is improved for 'p4 reopen' with many file arguments
	    that include global or exclusively-locked files when run on an
	    edge server separated from the commit server by more than a
	    minimal amount of network latency.

	#2309511 (Job #111546) * ** *** ****
	    OpenSSL has been upgraded to 1.1.1q

	#2308882 (Job #109972) **
	    'p4 fstat' now correctly reports exclusive locks on edge servers
	    when run against any server in a commit/edge environment.

	#2307381 (Job #105291) **
	    Deleting entries in the protection table using 'p4 user -d -F'
	    or 'p4 group -d -F' will now delete inline comments and will no
	    longer shift the comment incorrectly.

	#2306883 (Job #111182) **
	    'p4 fstat -L' run against a server with graph depot repos no longer
	    causes the server to crash.

	#2304740 (Job #110978) **
	    'p4 protect' now validates that the 'Path' field in an owner's
	    sub-protections spec matches the argument provided.

	#2303315 (Job #111120, #111121, #111123, #111126) **
	    In a federated environment, where an edge server is at version
	    2020.2 or greater, but an upstream server at version 2020.1 or
	    less, the stream ParentView feature has been disabled. 

	#2300409 (Job #108003) **
	    The server has been ported to run on Linux distros that
	    use Glibc 2.34 and above.

	#2298782 (Job #108541) **
	    In rare cases a portion of the depot mapping logic could be
	    invalidated. A log message is now written rather than allow this
	    to happen.

	#2297006 (Job #050785, #110843) ** ***
	    'p4 -ztag info' on the proxy server now displays the proxy cache
	    root directory and the correct proxy root directory.

	#2296462 (Job #110359) **
	    Ensure all lines of a WLIST custom spec field are correctly
	    formatted with leading tabs.

	#2294478 (Job #110708) **
	    'p4 login' for a LDAP authenticated user will no longer report
	    a password expiry message if the user has an expired password
	    stored in the database.

Bugs fixed in 2021.1 Patch 4 (2021.1/2274884)

	#2272546 (Job #109910) **
	    Shelve promotion operation now no longer creates a new copy of the
	    shelve archive files unnecessarily when the Commit server runs on
	    the version prior to 2020.2.

	#2271352 (Job #110050) **
	    'p4 storage -v' operation on the Commit server will no longer lead
	    to BAD! filesize for the ktext files as an unexpanded digest is
	    stored in the db.storagesh table during the shelve operation when
	    lbr.replication is set to shared.

	#2271157 (Job #108415) **
	    Globally locking a file from an edge server that is in the process
	    of being shelved from the same workspace will no longer result in
	    the shelve operation removing the lock on the edge server.
	    
	#2270670 (Job #110049) **
	    An edge submit operation will no longer delete the existing shelve
	    archive files on the Edge server when lbr.replication is set to
	    shared.

	#2269255 (Job #109847) **
	    The 'p4 unshelve' command when performed through a different client,
	    could fail with "tampered with after resolve". This change fixes the
	    problem.

	#2268893 (Job #109848) **
	    A Shelve operation will no longer delete or overwrite the existing
	    shelve archive files on the Edge server when the lbr.replication is
	    set to shared.

	#2263614 (Job #109150) **
	    If multiple references to an archive file exist, 'p4 restore' could
	    fail with a librarian delete error. This change fixes the problem.

	#2261734 (Job #109709) **
	    Opening large numbers exclusive locked (+l) files on an edge server
	    is now far more efficient.

	#2245071 (Job #109370) **
	    'p4 submit -e' run on an Edge server will only create a new archive
	    if the existing archive is shared by other shelves.

	#2244754 (Job #109435) **
	    Shelve promotion will no longer overwrite the archive files created
	    by 'p4 shelve' prior to upgrading to 2020.2 that are still in use
	    by the other shelved changelists.

	#2243783 (Job #109343) **
	    Background submit now falls back to standard edge-submit if it
	    would overwrite archive files created by 'p4 shelve' prior to
	    upgrading to 2020.2 that are still in use by other shelved
	    changelists.

Bugs fixed in 2021.1 Patch 3 (2021.1/2242478)

	#2241523 (Job #109210) **
	    'p4 lock' no longer returns text messages in tagged mode.

	#2237120 (Job #108847) **
	    'p4 submit' will no longer overwrite the archive files created by
	    'p4 shelve' prior to upgrading to 2020.2 that are still in use by
	    other shelved changelists.

	#2234451 (Job #108864) **
	    Ensure tagged 'p4 groups -v' is lockless against db.user.

	#2232268 (Job #107091) **
	    Permit 'p4 stream -o' from a 2020.1 edge server connected to
	    a 2019.2 commit server.

	#2231066 (Job #108947) **
	    'p4 switch' run against an edge server now correctly propagates
	    the stash change to the commit server even if the shelve fails.

	#2230131 (Job #108026) *
	    Clients can now receive per-file progress information for files
	    less than 1KB in transfer size.

	#2230131 (Job #108548, #108027) **
	    File transfer progress information from the server now correctly
	    represents the filesize to be transfered instead of the final size
	    of the file on client's filesystem. This value is found by stating
	    the archive file, which now works even when the depot has been
	    mapped to a non-default location.

	#2228624 (Job #96885) **
	    A concurrent parallel submit and revert in the same workspace
	    could turn off search permission on the clientEntity/0,d
	    serverlock directory. This has been fixed.

	#2226025 (Job #108547) **
	    'p4 verify -R' no longer fails to locate archives in depots that
	    have non-default path translations in their 'Map' fields.

	#2222577 (Job #108022) **
	    A storage upgrade request no longer computes the digest for
	    keyword revisions.

	#2225051 (Job #108613) **
	    Starting a server with the -v command line option set to just a
	    number without logging category no longer causes a crash.

	#2224926 (Job #108934) * ** *** ****
	    The SSL handshake timeout configurable 'ssl.client.timeout' is no
	    longer overridden by shorter 'net.maxwait' configurable value.

	#2221273 (Job #108767) **
	    The 'p4d -xx' consistency check between db.change/db.desc now
	    correctly detects mismatches between the truncated and the complete
	    descriptions.

	#2231955 (Job #108603, #109073) **
	    If a stream spec change was in a changelist, and the changelist 
	    Type was restricted, or the configurable defaultChangeType was
	    set to restricted, then a user with no list access could see 
	    the stream spec in the change, or the change in the list of
	    changes,or a user with only read access could read the change
	    description.  This has been fixed.

	#2208530 (Job #108045) **
	    In a rare case an internal context structure can be NULL. This error
	    condition is now caught and reported.

	#2206656 (Job #108503) **
	    Ticket validation between for certain commands failed when edge
	    servers and additional intermediary servers were involved. This
	    has been fixed.

	#2203663 (Job #107572) **
	    Running 'p4 sync' or 'p4 print' from a commit server could
	    report librarian errors when the requested archive files had
	    not yet been fetched from the originating edge server during
	    background submit. This has been fixed by allowing those archives
	    to be fetched on demand.

	#2197055 (Job #108166) **
	    Fix for lock error "Locking failure: db.counters locked after
	    db.upgrades!" printed in log file, when using 'p4 upgrades'
	    after an upgrade.

	#2194459 (Job #107762) **
	    Commands awaiting replication will no longer be inordinately
	    delayed by a journal rotation on the upstream server.

	#2185179 (Job #105430) **
	    Sometimes a merge resolve incorrectly joins the last two lines of
	    one part of the merge. This could occur if an end-of-line character
	    was missing on the last line of the file for the base, source, or
	    target.  This is now fixed when new configurable merge.dl.endeol,
	    which defaults to 0, is set to 1. However, some cases that might
	    resolve correctly without the configurable being set might now
	    register a conflict that must be resolved manually.

	#2187671 (Job #101618) **
	    The 'fstat -Rs -e <change> -Ol <files>@=<change>' command
	    sometimes reported a digest for a shelved file that
	    is deleted, such as a file opened for delete or move/delete.
	    This variant of the fstat command been fixed to not report a
	    digest for a deleted file.

	#2184060 (Job #106310, #90948) **
	    The 'pull -u --batch' command could excessively retry its
	    batch when any transfer error occurred, causing the pull
	    thread to stall instead of moving on to request other archives.
	    This was due to a regression that was introduced in 2019.2 
	    by a fix to allow 'pull -u --batch' to resume after a failed
	    connection. Both of these bugs have been fixed.

Bugs fixed in 2021.1 Patch 2 (2021.1/2179737)

	#2176143 (Job #107796) * ** *** ****
	    OpenSSL has been upgraded to 1.1.1k

	#2175270 (Job #107736) **
	    OpenLDAP has been upgraded 2.4.59

	#2175091 (Job #107513) * **
	    SQLite (for extensions) has been upgraded 3.36.0

	#2173869 (Job #105082) * **
	    cURL (for extensions) has been upgraded 7.75.0

	#2173868 (Job #105082) * **
	    Lua-cURLv3 (for extensions) has been upgraded 0.3.12

	#2173867 (Job #105082) * **
	    Lua (for extensions) has been upgraded 5.3.6

	#2170623 (Job #107537) ****
	    An example of setting a Broker's server ID has been added to the
	    sample configuration file.

	#2165146 (Job #107505) **
	    Cyrus-SASL has been patched to address CVE-2019-19906.

	#2160135 (Job #107283) **
	    'p4 unload -p' no longer fails to promote shelves files that are
	    deduplicated on the commit server.

	#2158786 (Job #106906) **
	    Correct bug which prevented submitting a stream spec when
	    no stream spec permissions exist. Now OPEN permissions
	    anywhere will permit the submission of a stream spec. 
	    If any stream spec permssion exists, then stream spec permissions
	    are required for a particular stream spec.

	#2158777 (Job #107119) **
	    Correct bug preventing integration to a parentless task stream.

	#2158291 (Job #106143) **
	    The 'pull -u' threads on a standby server to a commit server
	    could fail to transfer archives from a promoted shelved change when
	    there is latency between the commit server and the edge server
	    causing slow transfer of archives to the commit server. This
	    has been addressed by allowing 'pull -u' threads on standby
	    servers to retry transfers of missing archives.

	#2151124 (Job #104080) **
	    'p4 shelve' now correctly deduplicates the ktext type files.

Bugs fixed in 2021.1 Patch 1 (2021.1/2156517)

	#2153990 (Job #107209) **
	    Fixed integration problem where after a file is moved, readded,
	    then integrated, a future integration of the readded file would 
	    target the moved file on target integration side.

	#2152932 (Job #107115) **
	    Errors encountered while journalcopy'ing in a background thread
	    that are reported to the standby or forwarding-standby's server
	    log will no longer be missing parts of the error message.

	#2149798 (Bug #106795) **
	    Fixed undo problem, a source file is integrated, then a source file
	    revision is undone in the previous integration range, and a later
	    integration attempt claims that all revisions were already
	    integrated.  Now the configurable dm.integ.undo, and the integration
	    option 'p4 integ -Ru', will fix this problem by only creating
	    integration credits for previous integrations that were not in an
	    undo revision range.

	#2141256 (Job #106707) **
	    Running p4 submit -e multiple times on a shelf revision produced on
	    a pre-20.2 server in descending change number order can incorrectly
	    overwrite an archive. This has been fixed.

	#2145693 (Job #106998) **
	    'p4d -xx' now creates more consistent placeholder change records
	    during the db.rev/db.change table pair integrity check.

	#2142383 (Job #102776, #106796) **
	    Updated p4 help resolve to distinguish between resolving with
	    auto-merge ('p4 resolve -am') and resolving manually with an accept
	    merge ('p4 resolve' and choose the 'am' option).  Resolving with
	    auto-merge will not guarantee that all integrations will be merges,
	    only that the choice is automated and merge will be chosen when
	    optimal.

	#2141258 (Job #106645) **
	    'p4 storage -d -y' now releases all table locks while deleting or
	    moving archives.

	#2131210 (Job #106665) **
	    The the repo count limit on for licensed server is now unlimited
	    unless specifically overridden in the license.

	#2133102 (Job #106380) **
	    Missing archives were sometimes not report by 'p4 verify -z'.
	    This has been fixed.

	#2131954 (Job #106209) **
	    The license file now supports exposing extra capabilities (with
	    a new 'ExtraCapabilities' field) to be used for centralised
	    licensing of add-on products.

	#2131902 (Job #105391) **
	    The performance of verifying archives using the storage tables
	    has been improved. ('p4 verify -Z', p4 storage -v')

	#2131366 (Job #106620) **
	    Errors encountered when querying an upstream server for the status
	    of an upgrade step are now correctly propagated back downstream.

	#2132003 (Job #106579) **
	    The unlicensed limit on the repo count has been changed to 3.

	#2131954 (Job #106209) **
	    'p4 license -u' commands run against replica servers are now
	    forwarded to the commit server for an authorive response. To
	    query the license installed on a replica, run 'p4 license -u -l'.

	#2130925 (Job #106610) **
	    Running 'p4 submit -e -b' on a promoted shelved change could
	    cause the archives associated with that change to be lost on
	    the commit server. This has been fixed.

	#2129713 (Job #106628) **
	    Under specific conditions that cannot normally occur, a file open
	    for integrate but without any resolve records could cause the server
	    to crash during submit. This has been fixed.

	#2128705 (Job #104527) **
	    Fix for wrong stream view generation with an embedded wildcard.
	    If a stream is a grandchild of the mainline, and has a one 
	    parameter import path, and share paths which are contained in the
	    import path, then the view generated for the first share path with
	    an embedded wildcard would be incorrect. This problem only occurred
	    on Linux and Windows platforms.

Bugs fixed in 2021.1 (2021.1/2126753)

	#2118652 (Job #106130) *
	    The client-side threading for parallel sync no longer shares charset
	    converters, preventing race conditions during translation of unicode
	    type files which could corrupt the files in the workspace.

	#2116302 (Job #104119) **
	    Fix to allow a file in a virtual stream to be opened and submitted
	    if the file is in a share stream path with an embedded wildcard.

	#2110827 (Job #105817) **
	    The 'p4 extension --run' command no longer defaults to being
	    forwarded to the commit server from a replica.  The replica
	    now handles that command by default.  An Extension wishing
	    to forward the command may return a second boolean from the
	    'RunCommand' callback, e.g. 'return true, true'.

	#2102800 (Job #105889) **
	    The 'client -x' functionality, which is used by GitFusion,
	    will no longer crash the server in high concurrency scenarios.

	#2099787 (Job #105663, #105664) **
	    The tagged output of a describe of a submitted changelist will
	    contain a "streamDeleted" tag if the changelist contains a stream
	    spec and the stream has been deleted.

	    Similarly, if a stream was deleted after change N, then
	        'p4 stream -o //streampath@N'
	    will display this error message
	        "Stream //streampath was deleted after change N"

	#2095459 (Job #97388) **
	    Performance has been improved for a DVCS fetch that includes a
	    large number of moved files.

	#2088944 (Job #105655) **
	    'p4 obliterate -T -p -y' would create an inconsistent storage record.
	    This has been fixed.

	#2077935 (Job #103120) **
	    Updated 'p4 help' for maxlocktime, maxopenfiles, maxresults,
	    and maxscanrows to correctly reflect the commands which are
	    subject to those limits.

	#2073801 (Job #94424) **
	    'p4 monitor show' no longer displays negative seconds in elapsed
	    times during occurrences of high concurrency.

	#2073742 (Job #105077) **
	    'p4 print -o dir/... files/...' no longer fails with an
	    "incompatible wildcards" error when the wildcards specified are
	    indeed compatible but entries with differing wildcard patterns in
	    their paths exist in the protections table or the client's view.

	#2071513 (Job #105126, #105128) **
	    The 'p4 storage -d' command would report an error and terminate
	    when finding multiple zero reference count record matches for a
	    storage record key. This has been fixed to remove all such records.

	#2067210 (Job #105117) **
	    Improve wording in the changelist description for shelves created
	    by 'p4 switch'.

	#2062207 (Job #104928) **
	    Shelf promotion from an edge server that's sharing archives with a
	    pre-2020.2 commit server now works as expected.

	#2054133 (Job #104525) **
	    Improved performance for 'p4 depots' when there are large number of
	    graph repos and graph-permissions for a user. With thousands of
	    repos and permission entries, 'p4 depots' used to take over 5
	    seconds to complete and now it takes just a fraction of a second.

	#2047301 (Job #104689) **
	    Edge servers with 'lbr.replication=ondemand' no longer fail to
	    submit changes when the archives are not shared with the commit
	    server.

	#2046839 (Job #104687) **
	    Replicas now account for intermediary servers when checking for
	    shared archives with the commit server.

	#2041755 (Job #104031) **
	    For 'graph lfs-unlock' there was no permission check on the repo
	    for the file to be unlocked. The problem is fixed and now a
	    non-admin user needs read permission (or higher) on the repo for
	    the file to be unlocked. An admin user can unlock with -f option.

	#2040061 (Job #104332, #104452) **
	    The server lock clean up upgrade process did not clean server
	    locks created with a different bucket number or server lock
	    names that had been escaped. This has been fixed.

	#2031377 (Job #96144) **
	    When the '-s <serverID>' option is used with 'p4 failover'
	    on a mandatory standby server, this serverID value is
	    compared with the serverID of the master being journalcopied
	    by the standby server running the failover command. Failover
	    fails with an error if these values don't match.

	#2026234 (Job #100022) **
	    'p4 add' was not honoring exclusionary mappings properly. Despite
	    not matching the exclusionary mapping of the view, some files were
	    excluded. This change fixes the problem.

	#2019261 (Job #84701) *
	    Warnings no longer prevent subsequent commands being run in aliases
	    commands.

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

Major new functionality in 2020.2 (2020.2/2042415)

	#2006716 (Job #102377) **
	    Stream specifications have a new ParentView field, which can take
	    the value of 'inherit' or 'noinherit'. The ParentView field defines
	    whether a stream inherits a view from its parent.

	    If a ParentView is set to inherit, then the client and branch views
	    created from the Paths, Remapped and Ignored fields will also depend
	    on the corresponding fields in each of the stream's ancestors.
	    Streams have always had this inherit feature.

	    If the ParentView is set to noinherit, then the client and branch
	    views are not affected by the stream's ancestors.  Only the stream's
	    own Paths, Remapped, and Ignored fields affect the  views.  This can
	    be especially useful for release streams, where a view dependent on
	    a mainline ancestor can break a build when the ancestor's paths
	    change.

	    Use 'p4 stream --parentview noinherit' to create a stream with
	    a noinherit ParentView.

	    Use 'p4 stream parentview --noinherit' to convert an already
	    existing stream to a noinherit ParentView.

	    Task streams and virtual streams cannot be converted to noinherit
	    ParentViews.

	#1978496 (Job #102958) **
	    New shelved files are now deduplicated in the server's archives.
	    Any new files being shelved with the same content as an existing
	    shelved file will not create a new archive file and instead refer
	    to the existing archive file with few exceptional scenarios.

	    The archives of the new shelved files now have an additional
	    numerical suffix, which is used to avoid overwriting the shelved
	    content of shelves that share archives.

	#1892248 (Job #99170) **
	    Stream specifications can now be integrated, merged, or copied
	    from one stream to another.  When a stream specification is
	    integrated/merged/copied, the Paths, Remapped and Ignored fields
	    and any field which has an Openable property of 'propagate' will be
	    integrated/merged/copied to the target specification.

	    'p4 istat' now shows a stream specification's integration status,
	    and 'p4 streamlog' shows a stream specification's integration and
	    revision history.

	    The configurable 'dm.integ.streamspec' enables/disables stream
	    specification integration.  The configurable has 3 possible values:

	        0:  Stream spec integration is not allowed.
	        1:  Allow stream spec integration only for target streams with
	            noinherit ParentViews.
	        2:  Allow stream spec integration for all streams.

	    The default value for 'dm.integ.streamspec' is '1'.

	    Changes to 'dm.integ.streamspec' will apply to all new commands; no
	    server restart required.

Minor new functionality in 2020.2 (2020.2/2042415)

	#2009105 (Job #103382) **
	    The 2019.2 and later upgrade steps now execute in the background.
	    This could improve server availability and replication performance
	    during upgrades.

	#2004498 (Job #103106) ***
	    Proxy servers can now be configured to use a different path for the
	    database by either setting the P4PROOT environment variable or by
	    using the 'p4p -R' option. By default P4PROOT is the same as
	    P4PCACHE and both the database and archives will reside under the
	    same path.

	#2006869 (Job #99893) **
	    Server-side Extensions now have a line-tracing debug option.
	    This is set via the 'ExtDebug: tracing' instance-config setting.

	#2002566 (Job #96665) **
	    Failover now displays pertinent details about the source and target
	    of the failover process at the start of the command for both preview
	    and non-preview modes.

	#2000621 (Job #102212) **
	    Previously 'p4 submit -b' would fail if 'submit.allowbgtransfer'
	    was not configured, or when that command was run from a server that
	    was not an edge server. Now submit will succeed and fall back to the
	    default submit archive transfer behavior for those scenarios.

	#2000122 (Job #103386) **
	    A new command 'p4 upgrades' has been added which reports on the
	    status of server upgrades.

	#1999718 (Job #96207) **
	    Failover from a mandatory standby server when the master is not
	    participating would require specifying '-s <serverID>'.
	    Now failover for this scenario includes checking the
	    'ReplicatingFrom' field of the standby server spec for the
	    master's serverID when '-s' is not specified on the command line.

	#1997165 (Job #102264) **
	    The Perforce p4diag tool now starts automatically when the Perforce
	    Windows Service starts. This requires that p4diag.exe is in the same
	    directory as p4s.exe and that the service's P4DIAGLOG environment
	    variable is set to the p4diag log file name (For example:
	    'p4 set -s Perforce P4DIAGLOG=c:\p4\logs\p4diag_log.txt').
	    See the p4diag autostart KB article:
	        https://community.perforce.com/s/article/17317

	#1995020 (Job #103348) **
	    Beginning with the 2020.2 release, the first upgrade step of
	    each release will be 'InstallationRunning20xx.y'. This upgrade
	    step will be used internally so that an outer server can reliably
	    use functionality that is dependent upon an inner server running
	    the needed release.

	#1992939 (Job #96786) **
	    Part of the failover process involves stopping journalcopy and pull
	    threads. If the failover process fails, those threads needed to be
	    restarted manually. Now any 'pull -L', 'pull -u' or journalcopy
	    threads that were configured using startup.X configurables will
	    automatically be restarted when failover has failed.

	#1992723 (Job #103145) **
	    Archive files for archive depots can now be propagated to a replica
	    server by setting 'rpl.pull.archivedepots' configurable to '1' for
	    the replica that should pull the archives.

	    Changes to 'rpl.pull.archivedepots' will not apply until replication
	    has restarted; a server restart is recommended.

	#1990828 (Job #102935, #102936) **
	    Connections completing faster than the threshold defined by the new
	    'db.monitor.addthresh' configurable (specified in milliseconds) are
	    not added to the db.monitor table at monitor levels 1 or 2.
	    Connections that have not yet exceeded the threshold but will be
	    blocked waiting for a lock on a table in the schema are added to the
	    db.monitor table just prior to waiting for the lock.

	    Changes to 'db.monitor.addthresh' will apply to all new commands; no
	    server restart required.

	#1988495 (Job #101397) **
	    The p4d -xx option is no longer undoc and is now supported. This
	    option is documented in 'p4d -h'.
	    Always consult support before replaying any generated journal fixes.

	#1985598 (Job #100934) **
	    'p4 streamlog' now reports stream spec integration history.

	#1978985 (Job #100259) **
	    The new configurable 'dm.repo.unpack' controls how packfiles into
	    graph depot are handled, providing options for unpacking blobs into
	    individual loose-object files.
	    There are 3 options:
	        dm.repo.unpack=0 (keep pack files, this is same as old default)
	        dm.repo.unpack=1 (unpack on update, new default)
	        dm.repo.unpack=2 (unpack all)
	    Note the default behavior has changed from that of option 0 to 1.

	    Changes to 'dm.repo.unpack' will apply to new imports; no server
	    restart required.

	#1966440 (Job #102381) **
	    Stream specifications now support comments (## prefix) which can be
	    added to the Paths, Remapped and Ignored fields, either as a single
	    line or appended to a path or ignore line.

	        Paths:
	            ##AAAA
	            share ...       ##BBBB
	            ##CCCC

	        Remapped:
	            ##DDDD
	            remapped/... newlevel/remapped/...      ##EEEE
	            ##FFFF

	        Ignored:
	            ##GGGG
	            .o  ##HHH
	            ##IIII

	    Clients that cannot support comments may set the API level to 88 or
	    below (e.g. '-Zapi=88') to strip out any comments on 'p4 stream -o'.
	    If comments are disabled in this way, the client will be be allowed
	    to update stream specifications that already use comments.

	#1961430 (Job #94996) **
	    In the 'p4 tag' command, added a new '--exists' option to prevent
	    automatic creation of a label. With this change if the label does
	    not exist, 'p4 tag' with --exists will fail and says that the label
	    does not exist.

	#1953906 (Job #102103) **
	    In 'p4 repo --create-index <repo-name>' 3 fields (size, type and
	    lfsOID) will be left unset to speed up index creation. Later
	    anytime that these values are required, through a lazy-loading step
	    they will be gathered and updated into the related record in the
	    graphIndex table.

	#1943129 (Job #96807) ** *
	    Extensions now support signing, providing additional confidence
	    regarding who wrote the extension and whether it has been modified.
	    Signed extensions may be installed by admin users unless the new
	    'server.extensions.allow.admin' configurable is set to '0'. If all
	    extensions should be signed, the 'server.extensions.allow.unsigned'
	    configurable can be set to '0' (this will be the default in a future
	    release); even with this configurable set, super users can force
	    install unsigned extensions with the '--allow-unsigned' flag.
	    The Perforce public key is pre-installed; signed extensions from
	    other sources will require the public keys from those sources to be
	    installed before extensions from those sources will be accepted.

	    Changes to 'server.extensions.allow.admin' and
	    'server.extensions.allow.unsigned' will apply to new extensions
	    commands; no server restart required.

	#1926194 (Job #101185, #101196) **
	    'p4 -ztag have' for sync'ed graph depot repos now reports any
	    matching tags and if not in DETACHED_HEAD state also the current
	    sha of the branch being tracked.

	#1924457 (Job #100874) **
	    'p4 -ztag diff2' for graph depot now displays the type field.

Bugs fixed in 2020.2 Patch 9 (2020.2/2387343) (2022/12/19)

	#2380614 (Job #109148) **
	    'p4 submit' and 'p4 shelve' now check only the depots they will
	    affect against 'filesys.depot.min'.

	#2379705 (Job #104342) **
	    Memory allocation failures generated within the server's memory
	    manager during 'journalcopy' are now reported rather than
	    ungracefully terminating the operation.

	#2379504 (Job #99689) **
	    Peeking is no longer used for tables sharing their internal cache
	    within the server (i.e. by default, db.monitor and db.jnlack); this
	    prevents server crashes that resulted from commands using partial
	    modifications.

	#2378537 (Job #108701) **
	    Errors encountered on the P4TARGET server when attempting to
	    satisfy a foreground 'p4 journalcopy' command (that is, not
	    specified in a "startup.i" configurable) are now correctly
	    returned to the standby server rather than passed to the client.

	#2376061 (Job #104047)
	    Standby servers now check the correct db.upgrades table.

	#2376060  (Job #110387) **
	    Replication no longer fails to start if the extensions depot has
	    been deleted.

	#2357899 (Job #110505) **
	    'p4 fstat -L' and 'p4 sync -L' now supports spec and remote depot
	    file arguments.

	#2357264 (Job #111948) **
	    The archives for shelves are no longer deleted by edge servers
	    configured with 'lbr.replication' set to 'shared' or 'ondemand',
	    in case they are in use by the commit server.

	#2357220 (Job  #111988) **
	    Performance is improved for 'p4 edit' and 'p4 delete' with many
	    file arguments that include globally or exclusively-locked files
	    when run on an edge server separated from the commit server by more
	    than a minimal amount of network latency.

	#2354507 (Job #104498) *
	    'p4 submit' could fail with error "Translation of file content
	    failed near line..." when server is in the unicode mode. This has
	    been fixed.

	#2348548 (Job #111950, #111933) **
	    The new configurable 'dm.locks.global.result.batch.net' controls the
	    batch size of global lock results returned from the commit server to
	    the edge server.

	#2348538 (Job #112174) **
	    Performance is improved for when 'p4 lock -g' is ran on an edge
	    server by deferring replication to the end of the command when
	    multiple communication requests between the edge and commit
	    servers take place.

	#2346891 (Job #112139) **
	    Performance is improved for when 'p4 revert' is ran on an edge
	    server for exclusively locked files by deferring replication to
	    the end of the command when multiple communication requests
	    between the edge and commit servers take place.

	#2346848 (Job #112112) **
	    Performance is improved for when 'p4 edit' or 'p4 delete' is ran on
	    an edge server for exclusively locked files by deferring
	    replication to the end of the command when multiple communication
	    requests between the edge and commit servers take place.

	#2346725 (Job #111953) **
	    'p4 lock -g' run on an edge server now uses the configurable
	    'dm.locks.global.batch.net'.

	#2345939 (Job #111569) **
	    'p4 revert -k' now batches the reverts written to the database based
	    on the new configurable 'dm.revert.batch' which defaults to 10000
	    where it previously wrote updates in batches of at least 100 files. 
	    On an edge server, this can also massively reduce the number unlock
	    calls sent to the commit server.

	#2345934 (Job #111623, #111625) **
	    Performance is improved for 'p4 edit' and 'p4 delete' with many
	    file arguments that include globally or exclusively-locked files
	    when run on an edge server separated from the commit server by more
	    than a minimal amount of network latency.

	#2345120 (Job #111778, #111927) **
	    The new configurables 'dm.locks.excl.batch.net' and
	    'dm.locks.global.batch.net' control the batch sizes of exclusive and
	    global lock requests from edge servers to commit servers.

	#2345047 (Job #109972) **
	    'p4 fstat' now correctly reports exclusive locks on edge servers
	    when run against any server in a commit/edge environment.

	#2342015 (Job #111570) **
	    The performance of 'p4 unlock' with many file arguments has been
	    improved.

	#2340375 (Job #105742) **
	    'p4 diff' now correctly diffs against files that were shelved from
	    an integrate command that synced the files.

	#2339803 (Job #112237) **
	    Running 'p4 reshelve' from a forwarding replica could cause
	    the reshelved change to be orphaned if a later submit operation
	    from the upstream server reuses the same changelist number.
	    This has been fixed.

	#2331763 (Job #111529) **
	    Performance is improved for 'p4 lock' with many file arguments.
	    The new configurable 'dm.lock.batch', with a default value of 10000,
	    defines the batch size of records to be processed in one database
	    transaction.

	#2327868 (Job #111654) **
	    The default value for the 'dm.batch.net' configurable has been
	    increased from 1000 to 10000.

	#2326860 (Job #111398) **
	    'p4 lock -g' ran on an edge server now performs better when large
	    numbers of results are returned.

	#2324108 (Job #111469) **
	    'p4 lock -g' no longer can cause a hang when the number of files
	    being locked is an exact multiple of the batch size.

	#2315609 (Job #111487, #104580) **
	    'p4 labelsync' no longer causes the server to crash when multiple
	    calls on the same connection reference the same autoreload label.

	#2312014 (Job #111227) **
	    The 'p4 istat' command could give different results depending on
	    whether a change specifier was given to an import path in the stream
	    associated with the client workspace.  This has been fixed.

	#2309511 (Job #111546) * ** *** ****
	    OpenSSL has been upgraded to 1.1.1q

	#2307380 (Job #105291) **
	    Deleting entries in the protection table using 'p4 user -d -F'
	    or 'p4 group -d -F' will now delete inline comments and will no
	    longer shift the comment incorrectly.

	#2306884 (Job #111182) **
	    'p4 fstat -L' run against a server with graph depot repos no longer
	    causes the server to crash.

	#2304741 (Job #110978) **
	    'p4 protect' now validates that the 'Path' field in an owner's
	    sub-protections spec matches the argument provided.

	#2303978 (Job #111120, #111121, #111123) **
	    In a federated environment, where an edge server is at version
	    2020.2 or greater, but an upstream server is at version 2020.1 or
	    less, the stream ParentView feature has been disabled. 

	#2296431 (Job #050785, #110843) ** ***
	    'p4 -ztag info' on the proxy server now displays the proxy cache
	    root directory and the correct proxy root directory.

	#2294477 (Job #110708) **
	    'p4 login' for a LDAP authenticated user will no longer report
	    a password expiry message if the user has an expired password
	    stored in the database.

	#2293155 (Job #110359) **
	    Ensure all lines of a WLIST custom spec field are correctly
	    formatted with leading tabs.

Bugs fixed in 2020.2 Patch 8 (2020.2/2274883)

	#2272548 (Job #109910) **
	    Shelve promotion operation now no longer creates a new copy of the
	    shelve archive files unnecessarily when the Commit server runs on
	    the version prior to 2020.2.

	#2271358 (Job #110050) **
	    'p4 storage -v' operation on the Commit server will no longer lead
	    to BAD! filesize for the ktext files as an unexpanded digest is
	    stored in the db.storagesh table during the shelve operation when
	    lbr.replication is set to shared.

	#2270671 (Job #110049) **
	    An edge submit operation will no longer delete the existing shelve
	    archive files on the Edge server when lbr.replication is set to
	    shared.

	#2270128 (Job #109709) **
	    Opening large numbers exclusive locked (+l) files on an edge server
	    is now far more efficient.

	#2269251 (Job #109847) **
	    The 'p4 unshelve' command when performed through a different client,
	    could fail with "tampered with after resolve". This change fixes the
	    problem.

	#2268894 (Job #109848) **
	    A Shelve operation will no longer delete or overwrite the existing
	    shelve archive files on the Edge server when the lbr.replication is
	    set to shared.

	#2262922 (Job #109150) **
	    If multiple references to an archive file exist, 'p4 restore' could
	    fail with a librarian delete error. This change fixes the problem.

	#2261723 (Job #108415) **
	    Globally locking a file from an edge server that is in the process
	    of being shelved from the same workspace will no longer result in
	    the shelve operation removing the lock on the edge server.

	#2254702 (Job #109616) **
	    Replicating a journal containing older versions of database records
	     can crash the commit server. This has been fixed. 

	#2248386 (Job #108573) **
	    Updates to a globally locked file's change, user and type by
	    'p4 reopen' on an edge server is now correctly updated on the
	    commit server.
	    
	#2248386 (Job #108553) **
	    Running 'p4 lock -g' on an edge server against a file that is
	    already locked in the current workspace will no longer report an
	    error.

	#2247473 (Job #101504, #105052) **
	    File handles are no longer inherited by trigger processes.

	#2245072 (Job #109370) **
	    'p4 submit -e' run on an Edge server will only create a new archive
	    if the existing archive is shared by other shelves.

	#2244756 (Job #109435) **
	    Shelve promotion will no longer overwrite the archive files created
	    by 'p4 shelve' prior to upgrading to 2020.2 that are still in use
	    by the other shelved changelists.

	#2244266 (Job #109210) **
	     'p4 lock' no longer returns text messages in tagged mode. 

	#2242013 (Job #109343) **
	    Background submit now falls back to standard edge-submit if it
	    would overwrite archive files created by 'p4 shelve' prior to
	    upgrading to 2020.2 that are still in use by other shelved
	    changelists.

	#2236941 (Job #108847) **
	    'p4 submit' will no longer overwrite the archive files created by
	    'p4 shelve' prior to upgrading to 2020.2 that are still in use by
	    other shelved changelists.

	#2233843 (Job #108864) **
	    Ensure tagged 'p4 groups -v' is lockless against db.user.

	#2232267 (Job #107091) **
	    Permit 'p4 stream -o' from a 2020.1 edge server connected to
	    a 2019.2 commit server.

	#2230126 (Job #108026) *
	    Clients can now receive per-file progress information for files
	    less than 1KB in transfer size.

	#2230126 (Job #108548, #108027) **
	    File transfer progress information from the server now correctly
	    represents the filesize to be transfered instead of the final size
	    of the file on client's filesystem. This value is found by stating
	    the archive file, which now works even when the depot has been
	    mapped to a non-default location.

	#2228625 (Job #96885) **
	    A concurrent parallel submit and revert in the same workspace
	    could turn off search permission on the 
	    clientEntity/0,d serverlock directory. This has been fixed.

	#2225053 (Job #108613) **
	    Starting a server with the -v command line option set to just a
	    number without logging category no longer causes a crash.

	#2224927 (Job #108934) * ** *** ****
	    The SSL handshake timeout configurable 'ssl.client.timeout' is no
	    longer overridden by shorter 'net.maxwait' configurable value.

	#2221454 (Job #108767) **
	    The 'p4d -xx' consistency check between db.change/db.desc now
	    correctly detects mismatches between the truncated and the complete
	    descriptions.

	#2220734 (Job #108045) **
	    In a rare case an internal context structure can be NULL. This error
	    condition is now caught and reported.

	#2215872 (Job #108541) **
	    In rare cases a portion of the depot mapping logic could be
	    invalidated. A log message is now written rather than allow this
	    to happen.

	#2206655 (Job #108503) **
	    Ticket validation between for certain commands failed when edge
	    servers and additional intermediary servers were involved. This
	    has been fixed.

	#2203943 (Job #107572) **
	    Running 'p4 sync' or 'p4 print' from a commit server could
	    report librarian errors when the requested archive files had
	    not yet been fetched from the originating edge server during
	    background submit. This has been fixed by allowing those archives
	    to be fetched on demand.

	#2196580 (Job #108166) **
	    Fix for lock error "Locking failure: db.counters locked after
	    db.upgrades!" printed in log file, when using 'p4 upgrades'
	    after an upgrade.

	#2194049 (Job #107762) **
	    Commands awaiting replication will no longer be inordinately
	    delayed by a journal rotation on the upstream server.

	#2188020 (Job #101618) **
	    The 'fstat -Rs -e <change> -Ol <files>@=<change>' command
	    sometimes reported a digest for a shelved file that
	    is deleted, such as a file opened for delete or move/delete.
	    This variant of the fstat command been fixed to not report a
	    digest for a deleted file.

	#2184402 (Job #105430) **
	    Sometimes a merge resolve incorrectly joins the last two lines of
	    one part of the merge. This could occur if an end-of-line character
	    was missing on the last line of the file for the base, source, or
	    target.  This is now fixed when new configurable merge.dl.endeol,
	    which defaults to 0, is set to 1. However, some cases that might
	    resolve correctly without the configurable being set might now
	    register a conflict that must be resolved manually.

	#2183916 (Job #106310, #90948) **
	    The 'pull -u --batch' command could excessively retry its
	    batch when any transfer error occurred, causing the pull
	    thread to stall instead of moving on to request other archives.
	    This was due to a regression that was introduced in 2019.2 
	    by a fix to allow 'pull -u --batch' to resume after a failed
	    connection. Both of these bugs have been fixed.

Bugs fixed in 2020.2 Patch 7 (2020.2/2179691)

	#2176143 (Job #107796) * ** *** ****
	    OpenSSL has been upgraded to 1.1.1k

	#2175273 (Job #107736) **
	    OpenLDAP has been upgraded 2.4.59

	#2175090 (Job #107513) * **
	    SQLite (for extensions) has been upgraded 3.36.0

	#2174085 (Job #105082) * **
	    cURL (for extensions) has been upgraded 7.75.0

	#2174083 (Job #105082) * **
	    Lua-cURLv3 (for extensions) has been upgraded 0.3.12

	#2174082 (Job #105082) * **
	    Lua (for extensions) has been upgraded 5.3.6

	#2165146 (Job #107505) **
	    Cyrus-SASL has been patched to address CVE-2019-19906.

	#2160136 (Job #107283) **
	    'p4 unload -p' no longer fails to promote shelves files that are
	    deduplicated on the commit server.

	#2158203 (Job #107119) **
	    Correct bug preventing integration to a parentless task stream.

	#2158189 (Job #106906) **
	    Correct bug which prevented submitting a stream spec when
	    no stream spec permissions exist. Now OPEN permissions
	    anywhere will permit the submission of a stream spec. 
	    If any stream spec permission exists, then stream spec permissions
	    are required for a particular stream spec.

	#2157662 (Job #106143) **
	    The 'pull -u' threads on a standby server to a commit server
	    could fail to transfer archives from a promoted shelved change when
	    there is latency between the commit server and the edge server
	    causing slow transfer of archives to the commit server. This
	    has been addressed by allowing 'pull -u' threads on standby
	    servers to retry transfers of missing archives.

	#2156961 (Job #107216) *
	    Old processors that cannot excute a pshufb instruction could
	    cause the p4 program to crash when transferring files via
	    a client with the 'compress' option set. This has been fixed.

	#2152501 (Job #107115) **
	    Errors encountered while journalcopy'ing in a background thread
	    that are reported to the standby or forwarding-standby's server
	    log will no longer be missing parts of the error message.

	#2150938 (Job #104080) **
	    'p4 shelve' now correctly deduplicates the ktext type files.

Bugs fixed in 2020.2 Patch 6 (2020.2/2152297)

	#2147436 (Job #106795) **
	    Fixed undo problem, a source file is integrated, then a source file
	    revision is undone in the previous integration range, and a later
	    integration attempt claims that all revisions were already
	    integrated.  Now the configurable dm.integ.undo, and the integration
	    option 'p4 integ -Ru', will fix this problem by only creating
	    integration credits for previous integrations that were not in an
	    undo revision range.

	#2146810 (Job #99138) **
	    Support CPUs that do not implement SSSE3 extensions.
	    This caused 'p4 unzip' to fail on old AMD processors.

	#2146464 (Job #106998) **
	    'p4d -xx' now creates more consistent placeholder change records
	    during the db.rev/db.change table pair integrity check.

	#2141259 (Job #106645) **
	    'p4 storage -d -y' now releases all table locks while deleting or
	    moving archives.

	#2141257 (Job #106707) **
	    Running p4 submit -e multiple times on a shelf revision produced on
	    a pre-20.2 server in descending change number order can incorrectly
	    overwrite an archive. This has been fixed.

	#2142324 (Job #102776, #106796) **
	    Updated p4 help resolve to distinguish between resolving with
	    auto-merge ('p4 resolve -am') and resolving manually with an accept
	    merge ('p4 resolve' and choose the 'am' option).  Resolving with
	    auto-merge will not guarantee that all integrations will be merges,
	    only that the choice is automated and merge will be chosen when
	    optimal.

	#2132796 (Job #106620) **
	    Errors encountered when querying an upstream server for the status
	    of an upgrade step are now correctly propagated back downstream.

	#2131999 (Job #106209) **
	    The license file now supports exposing extra capabilities (with
	    a new 'ExtraCapabilities' field) to be used for centralised
	    licensing of add-on products.

	#2128951 (Job #106610) **
	    Running 'p4 submit -e -b' on a promoted shelved change could
	    cause the archives associated with that change to be lost on
	    the commit server. This has been fixed.

	#2124832 (Job #106380) **
	    Missing archives were sometimes not report by 'p4 verify -z'.
	    This has been fixed.

	#2124826 (Job #105391) **
	    The performance of verifying archives using the storage tables
	    has been improved. ('p4 verify -Z', p4 storage -v')

	#2122129 (Job #104332, #104452) **
	    The server lock clean up upgrade process did not clean server
	    locks created with a different bucket number or server lock
	    names that had been escaped. This has been fixed.

	#2119867 (Job #104527) **
	    Fix for wrong stream view generation with an embedded wildcard.
	    If a stream is a grandchild of the mainline, and has a one 
	    parameter import path, and share paths which are contained in the
	    import path, then the view generated for the first share path with
	    an embedded wildcard would be incorrect. This problem only occurred
	    on Linux and Windows platforms.

	#2118587 (Job #106130) *
	    The client-side threading for parallel sync no longer shares charset
	    converters, preventing race conditions during translation of unicode
	    type files which could corrupt the files in the workspace.

	#2115767 (Job #104119) **
	    Fix to allow a file in a virtual stream to be opened and submitted
	    if the file is in a share stream path with an embedded wildcard.

	#2113026 (Job #105817) **
	    The 'p4 extension --run' command no longer defaults to being
	    forwarded to the commit server from a replica.  The replica
	    now handles that command by default.  An Extension wishing
	    to forward the command may return a second boolean from the
	    'RunCommand' callback, e.g. 'return true, true'.

Bugs fixed in 2020.2 Patch 5 (2020.2/2112800)

	#2109455 (Job #106050) **
	    Shelf promotion where the archive is already in use but differs on
	    the commit server is now handled by the edge server.

	#2105325 (Job #105997) * ** *** ****
	    OpenSSL has been upgraded to 1.1.1k

Bugs fixed in 2020.2 Patch 4 (2020.2/2102240)

	#2102049 (Job #105871) **
	    Submitting a shelved change now correctly updates the archive file
	    names, preventing the archives from being overwritten.

	#2101300 (Job #105862) **
	    Promoted shelves that were deduplicated on the commit server are
	    no longer overwritten by updates from edge servers.

	#2101237 (Job #105834) **
	    If a shelved archive is to be deduplicated, the archive that will
	    be used instead is now checked before the source file is removed.
	    If the target file is missing, the source file moved to the target.

	#2101238 (Job #105889) **
	    The 'client -x' functionality, which is used by GitFusion,
	    will no longer crash the server in high concurrency scenarios.

	#2099024 (Job #105663, #105664) **
	    The tagged output of a describe of a submitted changelist will
	    contain a "streamDeleted" tag if the changelist contains a stream
	    spec and the stream has been deleted.

	    Similarly, if a stream was deleted after change N, then
	        'p4 stream -o //streampath@N'
	    will display this error message
	        "Stream //streampath was deleted after change N"

	#2093459 (Job #97388) **
	    Performance has been improved for a DVCS fetch that includes a
	    large number of moved files.

Bugs fixed in 2020.2 Patch 3 (2020.2/2093246)

	#2093059 (Job #104926) **
	    Shelve promotions from an edge to a 20.2 commit server that hasn't
	    been restarted since first being upgraded no longer strips the
	    shelved archive suffix from the shelved metadata.

	#2092474 (Job #105617) **
	    Tagging very large numbers of files from an edge server against
	    a global label could fail with network errors.

	#2090370 (Job #105650) **
	    'p4 move' no longer takes exclusive locks on db.resolvex, db.revsh,
	    db.storage, db.storagesh and db.storagesx when unnecessary.

	#2090311 (Job #104926) **
	    Unshelving a file on an edge server onto an already open file causes
	    the shelved file to be copied to the edge server for resolve to use.
	    The archive file for the shelve now retains the correct suffix.

	#2085091 (Job #104559) **
	    'p4 revert' now only acquires when necessary exclusive locks on
	    db.resolvex, db.revsh, db.storagesh and db.storagesx, and instead
	    acquires shared locks on db.resolvex and db.revsh.

	#2083870 (Job #105397) **
	    A save of a stream specification in which no changes are actually
	    made to the specification no longer creates a changelist or consumes
	    a changelist number.

	#2081609 (Job #105481) **
	    Submits not involving a shelf not longer take a write lock
	    on the db.storagesh table.

	#2081534 (Job #104778) ***
	    A potential deadlock on the proxy server's table has been fixed.

	#2080568 (Job #104559) **
	    'p4 revert' no longer acquires an exclusive lock on db.storage.

	#2075830 (Job #105037) **
	    Correct regression which reported the wrong error for
	    'p4 stream xxx' for non-existing streams.
	    Now it correctly reports 'Stream does not exist'.

	#2075236 (Job #105149) **
	    'p4 describe change' from an edge server was reporting
	    a 'Slashes-in-client' error for shelves created by 'p4 switch'.
	    This has been fixed.

	#2074427 (Job #93890) **
	    Suppress the "Slashes (/) not allowed in 'ws0//sroot/main'." error
	    on 'p4 shelf -d' and 'p4 change -d' on shelves created by
	    'p4 switch'.

	#2073955 (Job #104979) **
	    Ensure conversion of stream ParentView to noninherit retains the
	    ChangeView revision.

	#2073900 (Job #95097) **
	    'p4 switch' now checks the stream hierarchy to determine if the
	    streams are related rather than assuming streams in the same depot
	    are related. To switch to an unrelated stream in the same same
	    depot, you will now need to provide the new --allow-unrelated flag.

	#2050052 (Job #104777) **
	    Edge servers now remove no longer needed shelved file archives in
	    specific circumstances where they were previously not removed.

Bugs fixed in 2020.2 Patch 2 (2020.2/2075706)

	#2069476 (Job #105118) **
	    Ensure shelved archives are present when replacing with -f or -r.

	#2066952 (Job #104764) **
	    The logging support in extensions now correctly handles the tables
	    with numeric keys.

	#2065148 (Job #104359) **
	    Protections errors during batched archive replication no longer
	    causes ondemand fetches to wait indefinitely.

	#2063491 (Job #104927) **
	    When promoting a shelf from a 20.2 edge to a pre-20.2 commit
	    server, identical files in the shelf were incorrectly deduplicated.
	    This has been fixed.

	#2063482 (Job #104928) **
	    Shelf promotion from an edge server that's sharing archives with a
	    pre-2020.2 commit server now works as expected.

	#2063196 (Job #105093) **
	    When background submit results in failed archive transfers,
	    those archives may be restored using 'pull -u -t'. However, if
	    the archives were not restored to the commit server before
	    commands attempt to fetch them, the pull command might lose
	    the ability to recover them due to the entries being removed from
	    the commit server's rdb.lbr. This behavior has been fixed.

	#2061370 (Job #105056) * **
	    The default spec definitions known to P4Lua have been updated.

	#2059990 (Job #104937) **
	    Shelf promotions containing an integration can lead to storage
	    inconsistencies. This has been fixed.

	#2054722 (Job #104525) **
	    The performance of 'p4 depots' command was poor when it was run
	    by a regular user (not a super-user) with a large number of graph
	    repos and graph-permissions. This performance is now improved.

	#2050148 (Job #104049) **
	    Crash on 'p4 fix' when jobspec has no Status field. Fixed.

	#2050052 (Job #104777) **
	    Edge servers now remove no longer needed shelved file archives in
	    specific circumstances where they were previously not removed.

	#2050051 (Job #104736) **
	    Under specific conditions it was possible for a 'p4 shelve' with
	    either the '-r' or '-f' flag to skip transfer of a file already
	    shelved and unchanged in such a way that the server believed the
	    file to have been transfered, leading to errors accessing the
	    archive.  This has been fixed.

	#2048298 (Job #104167) **
	    Edge servers now remove temporary archives created during the submit
	    of moved files prior to being converted to lazy copies.

	#2046121 (Job #104674) **
	    'p4 -I sync' and 'p4 -I submit' will no longer choose progress over
	    parallel, if parallel would be used. The prior behavior can be
	    restored by setting api=88 or below.

	#2044187 (Job #104530) **
	    Change to reduce lock held time on db.stream when generating
	    a view with 'p4 stream -ov'.

	#2043733 (Job #104537) **
	    'p4 sync -f' now correctly records the syncTime for any files that
	    are refreshed.

	#2042937 (Job #102314) *
	    Windows clients now correctly report when they are unable to replace
	    files when using the long filename support.

	#2042921 (Job #104537) **
	    'p4 sync' now correctly maintains the recorded syncTime for any
	    files that would be replaced, but are skipped when the digests
	    match.

	#2042013 (Job #104403) **
	    Write locks are no longer taken on edge servers' db.upgrades.rp
	    database tables during shelve operations.

	#2042011 (Job #102314) **
	    Clients now correctly report when they are unable to delete files.

Bugs fixed in 2020.2 Patch 1 (2020.2/2057778)

	#2051777 (Job #104945) * ** *** ****
	    OpenSSL has been upgraded to 1.1.1i

Bugs fixed in 2020.2 (2020.2/2042415)

	#2032364 (Job #104279) **
	    'p4 describe' could cause shelved archives for ktext files to be
	    modified. This has been fixed.

	#2021853 (Job #103829) **
	    When authentication triggers are disabled (by setting ExtEnabled
	    to false) they are no longer considered or executed.

	#2019936 (Job #103732) **
	    Under certain conditions, commands run against an edge server that
	    involved the commit server may have been rejected due to the user's
	    ticket not being issued for the same host that the commit server
	    is expecting to validate against.  This has been fixed.

	#2019156 (Job #103926) **
	    The command 'p4 graph receive-pack' could unexpectedly fail with
	    error message 'Invalid cross-device link'. This happens when the
	    directory where to unpack to is on a different filesystem from the
	    one for the temp directory.  This has been fixed.

	#2009943 (Job #103716, #103727) **
	    The command 'p4 storage -U //archive-path' has been added to aid in
	    the construction of the storage digests after a storage upgrade has
	    been performed with 'lbr.storage.skipkeyed' set.

	#2008378 (Job #103424) **
	    The new 'lbr.rcs.locking' configurable adds support for locking RCS
	    files during access to prevent overwritten writes.
	    Due toperformance concerns it is disabled by default.

	    Changes to 'lbr.rcs.locking' will not apply on replicas until
	    replication has restarted; a server restart is recommended.

	#2007789 (Job #102750) **
	    A crash would occur when submitting a change that included an
	    illegal integration to a readonly depot. This has been fixed.

	#2004866 (Job #103570) **
	    The unexpanded digests and file sizes of shelved ktext files are now
	    stored in the commit server's db.storagesh table when promoted from
	    edge servers.

	#2003995 (Job #103591) **
	    The state of a failed or running isolated upgrade step is now reset
	    so that the upgrade step is rerun in the correct sequence and its
	    state is correctly updated.

	#2003887 (Jobs #042042, #102435) **
	    Windows file I/O now uses the native Windows API rather then the
	    Posix file I/O routines.  This removes the limit on the number of
	    concurrently open files for the librarian and error logging.

	#2002341 (Job #97311) **
	    During an update to release 2020.2 an attempt will be made to
	    remove all stale server lock files.

	#2001593 (Job #103518) **
	    The state of a failed or running upgrade step is now correctly reset
	    when restarting a server; this allows for rerunning upgrade steps.

	#1997782 (Jobs #102941, #103026, #103025) **
	    On Windows a mix of network and API errors may have been reported
	    incorrectly if server tracing was present.  This has been fixed.

	#1994548 (Job #100566, #103323) **
	    The 'p4 storage -l status' orphan scan control command now outputs
	    extra informational messages. Other 'p4 storage -l' output messages
	    have also been improved.

	#1992458 (Job #103253) **
	    When a workspace is using a stream with an import+ path, such as
	    'import+ a_path/...', and a parent stream has a path with the same
	    view path, such as 'share a_path/...', then any attempt to open
	    for edit or submit a under that path would result in a warning or
	    error that the file would not be submittable.  This has been fixed.

	#1991992 (Job #100574) **
	    The 'p4 storage -l' orphan scan control commands now all output
	    an informational message.

	#1987452 (Job #103159) **
	    Shelving a deleted or moved ktext file would fail.
	    This has been fixed.

	#1985472 (Job #102283) **
	    Configurables and server changes made during failover from an edge
	    server were not propagated to the commit server during failover.
	    This meant that the changes had to be done manually at the commit
	    server to make the changes persistent. This has been fixed.

	#1984894 (Job #103052) **
	    The 'p4 repos' nameFilter options, '-e' and '-E' were adding '*'
	    wildcards to nameFilter values that did not end with  '*' or '.git'.
	    This has been fixed.

	#1984641 (Job #103067) **
	    The 'p4 storage -d' command would fail to remove the requested
	    storage record if the matching archive was missing.
	    This has been fixed.

	#1983346 (Job #102440) **
	    The 'p4 heartbeat' command would fail with an error when it was run
	    by an operator user even though this command is supported for use by
	    operator users.  This has been fixed.

	#1979600 (Job #96233) **
	    Global locking files from edge servers no longer takes local locks
	    if the lock cannot be taken globally.

	#1979089 (Job #100151) **
	    'p4 diff2' run against a path that included graph-depot submodules
	    would report differences for individual files within the submodule
	    rather than the difference of the submodule object itself.
	    This has been fixed.

	#1978112 (Job #102847) **
	    Correct problem behavior in custom stream spec on edge-server
	    whereby custom fields codes could be duplicated.

	#1977774 (Job #102850) **
	    The replacement of a lazy copied shelved revision would cause the
	    removal of the archive on downstream edge servers.
	    This has been fixed.

	#1973023 (Job #102505) **
	    Archive files originating from background submit could fail to
	    transfer to edge servers when a pull was attempted before the
	    commit server had received the archives. This happened only on edge
	    servers where 'submit.allowbgtransfer' was not configured.
	    This has been fixed so that pull retries are enabled for any
	    archives that originated from background submit.

	#1972005 (Job #102471) **
	    When deleting a promoted shelf which included a stream spec from an
	    edge server client, a lock order error could be raised.
	    This has been fixed.

	#1969820 (Job #72507) **
	    If a file in a task stream is submitted with the reopen flag, and a
	    resolve had been done prior on the file prior to the submit, then
	    the submit would fail with the messages "Files newly opened or
	    reverted during submission".  This has been fixed.

	#1969695 (Job #102541) **
	    'p4 unshelve' no longer crashes if a network error is encountered
	    during completion of the command.

	#1963208 (Job #102177, #102416, #102442) **
	    'p4 submit' from an edge server using background archive transfer
	    could erroneously succeed when archive transfer from the client to
	    the edge server has failed. This has been fixed.

	#1962945 (Job #102146) **
	    The amount of scanning rdb.lbr when using the --batch argument on a
	    'pull -u' command or background thread has been reduced.

	#1962874 (Job #102391) **
	    The --batch parameter on a 'pull -u' command or background thread
	    is again honored when retrying transfers that failed due to a digest
	    mismatch.

	#1962564 (Job #102168) **
	    If a stream specification integration was performed on an edge
	    server, and the submit occurred on the edge server, then the
	    database table db.integedss was not updated on either the edge
	    or commit servers.  This has been fixed.

	#1962562 (Job #102482) **
	    If a stream specification was opened in a workspace on an edge
	    server, and a user edited a different stream specification from the
	    same workspace with a 'p4 stream' command, then the edge server's
	    database tables db.template and db.bodtextcx would be updated, but
	    the corresponding commit server tables would not.
	    This has been fixed.

	#1960233 (Job #102066) *
	    P4ALIASES would strip newlines from the end of command output
	    which could prevent specs from being populated as part of an alias.
	    This has been fixed.

	#1957194 (Job #102273) **
	    The 'p4 heartbeat' command would fail to detect when the target
	    server could not support heartbeat commands. In that case the
	    command would not exit gracefully with a useful error. Additionally,
	    it would continue to try to connect and fail until the target server
	    or command exited. This has been fixed by exiting immediately with
	    an appropriate error.

	#1955691 (Job #101728) **
	    Performance might have been less than optimal for a sync from an
	    edge or build server when file content for a number of revisions
	    were not in the replica's archives. Performance can now be improved
	    for such syncs from these servers (if the server has 'pull -u'
	    threads running and its 'lbr.replication' configurable is set to a
	    value of 'readonly') by setting the new 'rpl.deferred.sends'
	    configurable to a value of '1'.

	    Changes to 'rpl.deferred.sends' will affect all new sync commands
	    on the edge or build server for which it was changed; no server
	    restart is required.

	#1952874 (Job #102099) **
	    Zero reference storage records for files being transfered by submit
	    or shelve are no longer created due to replication performance.

	#1952144 (Job #102126) **
	    Changed messaging so that if a shelf is promoted from an edge server
	    and that shelf contains a stream spec change, the message says that
	    the stream spec was promoted.

	#1950588 (Job #101851) **
	    Background transfer for edge submit now ensures that the external
	    address for the edge server performing the submit is valid before
	    allowing the submit to proceed.

	#1949353 (Job #101620) **
	    'p4 reshelve' operations could cause storage consistency issues.
	    This has been fixed.

	#1948006 (Job #102094) *
	    Exclusions in P4IGNORE files might not be evaluated if a wider path
	    was set to be ignored. This has been fixed.

	#1941631 (Job #100364) **
	    The 'p4 storage -D' argument did not validate its integer parameter.
	    This has been fixed.

	#1936611 (Job #101639) **
	    'p4 fstat -Ol' for graph depot could crash the server when run on
	     mid-branch and a file there is deleted in the branch tip.

	#1932043 (Job #73010) **
 	    The 'filesys.depot.min' configurable is now only evaluated on depots
	    that individual 'p4 submit' or 'p4 shelve' commands would affect.

	#1931477 (Job #101628) **
	    The digest in the db.storagesh table was not using the ktext
	    unexpanded version. This has been fixed.

	#1928089 (Job #101185, #101196) **
	    'p4 -ztag have' for sync'ed graph depot repos was not considering
	    annotated tags and would report the tag's sha not the have sha.
	    This has been fixed.

	#1924357 (Job #101369) **
	    The orphan scanner was mis-identifying a commit server
	    as a shared replica. This has been fixed.

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

Major new functionality in 2020.1 (2020.1/1953492)

	#1928573 (Job #95458) **
	    The new 'p4 heartbeat' command can be run on a standby server
	    to monitor the responsiveness of its target master server.
	    Although this was designed for use with 'p4 failover', this
	    command can be used to monitor any server. This command makes
	    requests at regular intervals, waits for responses, and
	    fires triggers when responses are missed, resumed after
	    missing responses were detected, and when a maximum number
	    of missing responses are detected. These new triggers are
	    respectively 'heartbeat-missing', 'heartbeat-resumed', and
	    'heartbeat-dead'. See 'p4 help heartbeat' for more information.

	#1916178 (Job #101042) **
	    Permissions for stream spec edits have been added.
	    Similar to file permissions, the new permissions
	    readstreamspec, openstreamspec, writestreamspec control
	    user access for editing a stream definition.

	    Pre 2020.1 access to stream specs continues unchanged until
	    any new streamspec permission is added for any user to the
	    protect table, at which point all users except super and admin will
	    require streamspec permissions. These new permissions do not
	    apply to files paths in streams.

	    NOTE:
	    When adding streamspec permissions, care must be taken that
	    users having legacy stream read and write access are given the
	    necessary streamspec permissions.

	    To make ease this transition there is a new configurable:
	        'dm.protects.streamspec'.
	    By default disabled (dm.protects.streamspec=0),
	    stream spec perms are ignored and legacy
	    stream spec access control is applied.
	    Stream spec permissions entered in the table are ignored.

	    Setting dm.protects.streamspec=1 enables these permissions
	    thus requiring read/open/write stream spec access be
	    granted by explicit stream spec permissions.

	    'p4 protects [-A] [-S] reports stream spec permissions.
	    If stream spec permissions are disabled ('dm.protects.streamspec=0')
	    the stream spec permissions are reported and followed with this message:
	       'Stream spec permissions currently disallowed.
	        Set dm.protects.streamspec=1 to enable.'

	    See:
	      p4 help protect
	    For examples, see:
	      https://www.perforce.com/manuals/cmdref/Content/CmdRef/p4_protect.html

	#1881458 (Job #53502, #94888, #96926) **
	    Structured logging improvements.
	    All event types have a new version N.50 this release which adds
	    a unique command identifier and the current serverId after the
	    command number field (5th column).  For commands that result in log
	    events being written on multiple servers, the unique command
	    identifier will be visible to allow those events to be
	    matched up.  Examples include submits from edge servers, replica
	    forwarded commands, remote depot access and P4AUTH.

	    The 11.50 trigger event type has two additional fields:
	    f_triggerType (which is one of 'trigger', 'extension' or 'bgtask')
	    and f_triggerLapse (which records the trigger execution
	    lapse time). Trigger arguments are now separated by ':' characters
	    to match the command arguments format.

	    The 'serverlog.version.N' configurable can be used to pin a
	    structured log file to a specific server version's format.
	    To retain the prior structured log events format, set the
	    'serverlog.version.N' configurable to 49.

Minor new functionality in 2020.1 (2020.1/1953492)

	#1945406 (Job #99520) **
	    The performance of 'p4 tag' run against an autoreload label with
	    many arguments has been improved.

	#1932783 (Job #75680) **
	    Global labels may now be updated from edge servers using either
	    'p4 tag -g' or 'p4 labelsync -g'.

	#1922742 (Job #101428) **
	    The host field in the protections table now allows multiple IP
	    addresses or CIDR matchers to be specified on a single line by
	    comma separating them.

	#1917799 (Job #101213) **
	    A new --no-graph flag for 'p4 have' is added that affects mixed
	    environments where the client view includes both graph and non-graph
	    type depots. This flag will filter 'p4 have' output to non-graph
	    files only.

	#1912695 (Job #78482, #75001, #83402, #87328, #74235, #93294) **
	    The 'p4d -xx' integrity check now covers the following table pairs:
	      db.integtx/db.revtx
	      db.revtx/db.rev
	      db.revtx/db.stream
	      db.revbx/db.rev
	      db.have/db.domain
	      dbchange/db.changeidx
	      db.rev/db.change
	    Additionally, neither 'p4d -xx' nor 'p4d -xv' will run against an
	    empty P4ROOT. Exit codes now reflect whether inconsistencies have
	    been detected.

	#1905882 (Job #97780) * **
	    TLS 1.3 is now available for use with SSL P4PORTs.  Set the
	    ssl.tls.version.max configurable to '13' to enable it (12 is
	    the default).  TLS 1.3 is ~65% faster at file transfers than
	    1.2, but the overhead of establishing a 1.3 connection is ~68%
	    higher, so applications that rely on many short-lived connections
	    may wish to pin their version to 1.2 if using a 1.3-enabled server.
	    Note that the higher the latency, the less the connection overhead
	    matters.

	#1903396 (Job #100984) **
	    Now a preview of an unshelve of a stream spec will give an error if
	    the current stream is not the same as shelved stream spec.  The
	    error reported is
	       "Shelved stream %shelvedStream% does not match client stream."

	#1889887 (Job #99233) **
	    The scan of the protections table at command start is now lockless.
	    This means that updates to the protections table on busy servers
	    will experience far less lock contention.

	#1885312 (Job #100832) **
	    The sequence numbers used in db.protect are no longer contiguous.
	    This allows new lines to be added without rewriting the whole table.

	#1883731 (Job #90188) **
	    The new 'p4 retype -f' flag allows files to be retyped, even if the
	    archive is missing.

	#1881258 (Job #89173, #99926) **
	    'p4 protects -M' now supports the '-h' flag for querying the
	    protections with a specified IP address. Additionally, a new '-H'
	    flag may be used with any 'p4 protects' command to query the
	    protections with the current connection's resolved IP address.

	#1874297 (Job #96602) **
	    The 'p4 graph log' command has two changes. One is an optional
	    'tree' value for the '--oneline' option, so the option can be
	    entered as '--oneline=tree'. This adds a column in the output
	    for tree-sha values.
	    A second change is a new option '--no-abbrev'. This option causes
	    sha values in the output to appear in the original 40 characters,
	    instead of the default 7 characters abbreviation.

	#1870407 (Job #97632) **
	    Previously a stream specification could not be unshelved to a
	    workspace where the spec was opened for edit.  Now unshelving
	    a stream spec when it is opened in a workspace schedules a
	    resolve.  The unshelving action is completed once the stream
	    spec has been resolved.

	#1868386 (Job #97929) **
	    The performance of 'p4 revert' where many moved files are being
	    reverted has been improved.

Bugs fixed in 2020.1 Patch 12 (2020.1/2298664)

	#2292440 (Job #110708) **
	    'p4 login' for a LDAP authenticated user will no longer report
	    a password expiry message if the user has an expired password
	    stored in the database.

	#2271158 (Job #108415) **
	    Globally locking a file from an edge server that is in the process
	    of being shelved from the same workspace will no longer result in
	    the shelve operation removing the lock on the edge server.

	#2270125 (Job #109709) **
	    Opening large numbers exclusive locked (+l) files on an edge server
	    is now far more efficient.

	#2263613 (Job #109847) **
	    When a file with type "ktext" is moved, integrated, then shelved,
	    if another client unsheleves it and then try to shelve it, shelve
	    can fail with "tampered with after resolve" error. This change
	    fixes the problem.

	#2263204 (Job #109890) **
	    A transmit error during the transfer of files between an edge
	    and commit server for a shelve operation would incorrectly
	    delete the archives of any lazy-copied revisions within the
	    shelf. This has been fixed. 

	#2254703 (Job #109616) **
	    Replicating a journal containing older versions of database records
	    can crash the commit server. This has been fixed. 

Bugs fixed in 2020.1 Patch 11 (2020.1/2238366)

	#2233252 (Job #108864) **
	    Ensure tagged 'p4 groups -v' is lockless against db.user.

	#2230655 (Job #108692) **
	    The command 'p4 graph verify' that was missing in
	    'p4 help-graph commands', is added there.

	#2229990 (Job #108693) **
	    The command 'p4 help verify' is changed to mention
	    'p4 help-graph verify'.

	#2228626 (Job #96885) **
	    A concurrent parallel submit and revert in the same workspace
	    could turn off search permission on the 
	    clientEntity/0,d serverlock directory. This has been fixed.

	#2225054 (Job #108613) **
	    Starting a server with the -v command line option set to just a
	    number without logging category no longer causes a crash.

	#2224928 (Job #108934) * ** *** ****
	    The SSL handshake timeout configurable 'ssl.client.timeout' is no
	    longer overridden by shorter 'net.maxwait' configurable value.

	#2222740 (Job #108767) **
	    The 'p4d -xx' consistency check between db.change/db.desc now
	    correctly detects mismatches between the truncated and the complete
	    descriptions.

	#2216652 (Job #108691) **
	    Graph depot commands when issued with missing or wrong number of
	    arguments were displaying "Usage: see p4 help graph". These have
	    been corrected to display "Usage: see p4 help-graph".

	#2204224 (Job #107572) **
	    Running 'p4 sync' or 'p4 print' from a commit server could
	    report librarian errors when the requested archive files had
	    not yet been fetched from the originating edge server during
	    background submit. This has been fixed by allowing those archives
	    to be fetched on demand.

	#2197400 (Job #108045) **
	    In a rare case an internal context structure can be NULL. This error
	    condition is now caught and reported.

	#2186477 (Job #107943) **
	    'p4 stream -ov' can now be run against non-existing streams when
	    the 'dm.protects.streamspec' configurable is set to 1.

Bugs fixed in 2020.1 Patch 10 (2020.1/2187281)

	#2183174 (Job #105430) **
	    Sometimes a merge resolve incorrectly joins the last two lines of
	    one part of the merge. This could occur if an end-of-line character
	    was missing on the last line of the file for the base, source, or
	    target.  This is now fixed when new configurable merge.dl.endeol,
	    which defaults to 0, is set to 1. However, some cases that might
	    resolve correctly without the configurable being set might now
	    register a conflict that must be resolved manually.

	#2182410 (Job #107762) **
	    Commands awaiting replication will no longer be inordinately
	    delayed by a journal rotation on the upstream server.

Bugs fixed in 2020.1 Patch 9 (2020.1/2179928)

	#2176143 (Job #107796) * ** *** ****
	    OpenSSL has been upgraded to 1.1.1k

	#2175266 (Job #107736) **
	    OpenLDAP has been upgraded 2.4.59

	#2175089 (Job #107513) * **
	    SQLite (for extensions) has been upgraded 3.36.0

	#2174313 (Job #105082) * **
	    cURL (for extensions) has been upgraded 7.75.0

	#2174312 (Job #105082) * **
	    Lua (for extensions) has been upgraded 5.3.6

	#2174311 (Job #105082) * **
	    Lua-cURLv3 (for extensions) has been upgraded 0.3.12

	#2165146 (Job #107505) **
	    Cyrus-SASL has been patched to address CVE-2019-19906.

	#2152761 (Job #106143) **
	    The 'pull -u' threads on a standby server to a commit server
	    could fail to transfer archives from a promoted shelved change when
	    there is latency between the commit server and the edge server
	    causing slow transfer of archives to the commit server. This
	    has been addressed by allowing 'pull -u' threads on standby
	    servers to retry transfers of missing archives.

	#2151259 (Job #107115) **
	    Errors encountered while journalcopy'ing in a background thread
	    that are reported to the standby or forwarding-standby's server
	    log will no longer be missing parts of the error message.

	#2147013 (Job #106795) **
	    Fixed undo problem, a source file is integrated, then a source file
	    revision is undone in the previous integration range, and a later
	    integration attempt claims that all revisions were already
	    integrated.  Now the configurable dm.integ.undo, and the integration
	    option 'p4 integ -Ru', will fix this problem by only creating
	    integration credits for previous integrations that were not in an
	    undo revision range.

	#2145945 (Job #106998) **
	    'p4d -xx' now creates more consistent placeholder change records
	    during the db.rev/db.change table pair integrity check.

	#2141351 (Job #106645) **
	    'p4 storage -d -y' now releases all table locks while deleting or
	    moving archives.

	#2141079 (Job #106796) **
	    Updated p4 help resolve to distinguish between resolving with
	    auto-merge ('p4 resolve -am') and resolving manually with an accept
	    merge ('p4 resolve' and choose the 'am' option).  Resolving with
	    auto-merge will not guarantee that all integrations will be merges,
	    only that the choice is automated and merge will be chosen when
	    optimal.

Bugs fixed in 2020.1 Patch 8 (2020.1/2138914)

	#2134823 (Job #104926) **
	    'p4 unshelve' now correctly tracks temporary shelve copies created
	    for pending resolves on edge servers in db.storagesh.

	#2132217 (Job #106579) **
	    The unlicensed limit on the repo count has been changed to 3.

	#2132013 (Job #106209) **
	    The license file now supports exposing extra capabilities (with
	    a new 'ExtraCapabilities' field) to be used for centralised
	    licensing of add-on products.

	#2129715 (Job #106628) **
	    Under specific conditions that cannot normally occur, a file open
	    for integrate but without any resolve records could cause the server
	    to crash during submit. This has been fixed.

	#2124833 (Job #106380) **
	    Missing archives were sometimes not reported by 'p4 verify -z'.
	    This has been fixed.

	#2124827 (Job #105391) **
	    The performance of verifying archives using the storage tables
	    has been improved. ('p4 verify -Z', p4 storage -v')

	#2120346 (Job #106310, #90948) **
	    The 'pull -u --batch' command could excessively retry its
	    batch when any transfer error occurred, causing the pull
	    thread to stall instead of moving on to request other archives.
	    This was due to a regression that was introduced in 2019.2 
	    by a fix to allow 'pull -u --batch' to resume after a failed
	    connection. Both of these bugs have been fixed.

	#2119372 (Job #104527) **
	    Fix for wrong stream view generation with an embedded wildcard.
	    If a stream is a grandchild of the mainline, and has a one 
	    parameter import path, and share paths which are contained in the
	    import path, then the view generated for the first share path with
	    an embedded wildcard would be incorrect. This problem only occurred
	    on Linux and Windows platforms.

	#2117410 (Job #106130) *
	    The client-side threading for parallel sync no longer shares charset
	    converters, preventing race conditions during translation of unicode
	    type files which could corrupt the files in the workspace.

	#2108753 (Job #104119) **
	    Fix to allow a file in a virtual stream to be opened and submitted
	    if the file is in a share stream path with an embedded wildcard.

Bugs fixed in 2020.1 Patch 7 (2020.1/2107780)

	#2105325 (Job #105997) * ** *** ****
	    OpenSSL has been upgraded to 1.1.1k

	#2101465 (Job #105817) **
	    The 'p4 extension --run' command no longer defaults to being
	    forwarded to the commit server from a replica.  The replica
	    now handles that command by default.  An Extension wishing
	    to forward the command may return a second boolean from the
	    'RunCommand' callback, e.g. 'return true, true'.

	#2098369 (Jobs #105663, #105664) **
	    The tagged output of a describe of a submitted changelist will
	    contain a "streamDeleted" tag if the changelist contains a stream
	    spec and the stream has been deleted.

	    Similarly, if a stream was deleted after change N, then
	        'p4 stream -o //streampath@N'
	    will display this error message
	        "Stream //streampath was deleted after change N"

Bugs fixed in 2020.1 Patch 6 (2020.1/2096685)

	#2088638 (Job #105617) **
	    Tagging very large numbers of files from an edge server against
	    a global label could fail with network errors.

	#2082262 (Job #105397) **
	    A save of a stream specification in which no changes are actually
	    made to the specification no longer creates a changelist or consumes
	    a changelist number.

	#2076299 (Job #104778) ***
	    A potential deadlock on the proxy server's table has been fixed.

	#2072714 (Job #101504, #105052) **
	    File handles are no longer inherited by trigger processes.

	#2071035 (Job #105037) **
	    Report correct 'Stream does not exist' error when referencing
	    a non-existing stream.

	#2070773 (Job #104764) **
	    The logging support in extensions now correctly handles the tables
	    with numeric keys.

	#2070274 (Job #95097) **
	    'p4 switch' now checks the stream hierarchy to determine if the
	    streams are related rather than assuming streams in the same depot
	    are related. To switch to any unrelated stream, you will now need
	    to provide the new --allow-unrelated flag.

Bugs fixed in 2020.1 Patch 5 (2020.1/2089982)

	#2081247 (Job #105481) **
	    'p4 submit' now only takes an exclusive lock on db.storagesh
	    when a shelf is involved in the submit.

	#2079990 (Job #102714) **
	    The P4Tunable::Get() function has been inlined to improve
	    performance.

	#2079942 (Job #104559) **
	    'p4 revert' now only acquires when necessary exclusive locks on
	    db.resolvex, db.revsh and db.storagesh, and instead acquires
	    shared locks on db.resolvex and db.revsh.

	#2079919 (Job #102715) **
	    Several MapChar functions have been inlined to improve the
	    performance of the mapping code.

	#2079918 (Job #102713) **
	    Tunable variables are now cached during code loops to improve
	    performance.

	#2079221 (Job #104559) **
	    'p4 revert' no longer acquires an exclusive lock on db.storage.

Bugs fixed in 2020.1 Patch 4 (2020.1/2072337)

	#2069560 (Job #105149) **
	    Slashes-in-client error on 'describe' when with edge-server client.

	#2069525 (Job #093890) **
	    Suppress the "Slashes (/) not allowed in 'ws0//sroot/main'." error
	    on 'p4 shelf -d' and 'p4 change -d' on shelves created by
	    'p4 switch'.

	#2068356 (Job #105118) **
	    Ensure shelved archives are present when replacing with -f or -r.

	#2064042 (Job #104937) **
	    Shelf promotions containing an integration can lead to storage
	    inconsistencies. This has been fixed.

	#2063917 (Job #105093) **
	    When background submit results in failed archive transfers,
	    those archives may be restored using 'pull -u -t'. However, if
	    the archives were not restored to the commit server before
	    commands attempt to fetch them, the pull command might lose
	    the ability to recover them due to the entries being removed from
	    the commit server's rdb.lbr. This behavior has been fixed.

	#2062635 (Job #104359) **
	    Protections errors during batched archive replication no longer
	    causes ondemand fetches to wait indefinitely.

	#2060710 (Job #102935) **
	    Connections completing faster than the threshold defined by the new
	    'db.monitor.addthresh' configurable (specified in milliseconds) are
	    not added to the db.monitor table at monitor levels 1 or 2.

	    Changes to 'db.monitor.addthresh' will apply to all new commands; no
	    server restart required.

	#2058012 (Job #093890) **
	    The changelist description of shelves created by 'p4 switch' has
	    been improved.

	#2054715 (Job #104525) **
	    The performance of 'p4 depots' command was poor when it was run
	    by a regular user (not a super-user) with a large number of graph
	    repos and graph-permissions. This performance is now improved.

	#2047511 (Job #104093) **
	    'p4 verify -S' now reports the correct changelist number for +S
	    type files.

	#2043225 (Job #104537) **
	    'p4 sync -f' now correctly records the syncTime for any files that
	    are refreshed.

	#2042376 (Job #104530) **
	    Change to reduce lock held time on db.stream when generating
	    a view with 'p4 stream -ov'.

	#2041405 (Job #104537) **
	    'p4 sync' now correctly maintains the recorded syncTime for any
	    files that would be replaced, but are skipped when the digests
	    match.

	#2040678 (Job #102314) *
	    Windows clients now correctly report when they are unable to replace
	    files when using the long filename support.

	#2038956 (Job #102314) **
	    Clients now correctly report when they are unable to delete files.

	#2036197 (Jobs #102941, #103026, #103025) **
	    On Windows a mix of network and API errors may have been reported
	    incorrectly if Server tracing was present.  This has been fixed.

Bugs fixed in 2020.1 Patch 3 (2020.1/2051818)

	#2051777 (Job #104945) * ** *** ****
	    OpenSSL has been upgraded to 1.1.1i

	#2032943 (Job #104279) **
	    'p4 describe' could cause shelved archives for ktext files to be
	    modified. This has been fixed.

	#2023784 (Job #104049) **
	    Running 'p4 fix' when the jobspec had no Status field could cause a
	    crash.  This has been fixed.

	#2013287 (Job #103714) **
	    'p4 ldapsync -i' no longer stops when an error is encountered.
	    Instead it waits the provided interval and runs again.

	#2010244 (Job #102750) **
	    A crash would occur when submitting a change that included an
	    illegal integration to a readonly depot. This has been fixed.

	#2006356 (Job #103570) **
	    The unexpanded digests and file sizes of shelved ktext files are now
	    stored in the commit server's db.storagesh table when promoted from
	    edge servers.

	#2007338 (Job #042042, #102435) **
	    Windows file I/O now uses the native Windows API rather then the
	    Posix file I/O routines.  This removes the limit on the number of
	    concurrently open files for the librarian and error logging.

Bugs fixed in 2020.1 Patch 2 (2020.1/2007551)

	#2002989 (Job #102212) **
	    Previously 'p4 submit -b' would fail if submit.allowbgtransfer
	    was not configured, or when that command was run from a server
	    that was not an edge server. Now submit will succeed and
	    fall back to the default submit archive transfer behavior
	    for those scenarios.

	#1998612 (Job #103411) **
	    'p4 reshelve' could crash when file arguments were provided. This
	    has been fixed.

	#1998368 (Job #102542) **
	    Error handling code had an error and has been corrected to
	    no longer error on error.

	#1996539 (Job #103349) **
	    'p4 tag' run against a non-autoreload global label from a 20.1 edge
	    server with multiple arguments would silently fail to tag all the
	    files reported. This has been fixed.

	#1991602 (Job #103253) **
	    When a workspace is in a stream with an import+ path, such as
	    'import a_path/...', and a parent stream has a path with the same
	    view path, such as 'share a_path/...', then an attempt to open
	    a file for edit or submit the file would result in a message
	    "%depotFile% - warning: cannot submit from stream %stream% client".
	    A file submit under such a scenario would fail.  This was a bug
	    which has been fixed.

	#1990949 (Job #102789) **
	    The Windows server appended the packfile name to the target
	    directory using '\' rather than '/' for a linux client. This
	    caused GConn to fail to clone from the Windows server.

Bugs fixed in 2020.1 Patch 1 (2020.1/1991450)

	#1989752 (Job #102995) **
	    Upgrading the server from pre-19.1 would store the wrong checksum
	    for unexpanded ktext files in db.storagesh. The upgrade process has
	    been fixed. To correct the checksums on servers that have already
	    been upgraded to 19.1 or greater, please run 'p4 storage -R -S'.

	#1989083 (Job #103202) *
	    The 'Navigate to URL' message reported by 'p4 login' when using
	    the Helix Authentication Service was emitted on stderr despite
	    being an info message. This has been fixed.

	#1988116 (Job #103159) **
	    Shelving a deleted or moved revision with the ktext attribute
	    would fail. This has been fixed.

	#1988112 (Job #103165) **
	    The GetArchiveFileInfo() method called within the Archive()
	    extension callback now returns the archive revision as a string
	    rather than an integer.

	#1986956 (Job #102795) * ** *** ****
	    OSX Catalina is now fully supported.

	#1984418 (Job #102440) **
	    The 'p4 heartbeat' command would fail with an error when
	    it was run by an operator user even though this command
	    is supported for use by operator users. This has been fixed.

	#1979653 (Job #97585) **
	    'p4 user -d' run against a very specific configured replica
	    would fail to lock the correct database tables and could cause
	    a deadlock. This has been fixed.

	#1977774 (Job #102850) **
	    The replacement of a lazy copied shelved revision would cause
	    the removal of the archive on downstream edge servers.
	    This has been fixed.

	#1975998 (Job #102797) *
	    Windows clients no longer leave trailing NULL bytes at
	    the end of '+k' filetype files transfered via sync/print
	    when the RCS 'Author' keyword was used and the username
	    submitting the file was changed post-submit.

	#1972509 (Job #102609)
	    Network errors on Windows and Linux are now more accurately
	    reported when additional tracing such as net=3 or ssl=3 are used.

	#1971423 (Job #101504) **
	    A rare error that could lead to database deadlock during journal
	    rotation has been fixed.

	#1971422 (Job #102020) **
	    MFA logins via URLs are now delivered promptly through edge-servers.

	#1971134 (Job #102471) **
	    Fix for lock error "Locking failure: db.templatewx locked after
	    db.resolvex!" when deleting a promoted shelf with a stream spec
	    from an edge server client.

	#1970332 (Job #72507) **
	    If a file in a task stream is submitted with the reopen flag, and a
	    resolve had been done prior on the file prior to the submit, then
	    the submit would fail with the messages "Files newly opened or
	    reverted during submission".  This has been fixed.

	#1968897 (Job #102632) **
	    'p4 server -c commit-server' no longer removes pre-existing
	    startup.N configurations.

	#1968805 (Job #102541) **
	    'p4 unshelve' no longer crashes if a network error is encountered
	    during completion of the command.

	#1965109 (Job #102543) **
	    File transfers between pre 19.1 replicas with 19.1 and subsequent
	    commit server releases can fail with a fileSize error. This
	    has been fixed.

	#1964794 (Job #102470) *
	    'p4 reconcile'/'p4 status' might report about invalid filenames
	    of the form '//depot/0' or '//depot/100', etc.  This is fixed.

	#1962564 (Job #102168) **
	    If a stream specification integration was performed on an edge
	    server, and the submit occurred on the edge server, then the
	    database table db.integedss was not updated on either the edge
	    or commit servers. This has been fixed.

	#1962562 (Job #102482) **
	    If a stream specification is open in a workspace on an edge server,
	    and a user edits a different stream specification from the same
	    workspace with a 'p4 stream' command, then the edge server database
	    tables db.template and db.bodtextcx would be updated, but the
	    corresponding commit server tables would not. This has been fixed.

	#1961372 (Job #102146) **
	    The amount of scanning rdb.lbr when using the --batch argument
	    on a 'pull -u' command or background thread has been reduced.

	#1961252 (Job #102391) **
	    The --batch parameter on a 'pull -u' command or background thread
	    is again honored when retrying transfers that failed due to a
	    digest mismatch.

	#1961233 (Job #102177, #102416, #102442) **
	    'p4 submit' from an edge server using background archive transfer
	    could erroneously succeed when archive transfer from the client
	    to the edge server has failed. This has been fixed.

	#1957137 (Job #102273) **
	    The 'p4 heartbeat' command would fail to detect when the target
	    server could not support heartbeat commands. In that case
	    the command would not exit gracefully with a useful error.
	    Additionally, it would continue to try to connect and fail
	    until the target server or command exited. This has been
	    fixed by exiting immediately with an appropriate error.

	#1955306 (Job #101728) **
	    Performance might have been less than optimal for a sync
	    from an edge or build server when file content for a number
	    of revisions were not in the replica's archives. Performance
	    can now be improved for such syncs from these servers (if the
	    server has 'pull -u' threads running and its 'lbr.replication'
	    configurable is set to a value of 'readonly') by setting the
	    new 'rpl.deferred.sends' configurable to a value of '1'.

	    Changes to 'rpl.deferred.sends' will affect all new sync commands
	    on the edge or build server for which it was changed; no server
	    restart is required.

Bugs fixed in 2020.1 (2020.1/1953492)

	#1943492 (Job #97347) **
	    Preview mode of 'p4 failover -i' without the mandatory -s
	    argument would generate a spurious "Empty identifier not
	    allowed" error. This has been fixed.

	#1941632 (Job #101653) **
	    Single threaded server requests would start a pending storage
	    upgrade request. This has been fixed.

	#1941274 (Job #100128) **
	    Failed failed-over triggers would log duplicate error messages
	    to the structured error log and the unstructured log. This has
	    been fixed.

	#1939044 (Job #101754) **
	    Fixed "Stream //path/name shelved" message to work correctly with
	    tagged output.

	#1935056 (Job #44721) **
	    'p4 tag -n' run against a non-existent label no longer creates
	    the label.

	#1933485 (Job #101726) **
	    Performance has been improved for parallel syncs from an edge
	    or build server, either of which with their 'lbr.replication'
	    configurable set to a value of 'cache' and have one or more
	    'pull -u' threads running, and the archive file content for
	    a number of revisions are not in the replica's archives.

	#1932565 (Job #101663) **
	    A client's have list entry is no longer corrupted when refreshing
	    a revision using 'sync -f' from an edge or build server, either of
	    which with their 'lbr.replication' configurable set to a value of
	    'cache', and the archive file content for the revision is not in
	    the replica's archives.

	#1931477 (Job #101628) **
	    The digest for keyword revisions in shelves was not calculated.
	    This has been fixed.

	#1930299 (Job #101687) **
	    Improve error handling for Extension AuthPreSSO, Archive and MFAPre
	    hooks for when both the Extension archive and unpacked files are
	    missing.

	#1930296 (Job #101704) **
	    The '%' character was not properly escaped when saving Extension
	    instance configuration data.

	#1929520 (Job #97815, #101422, #101452, #101454) **
	    Non-admin users can now view the storage record table.
	    Additionally, when a digest is not computed for a keyword revision,
	    the 'storage_upgrade_errors' file will now contain both the lbrFile
	    and the lbrRev values. The generation of digests during a
	    storage upgrade can be suppressed using the 'lbr.storage.skipkeyed'
	    configuration variable. The -v argument to 'p4 storage' now
	    correctly reports unset digests.

	#1929471 (Job #101586) **
	    Extension instance configuration data is now refreshed between
	    invocations within a single client connection.

	#1928337 (Job #101229) **
	    Previously, a stream spec could be opened by one user in a given
	    workspace, and then submitted by a different user in the same
	    workspace. This is contrary to the expected behavior for files,
	    where only the user who opened a file for edit can submit, and
	    could cause a number of problems when conflicts occur. The solution
	    is to require that a stream spec submit is done by the user who
	    opened the stream spec for edit.

	#1925762 (Job #101314) **
	    Better error handling of an Extension's GlobalConfigFields callback.

	#1923576 (Job #101541) **
	    Binary content in extension packages could be corrupted during
	    transfer due to line ending converison.  This has been fixed.

	#1919900 (Job #101127) **
	    Make the storage table building process visible to the monitor.

	#1919523 (Job #101062) **
	    When 'p4 have' for graph has no matching repos, it would complete
	    as a failure. This fix changes the failure message "No matching
	    repos" to the warning message "file(s) not on client".

	#1919007 (Job #97651) ****
	    The checkauth feature in p4broker could hang when users aren't
	    logged in and automatic login prompting is enabled.
	    This has been fixed.

	#1918882 (Job #93836, #101365) **
	    Race conditions in serverlocks on Linux and Mac platforms
	    have been fixed.

	#1918032 (Job #95457) **
	    Changing the value of the 'net.maxwait' configurable no longer
	    affects existing connections such as a metadata pull thread.

	#1916336 (Job #100917) **
	    The 'p4 graph cat-file' command was missing the -o option. This
	    change adds in the missing option.

	#1915409 (Job #90569) **
	    The DVCS engine will now emit a list of missing files before it
	    emits a MsgDM::NoSplitMoves message.  This message is emitted when
	    pushing a moved file and the other file in the move pair is missing.

	#1914179 (Job #101297) **
	    Slow sync performance caused by RCS locking. This has been fixed.

	#1912366 (Job #101243) **
	    The first stage storage upgrade was generating an incorrect
	    error message about a failed digest. This has been fixed.

	#1912256 (Job #101004) **
	    The first phase of the storage upgrade process now limits
	    the number of storage records in a single transaction to 1000.

	#1911819 (Job #101126) **
	    Make the storage orphan scanner processes visible to the monitor.

	#1911572 (Job #100875) **
	    'diff2 -dw' would report 'content' when the only differences are
	    in white spaces. Now, the report says 'identical'.

	#1911565 (Job #96731) **
	    When attempting failover with master participation, the failover
	    would fail with an unhelpful error if the master version was
	    2018.1 or earlier and could not support failover. Now it will
	    fail with a specific and helpful error message.

	#1907250 (Job #100902) **
	    'p4 fstat -OI' for graph depots would miss changeCommit if the
	    graph depot index is missing. Now, the changeCommit appears whether
	    or not the index exists.

	#1902937 (Job #100493) **
	    Two new boolean fields have been added for
	    'p4 extension --list --type=extensions' to indicate if the
	    extension has a global configuration and at least one instance
	    configuration. Both must be set to true for an extension to
	    be active.

	#1902809 (Job #100945) **
	    'p4 revert -C' now ignores the admin's client as expected.

	#1900754 (Job #96680) **
	    The server.log.file.* configuration values are now checked
	    during failover to insure that the files will be writeable
	    after successful failover.

	#1899322 (Job #100116) **
	    Client extension p4:connect connection erros were not reported
	    in p4.errors. This has been fixed.

	#1898424 (Job #100873) **
	    'p4 diff2 -Od' could sometimes generate a 'no differing files'
	    warning mistakenly when there are actually some differing files.
	    This has been fixed.

	#1897132 (Job #100097) **
	    P4EXTENSIONS containing . (dots) in the path would not
	    get these client extensions loaded and executed. This has
	    been fixed.

	#1896318 (Job #100568) **
	    A 'p4 storage -l pause //depot/...' request now waits until
	    the orphan scanner has entered the paused state before
	    returning.

	#1894033 (Job #100608) **
	    Avoid error on conflicting clients for commands that are
	    read-only. For 'p4 opened -c <chg>' or -u, the current client
	    of the user is irrelevant and no error should be displayed
	    if that client is tied to another server.
	    The same should be the case for 'p4 client' when the client name
	    is provided as an argument or for 'p4 client -i' which
	    should validate the client name listed in the form rather than
	    the client tied to the user initiating the command.

	#1893837 (Job #100555) **
	    The server will now ignore permanent .lck failures on attempts
	    to open a RCS for reading while running 'p4 verify'.

	#1893174 (Job #98818) **
	    Incorrect values for the 'time held' field were displayed
	    for the serverlock "storageup/storageup". This has been
	    fixed.

	#1891955 (Job #90959) **
	    'p4 sync -L' now allows files to be specified with revision
	    specifiers of #0.

	#1891322 (Job #100615, #100616) **
	    Log a message if computing the digest for a keyed file fails
	    during the storage upgrade process. Avoid holding the write
	    lock on the storage table during digest calculation during
	    the storage upgrade process.

	#1891210 (Job #98489) **
	    'p4 ldapsync' now skips users in LDAP that have usernames that the
	    server considers illegal.

	#1891097 (Job #94337, #42412) **
	    Non-keyed data is now correctly journaled in the '@dv@' records.

	#1889618 (Job #100613) **
	    Creating file locks (.lck) could take a long time to fail.
	    The server now checks the error returned by the OS and fails
	    quickly if it is a permanent error.

	#1884636 (Job #41905) ***
	    Corrupted RCS archive files in the proxy cache would prevent new
	    revisions of that file being cached. This has been fixed.

	#1883404 (Job #90569) **
	    The DVCS engine will now emit a list of missing files before it
	    emits a MsgDM::NoSplitMoves message.  This message is emitted when
	    fetching a moved file and the other file in the move pair is
	    missing.

	#1881257 (Job #98102) **
	    'p4 login -s' run with either '-a', '-h' or a username would report
	    ticket expiry dates to be far in the future. This has been fixed.

	#1875000 (Job #100028) *
	    'p4 clean' and 'p4 reconcile' now handle the '*' wildcard correctly
	    on Windows.

	#1863490 (Job #96679) **
	    The 'p4 servers -J' command could return incorrect values
	    for PersistedJournal, PersistedSequence, AppliedJournal and
	    AppliedSequence if the journal's metadata was out of date.
	    Now the statejcopy file is used to get the Persisted values,
	    and the state file is used to get the Applied values so that
	    these values are correct.

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

Major new functionality in 2019.2 (2019.2/1885864)

	#1859368 (Job #99850) **
	    Minimal downtime upgrades.
	    Support for outside-in upgrades has been reestablished.
	    Please see the upgrade notice at the beginning of this file.

	#1856324 (Job #94869) **
	    Configurable history is now recorded.
	    Configurables changes on a 2019.2 or later server with either
	    'p4 configure set/unset' or 'p4d -cset/-cunset' are now recorded.
	    This history is made visible with 'p4 configure history', which
	    behaves similarly to 'p4 configure show'.

	#1828890 (Job #95112, #90346, #67029) **
	    Structured logging improvements.
	    Structured logs now have a versioned schema that allow new versions
	    of existing events to be added. Updated versions of events are
	    represented by having the server version included after a period in
	    the event type field. The event types with new versions this release
	    are:
	      2.49 - CommandEnd
	      6.49 - Audit
	      8.49 - NetworkPerformance
	      9.49 - DatabasePerformance
	    The 'serverlog.version.N' configurable can be used to pin a
	    structured log file to a specific server version's format.
	    To retain the prior structured log events format, set the
	    'serverlog.version.N' configurable to 48.

	#1873195 (Job #99688, #98735, #97689, #23625) **
	    Orphaned depot files detection and archive cleanup.
	    The '-l' and '-d' flags have been added to 'p4 storage'. These flags
	    can be used to detect and clean up any orphaned depot files left
	    over from a failed submit or shelve operation.
	    See 'p4 help storage' for more detail.

Minor new functionality in 2019.2 (2019.2/1885864)

	#1872848 (Job #98957, #96750) **
	    Add the ability to create custom fields in stream specs. When adding
	    custom fields to specs use the 'NNN' placeholder value for the field
	    code value to automatically assign the next available code value.

	#1862346 (Job #98937) **
	    A new command 'p4 streamspec' has been added. The new command allows
	    you to add custom fields to stream specs.

	#1859414 (Job #99722) **
	    For the scenario where a stream spec change in a pending changelist
	    is shelved, the change is reverted and then the client workspace is
	    switched to a different stream: it is now possible for a file to be
	    added to the pending changelist and shelved with the stream spec
	    from the previous stream.

	#1856483 (Job #99721) **
	    A stream spec can now be deleted from a shelved change from the
	    context of any stream.  Also, the stream spec does not have to be
	    open for edit to be deleted from a shelved change.

	#1853371 (Job #98048) **
	    'p4 verify' now supports using -S and -v together to recalculate the
	    digests of shelved files.

	#1847657 (Job #92631) **
	    A new field 'gconn-serverId' has been added in the repo spec.
	    Data for this field comes from the Helix4Git instance which is
	    mirroring that repo.

	#1843953 (Job #95377) **
	    A 'failed-over' trigger has been added. It is fired when
	    a standby server becomes the new master and first starts up
	    during a successful 'p4 failover' command.

	#1842551 (Job #98058) **
	    A new flag '-Z' has been added to the 'p4 verify' command.
	    This is equivalent to a 'p4 storage -v' request, causing the
	    verify command to perform a checksum compare using the
	    db.storage table instead of the db.rev table. This avoids
	    duplicate checks of lazy-copied files.

	#1840946 (Job #99415) **
	    We are now recording the serverSize field in the matching storage
	    record with the file size of the depot file in the server.
	    Additionally, if the type of submitted revision is compressed and
	    p4 configurable 'submit.storagefields' is set, then the digest of
	    depot file is computed and stored in the compCksum field in the
	    storage record.

	#1833159 (Job #99047, #96805) **
	    The new 'p4 extension --run' option lets a user interact with a
	    Server-side Extension directly.  The Extension can send plain or
	    tagged messages and progress updates to the client program. One use
	    for this is to implement custom commands, e.g.
	    'p4 extension --run fancyBranchMaker args'.

	#1826797 (Job #94456) **
	    'p4 obliterate supports' a new -p purge option. This removes the
	    need of running a two step process of 'p4 archive' followed by
	    'p4 archive -p'. This marks the revision as purged and leaves the
	    integration history intact while still removing the archive file.

	#1821614 (Job #98956) **
	    Added a new server spec field, 'updateCachedRepos' for use only by
	    servers of type 'connector'. Prior to his change
	    'gconn --poll-repos' queried its Helix 'connector' server spec for
	    a list of git repos contained in the 'externalAdress' field. With
	    this release and upgrade, this list for repos has moved from
	    'externalAddress' to the new 'updateCachedRepos'. Note: Helix4Git
	    should be upgraded before Helix Core. If not, gconn --poll-repos'
	    will find an empty list of repos in 'externalAdress'.

	#1808665 (Job #96987) **
	    A new configurable, db.monitor.term.allow, when set to 1 allows
	    users to terminate their own processes. If set to 2, users can
	    also pause and resume their own processes. A minimum of 'read'
	    permission is required for these users to be able to use
	    'p4 monitor terminate'.

Bugs fixed in 2019.2 Patch 16 (2019.2/2224541)

	#2222913 (Job #96885) **
	    A concurrent parallel submit and revert in the same workspace
	    could turn off search permission on the clientEntity/0,d
	    serverlock directory. This has been fixed.

	#2205086 (Job #107762) **
	    Commands awaiting replication will no longer be inordinately
	    delayed by a journal rotation on the upstream server.

	#2204645 (Job #107572) **
	    Running 'p4 sync' or 'p4 print' from a commit server could
	    report librarian errors when the requested archive files had
	    not yet been fetched from the originating edge server during
	    background submit. This has been fixed by allowing those archives
	    to be fetched on demand.

	#2198821 (Job #106310, #90948) **
	    The 'pull -u --batch' command could excessively retry its
	    batch when any transfer error occurred, causing the pull
	    thread to stall instead of moving on to request other archives.
	    This was due to a regression that was introduced in 2019.2 
	    by a fix to allow 'pull -u --batch' to resume after a failed
	    connection. Both of these bugs have been fixed.

Bugs fixed in 2019.2 Patch 15 (2019.2/2179822)

	#2176143 (Job #107796) * ** *** ****
	    OpenSSL has been upgraded to 1.1.1k

	#2175263 (Job #107736) **
	    OpenLDAP has been upgraded 2.4.59

	#2175088 (Job #107513) * **
	    SQLite (for extensions) has been upgraded 3.36.0

	#2175039 (Job #105082) * **
	    cURL (for extensions) has been upgraded 7.75.0

	#2175038 (Job #105082) * **
	    Lua (for extensions) has been upgraded 5.3.6

	#2175037 (Job #105082) * **
	    Lua-cURLv3 (for extensions) has been upgraded 0.3.12

	#2165146 (Job #107505) **
	    Cyrus-SASL has been patched to address CVE-2019-19906.

	#2156894 (Job #106143) **
	    The 'pull -u' threads on a standby server to a commit server
	    could fail to transfer archives from a promoted shelved change when
	    there is latency between the commit server and the edge server
	    causing slow transfer of archives to the commit server. This
	    has been addressed by allowing 'pull -u' threads on standby
	    servers to retry transfers of missing archives.

	#2151255 (Job #106645) **
	    'p4 storage -d -y' now releases all table locks while deleting or
	    moving archives.

	#2150473 (Job #107115) **
	    Errors encountered while journalcopy'ing in a background thread
	    that are reported to the standby or forwarding-standby's server
	    log will no longer be missing parts of the error message.

	#2146938 (Job #106795) **
	    Fixed undo problem, a source file is integrated, then a source file
	    revision is undone in the previous integration range, and a later
	    integration attempt claims that all revisions were already
	    integrated.  Now the configurable dm.integ.undo, and the integration
	    option 'p4 integ -Ru', will fix this problem by only creating
	    integration credits for previous integrations that were not in an
	    undo revision range.

	#2140289 (Job #106796) **
	    Updated p4 help resolve to distinguish between resolving with
	    auto-merge ('p4 resolve -am') and resolving manually with an accept
	    merge ('p4 resolve' and choose the 'am' option).  Resolving with
	    auto-merge will not guarantee that all integrations will be merges,
	    only that the choice is automated and merge will be chosen when
	    optimal.

Bugs fixed in 2019.2 Patch 14 (2019.2/2136041)

	#2134805 (Job #104926) **
	    'p4 unshelve' now correctly tracks temporary shelve copies created
	    for pending resolves on edge servers in db.storagesh.

	#2132218 (Job #106579) **
	    The unlicensed limit on the repo count has been changed to 3.

	#2132012 (Job #106209) **
	    The license file now supports exposing extra capabilities (with
	    a new 'ExtraCapabilities' field) to be used for centralised
	    licensing of add-on products.

	#2129716 (Job #106628) **
	    Under specific conditions that cannot normally occur, a file open
	    for integrate but without any resolve records could cause the server
	    to crash during submit. This has been fixed.

	#2126983 (Job #106380) **
	    Missing archives were sometimes not reported by 'p4 verify -z'.
	    This has been fixed.

	#2126982 (Job #105391) **
	    The performance of verifying archives using the storage tables
	    has been improved. ('p4 verify -Z', p4 storage -v')

	#2119158 (Job #104527) **
	    Fix for wrong stream view generation with an embedded wildcard.
	    If a stream is a grandchild of the mainline, and has a one 
	    parameter import path, and share paths which are contained in the
	    import path, then the view generated for the first share path with
	    an embedded wildcard would be incorrect. This problem only occurred
	    on Linux and Windows platforms.

	#2118091 (Job #106130) *
	    The client-side threading for parallel sync no longer shares charset
	    converters, preventing race conditions during translation of unicode
	    type files which could corrupt the files in the workspace.

	#2105269 (Job #104119) **
	    Fix to allow a file in a virtual stream to be opened and submitted
	    if the file is in a share stream path with an embedded wildcard.

Bugs fixed in 2019.2 Patch 13 (2019.2/2106894)

	#2105325 (Job #105997) * ** *** ****
	    OpenSSL has been upgraded to 1.1.1k

Bugs fixed in 2019.2 Patch 12 (2019.2/2098840)

	#2085299 (Job #104559) **
	    'p4 revert' now only acquires when necessary exclusive locks on
	    db.resolvex, db.revsh and db.storagesh, and instead acquires
	    shared locks on db.resolvex and db.revsh.

	#2084570 (Job #104559) **
	    'p4 revert' no longer acquires an exclusive lock on db.storage.

	#2081106 (Job #105397) **
	    A save of a stream specification in which no changes are actually
	    made to the specification no longer creates a changelist or consumes
	    a changelist number.

	#2080390 (Job #102714) **
	    The P4Tunable::Get() function has been inlined to improve
	    performance.

	#2080101 (Job #102715) **
	    Several MapChar functions have been inlined to improve the
	    performance of the mapping code.

	#2079976 (Job #102713) **
	    Tunable variables are now cached during code loops to improve
	    performance.

Bugs fixed in 2019.2 Patch 11 (2019.2/2077132)

	#2067567 (Job #105118) **
	    Ensure shelved archives are present when replacing with -f or -r.

	#2065803 (Job #105093) **
	    When background submit results in failed archive transfers,
	    those archives may be restored using 'pull -u -t'. However, if
	    the archives were not restored to the commit server before
	    commands attempt to fetch them, the pull command might lose
	    the ability to recover them due to the entries being removed from
	    the commit server's rdb.lbr. This behavior has been fixed.

	#2059990 (Job #104937) **
	    Shelf promotions containing an intgration can lead to storage
	    inconsistancies. This has been fixed.

	#2058013 (Job #93890) **
	    Suppress the "Slashes (/) not allowed in 'ws0//sroot/main'." error
	    on 'p4 shelf -d' and 'p4 change -d' on shelves created by
	    'p4 switch'.

	#2051504 (Job #103914) **
	    Shelving unresolved integ file will no longer lead to BAD digest
	    error upon storage verification.

	#2048148 (Job #104093) **
	    'p4 verify -S' now reports the correct changelist number for +S
	    type files.

	#2041703 (Job #104530) **
	    Change to reduce lock held time on db.stream when generating
	    a view with 'p4 stream -ov'.

	#2040680 (Job #102314) *
	    Windows clients now correctly report when they are unable to replace
	    files when using the long filename support.

	#2038958 (Job #102314) **
	    Clients now correctly report when they are unable to delete files.

	#2032945 (Job #104279) **
	    Fix to ensure that the 'describe' command is not manipulating the
	    promoted ktext shelf archive files.

Bugs fixed in 2019.2 Patch 10 (2019.2/2056291)

	#2051777 (Job #104945) * ** *** ****
	    OpenSSL has been upgraded to 1.1.1i

	#2013288 (Job #103714) **
	    'p4 ldapsync -i' no longer stops when an error is encountered.
	    Instead it waits the provided interval and runs again.

	#2010045 (Job #102750) **
	    A crash bug would occur when submitting an integration from
	    a local depot to a readonly depot.  The integration was illegal,
	    but would succeed with a sync/delete message, and a following
	    submit would crash.  This has been fixed.

	#2009478 (Jobs #042042, #102435) **
	    Windows file I/O now uses the native Windows API rather then
	    the Posix file I/O routines.  This removes the limit on the
	    number of concurrent open files for the librarian and error
	    logging.

	#2007605 (Job #103570) **
	    The Ktext unexpanded digest and the file size is stored in the
	    db.storagesh table when a file is shelved or promoted from an
	    Edge server.

	#2006144 (Job #102594) **
	    Fix the problem that after adding then deleting an optional field
	    to/from a stream's spec, 'p4 stream' still presents the deleted
	    field.

	#2003436 (Job #102212) **
	    Previously 'p4 submit -b' would fail if submit.allowbgtransfer
	    was not configured, or when that command was run from a server
	    that was not an edge server. Now submit will succeed and
	    fail back to the default archive transfer behavior
	    for those scenarios.

Bugs fixed in 2019.2 Patch 9 (2019.2/1999325)

	#1998635 (Job #103411) **
	    'p4 reshelve' could crash when file arguments were provided. This
	    has been fixed.

	#1998062 (Job #102542) **
	    Error handling code had an error and has been corrected to
	    no longer error on error.

	#1996931 (Job #102264) **
	    This enhancement supports automatic start of the Perforce p4diag
	    tool when the Perforce Windows Service starts.  Two things are
	    required.  Place p4diag.exe in the same directory as p4s.exe and
	    p4 set -s Perforce P4DIAGLOG to the p4diag log file name.  See
	    the p4diag autostart KB article.

	#1992325 (Job #103253) **
	    When a workspace is in a stream with an import+ path, such as
	    'import a_path/...', and a parent stream has a path with the same
	    view path, such as 'share a_path/...', then an attempt to open
	    a file for edit or submit the file would result in a message
	    "%depotFile% - warning: cannot submit from stream %stream% client".
	    A file submit under such a scenario would fail.  This was a bug
	    which has been fixed.

	#1991660 (Job #102941) **
	    On Windows a mix of network and API errors may have been reported
	    incorrectly if Server tracing was present.  This has been fixed.

	#1989629 (Job #103165) **
	    The GetArchiveFileInfo() method called within the Archive()
	    extension callback now returns the archive revision as a string
	    rather than an integer.

	#1989170 (Job #103202) *
	    The 'Navigate to URL' message reported by 'p4 login' when using
	    the Helix Authentication Service was emitted on stderr despite
	    being an info message. This has been fixed.

	#1984638 (Job #102995) **
	    Upgrading the server from pre-19.1 would store the wrong checksum
	    for unexpanded ktext files in db.storagesh. The upgrade process has
	    been fixed. To correct the checksums on servers that have already
	    been upgraded to 19.1 or greater, please run `p4 storage -R -S`.

Bugs fixed in 2019.2 Patch 8 (2019.2/1983127)

	#1977774 (Job #102850) **
	    The replacement of a lazy copied shelved revision would cause
	    the removal of the archive on downstream edge servers.
	    This has been fixed.

	#1975999 (Job #102797) *
	    Windows clients no longer leave trailing NULL bytes at
	    the end of '+k' filetype files transfered via sync/print
	    when the RCS 'Author' keyword was used and the username
	    submitting the file was changed post-submit.

	#1975256 (Job #102789) **
	    The Windows server appended the packfile name to the target
	    directory using '\' rather than '/' for a linux client. This
	    caused GConn to fail to clone from the Windows server.

	#1973248 (Job #102389) **
	    Ensure custom spec fields for type LLIST are formatted with tabs.

	#1972128 (Job #102471) **
	    Fix for lock error "Locking failure: db.templatewx locked after
	    db.resolvex!" when deleting a promoted shelf with a stream spec
	    from an edge server client.

	#1971421 (Job #101504) **
	    A rare error that could lead to database deadlock during journal
	    rotation has been fixed.

	#1971420 (Job #102020) **
	    MFA logins via URLs are now delivered promptly through edge-servers.

	#1970670 (Job #102609)
	    Network errors on Windows and Linux are now more accurately
	    reported when additional tracing such as net=3 or ssl=3 are used.

	#1970333 (Job #72507) **
	    If a file in a task stream is submitted with the reopen flag, and a
	    resolve had been done prior on the file prior to the submit, then
	    the submit would fail with the messages "Files newly opened or
	    reverted during submission".  This has been fixed.

	#1969317 (Job #102482) **
	    If a stream specification is open in a workspace on an edge server,
	    and a user edits a different stream specification from the same
	    workspace with a 'p4 stream' command, then the edge server database
	    tables db.template and db.bodtextcx would be updated, but the
	    corresponding commit server tables would not.  Fixed.

	#1968334 (Job #102541) **
	    'p4 unshelve' no longer crashes if a network error is encountered
	    during completion of the command.

	#1967144 (Job #102543) **
	    File transfers between pre 19.1 replicas with 19.1 and subsequent
	    commit server releases can fail with a fileSize error. This
	    has been fixed.

	#1964794 (Job #102470) *
	    'p4 reconcile'/'p4 status' might report about invalid filenames
	    of the form '//depot/0' or '//depot/100', etc.  This has been
	    fixed.

	#1960706 (Job #102177, #102416, #102442) **
	    'p4 submit' from an edge server using background archive transfer
	    could erroneously succeed when archive transfer from the client
	    to the edge server has failed. This has been fixed.

	#1959367 (Job #102146) **
	    The amount of scanning rdb.lbr when using the --batch argument
	    on a 'pull -u' command or background thread has been reduced.

	#1959142 (Job #102350 ) **
	    'Maxwords' was missing from the spec spec string.
	    This prevented a spec edit of the stream spec to
	    retain this field property in the Paths:element when
	    saving the edited stream spec into db.bodtext.

	#1958997 (Job #102391) **
	    The --batch parameter on a 'pull -u' command or background thread
	    is again honored when retrying transfers that failed due to a
	    digest mismatch.

Bugs fixed in 2019.2 Patch 7 (2019.2/1960190)

	#1955699 (Job #99520) **
	    'p4 tag' run with multiple arguments updating an autoreload label
	    no longer causes the label to be loaded into memory and rewriten
	    to the unload depot for each argument.

	#1951949 (Job #101851) **
	    Background transfer for edge submit now ensures that the external
	    address for the edge server performing the submit is valid before
	    allowing the submit to proceed.

	#1938920 (Job #101728) **
	    Performance might have been less than optimal for a sync
	    from an edge or build server when file content for a number
	    of revisions were not in the replica's archives. Performance
	    can now be improved for such syncs from these servers (if the
	    server has 'pull -u' threads running and its 'lbr.replication'
	    configurable is set to a value of 'readonly') by setting the
	    new 'rpl.deferred.sends' configurable to a value of '1'.

	    Changes to 'rpl.deferred.sends' will affect all new sync commands
	    on the edge or build server for which it was changed; no server
	    restart is required.

	#1935071 (Job #101653) **
	    Single threaded server requests would start a pending storage
	    upgrade request. This has been fixed.

	#1932610 (Job #101726) **
	    Performance has been improved for parallel syncs from an edge
	    or build server, either of which with their 'lbr.replication'
	    configurable set to a value of 'cache' and have one or more
	    'pull -u' threads running, and the archive file content for
	    a number of revisions are not in the replica's archives.

	#1930770 (Job #101577) **
	    Provide support to correct older customized specs after 2019.2
	    upgrades.  The --repair option permits the correction of a
	    customized spec causing errors.  Errors may arise in a customized
	    spec after upgrading from a pre 2019.2 to a 2019.2 or later server
	    where a previous spec customization contains incompatible or
	    missing data.

	#1930633 (Job #101663) **
	    A client's have list entry is no longer corrupted when refreshing
	    a revision using 'sync -f' from an edge or build server, either of
	    which with their 'lbr.replication' configurable set to a value of
	    'cache', and the archive file content for the revision is not in
	    the replica's archives.

	#1930299 (Job #101687) **
	    Improve error handling for Extension AuthPreSSO, Archive and MFAPre
	    hooks for when both the Extension archive and unpacked files are
	    missing.

	#1930296 (Job #101704) **
	    The '%' character is now properly escaped when saving Extension
	    instance configuration data.

	#1929494 (Job #97632) **
	    Previously a stream specification could not be unshelved to a
	    workspace where the spec was opened for edit.  Now unshelving
	    a stream spec when it is opened in a workspace schedules a
	    resolve.  The unshelving action is completed once the stream
	    spec has been resolved.

	#1920305 (Job #101314) **
	    Better error handling of an Extension's GlobalConfigFields callback.

Bugs fixed in 2019.2 Patch 6 (2019.2/1942501)

	#1938267 (Job #97815, #101422, #101452, #101454) **
	    The storage permission requirements have been relaxed, normal
	    users can now view the storage record table. The lbrFile and
	    lbrRev fields are added to the error messages produced
	    during a storage upgrade that are written to the
	    'storage_upgrade_errors' file when a digest is not computed for
	    a keyword revision. The generation of digests during a storage
	    upgrade can be surpressed using the 'lbr.storage.skipkeyed'
	    configuration variable. The -v argument to 'p4 storage' now
	    correctly reports unset digests.

	#1929471 (Job #101586) **
	    Extension instance configuration data is now refreshed between
	    invocations within a single client connection.

	#1929166 (Job #101571) **
	    Extension configuration data no longer strips quotes.

	#1927240 (Job #101541) *
	    Binary file part of extension package might be corrupted
	    during transfer as they were processed as text file.
	    This is fixed.

	#1926421 (Job #100917) **
	    The 'p4 graph cat-file' command was missing the -o option. This
	    change adds in the missing option.

Bugs fixed in 2019.2 Patch 5 (2019.2/1927395)

	#1926870 (Job #101494) **
	    Under specific conditons 'p4 submit -e' of a file of action branch
	    could be submitted in such a way that the archive file is not where
	    the server expects. This has been fixed.

	#1926248 (Job #100948) **
	    'p4 submit' now fails with a "tampered with after resolve" error
	    when trying to submit an unshelved file that is resolved with 'ay'
	    and then modified inadvertently.

	#1924492 (Job #101216) *
	    Ditto mappings could cause 'p4 reconcile' or 'p4 clean' to miss
	    files. This has been fixed.

	#1924491 (Job #101579) **
	    Performance improvement of commands with large numbers of arguments.
	    Notably 'p4 sync -L' is significantly faster with huge filelists
	    in batch sizes of 10000+.

	#1923793 (Job #101127) **
	    Make the storage table building process visible to the monitor.

Bugs fixed in 2019.2 Patch 4 (2019.2/1918134)

	#1915408 (Job #101215) **
	    A memory leak in SSL-enabled servers has been closed.

Bugs fixed in 2019.2 Patch 3 (2019.2/1915892)

	#1914600 (Job #101297) **
	    Slow sync performance caused by RCS locking. This has been fixed.

	#1914512 (Job #101243) **
	    The first stage storage upgrade was generating an incorrect
	    error message about a failed digest. This has been fixed.

	#1912874 (Job #101004) **
	    The first phase of the storage upgrade process now limits
	    the number of storage records in a single transaction to 1000.

	#1911819 (Job #101126) **
	    The storage orphan scanner processes are now visible to the monitor.

	#1910009 (Job #100949, #101031) **
	    The job and stream specs can now be customised using explicit
	    numbers instead of 'NNN' for backwards compatibility.

Bugs fixed in 2019.2 Patch 2 (2019.2/1908095)

	#1907359 (Job #99171) **
	    Partitioned db.sendq tables are now removed if empty at the end of
	    parallel syncs and on client delete.

	#1905528 (Job #100555) **
	    Ignore permanent .lck failures on attempts to open a RCS file
	    for reading.

	#1905527 (Job #100956) **
	    Searches for storage records during an orphan scan have performance
	    issues. This has been fixed.

	#1904027 (Job #100945) **
	    'p4 revert -C clientname' should ignore admin's client since the
	    client name is specified as a parameter. This has been fixed.

	#1903205 (Job #101017) **
	    Remote depot access could cause a hang if the new track logging
	    was enabled. This has been fixed.

	#1903205 (Job #100868) **
	    The new structured logging events added this release are no longer
	    logged if the log file is pinned to version 48 or lower. Those event
	    types now have the ".49" version specifier.

	#1902941 (Job #100588) **
	    The server could return a bad result when attempting to join
	    non-matching table keys. This has been fixed.

	#1898941 (Job #100027) **
	    The 'failed-over' trigger event can now be used by Extensions.

	#1898491 (Job #100554) **
	    The serverId is now correctly recorded in the configure history when
	    changes are made with either 'p4d -cset' or 'p4d -cunset'.

	#1898491 (Job #93870) **
	    'p4d -cset', 'p4d -cunset' and 'p4d -cshow' no longer take write
	    locks on all tables; instead only the tables required are locked.
	    'p4d -cshow' now only takes read locks.

	#1898491 (Job #89608) **
	    'p4d -cset' and 'p4d -cunset' now resolves the journal file to write
	    too in the same way that the server would if started with the same
	    flags and environment. When using 'p4d -cset' to set P4JOURNAL, if
	    the new value would change the journal file being used, the new
	    value is used instead.

Bugs fixed in 2019.2 Patch 1 (2019.2/1897966)

	#1896353 (Job #100568) **
	    A 'p4 storage -l pause //depot/...' request now waits until
	    the orphan scanner has entered the paused state before
	    returning.

	#1895480 (Job #100608) **
	    Avoid error on conflicting clients for commands that are
	    read-only. For 'p4 opened -c <chg>' or -u, the current client
	    of the user is irrelevant and no error should be displayed
	    if that client is tied to another server.
	    The same should be the case for 'p4 client' when the client name
	    is provided as an argument or for 'p4 client -i' which
	    should validate the client name listed in the form rather than
	    the client tied to the user initiating the command.

	#1891322 (Job #100615, #100616) **
	    The server will now log a message if computing the digest
	    for a keyed file fails during the storage upgrade process.
	    Additionally, the server now avoids holding the write lock
	    on the storage table during digest calculation during the
	    storage upgrade process.

	#1889618 (Job #100613) **
	    Creating file locks (.lck) could take a long time to fail.
	    Check the error returned by the OS and fail quickly if it
	    is a permanent error.

	#1888789 (Job #100682) **
	    The orphan scanner did not correctly follow relative symlinks
	    on the Windows platform. This has been fixed.

	#1887331 (Job #83623) * **
	    The default value of the 'filesys.lockdelay' has been decreased
	    from 300 to 90 to ensure abandoned .lck files are correctly deleted.

	#1887330 (Job #100634) **
	    'p4 storage -l start //depot/...' can fail if an orphan
	     scanner with a name that is a substring of 'depot'
	     exists. This has been fixed.

	#1875057 (Job #100028) **
	    'p4 clean' and 'p4 reconcile' now handle the '*' wildcard correctly
	    on Windows.

Bugs fixed in 2019.2 (2019.2/1885864)

	#1882284 (Job #100524) **
	    Changing the file type from a tempobj type (+S) to a non tempobj
	    type incorrectly removes all previous revisions. This has been
	    fixed.

	#1877678 (Job #100400) **
	    A call to FileSys::Stat() issued on a symlink would return
	    inconsistent results between operating systems. This has been fixed.

	#1869587 (Job #99913) **
	    A journal rotation beyond the LEOF is no longer sent to
	    a replica that should be constrained by the LEOF.

	#1867765 (Job #99911) **
	    A metadata 'pull' or 'journalcopy' request for a journal fragment
	    from the current journal no longer fails if the current journal is
	    rotated just prior to determining the size of the current journal.

	#1866020 (Job #100158) **
	    UTF8 type files sync'ed from  cache mode replica with a pre-2016.2
	    client could report a depot file error. This has been fixed.

	#1865912 (Job #100130) **
	    A crash when replicating a file into a directory with
	    no write permissions is now prevented.

	#1861550 (Job #98869) **
	    The 'pull -L' thread no longer applies transactions beyond
	    the LEOF to the metadata of a 'standby' or 'forwarding-standby'
	    server, nor prematurely advances to the next journal if the
	    LEOF is in a prior journal.

	#1858397 (Job #100012) **
	    If a stream spec is in a change but not shelved, and file is shelved
	    but not opened, then 'p4 shelve -d -c N' would incorrectly report
	    "Shelved change N partially deleted, still contains stream ...".
	    The stream spec was never in the shelf, the message was not correct.
	    Fixed to report "Shelved change N deleted."

	#1858257 (Job #99978) **
	    The upgrade storage walker would incorrectly take the
	    walker lock in exclusive mode, blocking 'safe' command
	    during the 2nd phase of the upgrade. This has been fixed.

	#1855841 (Job #99869)
	    If a shelved change had an open stream spec change for one stream
	    and a file change from that stream, and then the stream spec and
	    file were reverted, and the client was set to a different stream,
	    'p4 describe -S clno' would give an error "RpcTransport: partner
	    is not a Perforce client/server".  This has been fixed.

	#1854429 (Job #99609) **
	    If 'p4 submit -b' was run from an edge server on a change
	    with missing archives, a pull thread on the commit server
	    could crash and cause more than just the missing archive to
	    fail to transfer. This has been fixed.

	#1854349 (Job #99762) **
	    'p4 graph tag' now allows partial SHA1 arguments.

	#1852875 (Job #99206) **
	    The environment P4EXTENSIONS ending with trailing slash caused
	    should be silently disregarded but caused a runtime error.
	    The runtime issue has been fixed, the environment still
	    requires a pattern to match in extension filenames.

	#1850983 (Job #99608) **
	    Improve argument validation on 'p4 extension' to prevent
	    certain combinations from entering a bad state.

	#1850862 (Job #99597) **
	    A metadata 'pull' or 'journalcopy' request for a journal fragment
	    from the current journal no longer fails if the current journal
	    is rotated just prior to opening the current journal.

	#1850807 (Job #99749) **
	    Trailing slashes at end of directory name when installing
	    an extension was failing. This is fixed.

	#1848299 (Job #31585) **
	    'p4 fstat' could scan db.rev excessively when the -e flag was
	    combined with file spec using a revision specifier. This has been
	    fixed.

	#1847529 (Job #96725) **
	    Attempts to restart the former master server after
	    successful failover will now fail if its serverid
	    has not been modified via 'p4d -xD' to a different
	    serverid than the new master.

	#1842553 (Job #28576) **
	    A 'p4 obliterate' command called without the '-y' confirm
	    flag now only takes a READ lock.

	#1842404 (Job #99542) **
	    'journalcopy -i 0' no longer incorrectly detects an incorrectly
	    terminated journal when rotated immediately after an unrelated
	    journal growth.

	#1840225 (Job #98278) **
	    If an edge server is restarted and must replay the journal
	    that contains a record of an install of an extension
	    and subsequent delete of that same extension, the edge
	    journal replay would be blocked at that position attempting
	    to download an extension archive that is no longer
	    needed. This has been fixed.

	#1839667 (Job #75382) **
	    The maximum size of shared memory for monitor table use was
	    too small (2048 8K pages). Now it's 32768 pages for all
	    platforms except Windows 32bit where memory address space
	    is severely limited.

	#1839424 (Job #98597) **
	    Messages enumerating the mandatory standby servers that are
	    not alive are now also reported in the server log of the
	    replica servers to which replication is stalled.

	#1836925 (Job #97741) **
	    P4 extension ClientApi.new() can now process a port
	    supplied via p4 -p <PORT>.

	#1836209 **
	    Adjustments to allocation routines lead to less memory usage in
	    the Windows server.

	#1830413 (Job #96675) **
	    Extension package command no longer accepts "." for
	    current working directory. The directory name must be
	    supplied either as an absolute or relative path.

	#1829901 (Job #99300) **
	    Journal header notes included with database table unloads
	    created by 'p4 journaldbchecksums -u' now contain the correct
	    case/unicode flags and the server root of the server they
	    were unloaded from.

	#1826907 (Job #99208) **
	    'rdb.lbr' is now locked along with the db.* files during server
	    shutdown. This prevents incomplete btree updates of 'rdb.lbr'
	    by other threads as the server is shut down.

	#1826716 (Job #94998) **
	    Protections, permissions and groups for a user are now cached and
	    reused by additional commands run on the same connection.

	#1823272 (Job #98566, #99136) **
	    The server no longer allows force deletion of a submitted
	    change that resides in an unloaded task stream, and when
	    a task stream change isn't unloaded, it now reports the correct
	    number of files in the change preventing the delete.

	#1821164 (Job #90948) **
	    Archive pull threads initiated by 'p4 pull -u --batch'
	    didn't resume active archive transfers after connectivity
	    issues with the commit server. This has been fixed.

	#1814097 (Job #98909) **
	    'p4 change -df' of submitted changes containing stream edits
	    now displays the correct messages about the stream and files
	    in the change that prevent the delete.

	#1814096 (Job #98925, #98910) **
	    Submitted changes containing stream only edits now have the
	    correct change root field set in db.change.

	#1812373 (Job #97309) *
	    A 'p4 reconcile' that would add a huge number of files could
	    cause an Rpc buffer too big error. This has been fixed.

	#1812099 (Job #98861) **
	    'p4 renameuser' would leave orphaned locks when the user being
	    renamed has opened exclusive checkout files (+l). This has
	    been fixed.

	#1812005 (Job #97309) **
	    The service types ClusterServer and Zookeeper stored in the server
	    spec are no longer supported; assigning these service types in a
	    server spec will raise a warning.

	#1808584 (Job #98852) **
	    The server now consistently enforces a 1024 argument limit
	    to the arguments supplied to trigger programs.

	#1808412 (Job #98651) **
	    The server can enter an infinite loop trying to join the rev
	    and have table during a sync request using the #have revision
	    specifier and a changed client view. This has been fixed.

	#1804485 (Job #90995) **
	    Changelist checksums for changes containing task stream files
	    could erroneously report as 'differ' in the integrity.csv
	    structured log on replica servers. This has been fixed.

	#1803518 (Job #95206) **
	    'p4 unshelve' is now allowed for 'partitioned' type clients.

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

Major new functionality in 2019.1 (2019.1/1796703)

	#1777138 (Job #96749) **
	    Private editing of streams

	    Private editing of streams allows a user to modify a stream in
	    isolation from other users of that stream, which provides an
	    opportunity to test the modifications. In contrast, if edits to a
	    stream spec are public, they take effect as soon as the user saves
	    the edited stream spec. Prior to this release, a user could edit a
	    stream spec privately by using 'p4 stream edit'. This new feature
	    is an improvement over 'p4 stream edit' in terms of visibility and
	    tracking. A single atomic changelist can contain all the work on
	    the stream spec and any associated code changes.  The feature
	    includes the -So, -Si, or -Sx options of 'p4 edit', 'p4 submit',
	    'p4 revert', and 'p4 resolve'.  These options give you control of
	    when your changes will affect other users.  This feature also
	    makes it easy to shelve the edited spec so that another user can
	    test the changes in an isolated environment. For more information,
	    see 'p4 help streamcmds'.

	#1770847 (Job #98025) **
	    Background archive transfer for edge server submits

	    The 'p4 submit -b' option allows submit from an edge server to
	    transfer archive files in the background after the submit has
	    committed its metadata. The user submitting the change will see
	    the submit complete as soon as the metadata commit is completed,
	    and will not have to wait for the archives to transfer.  The
	    archives will be pulled from the edge to the commit server using
	    internally launched pull threads on the commit server.

	    To enable 'p4 submit -b', the new 'submit.allowbgtransfer'
	    configurable must be set on all participating servers in the
	    installation.  The 'p4 submit -b' behavior can be made implicit
	    for any 'p4 submit' run on an edge server by setting the new
	    'submit.autobgtransfer' configurable to 1.

	    The new 'p4 pull -u -t <target>' command may be used for recovery
	    of failed archive transfers.

	    See 'p4 help submit' and "Background archive transfer for edge
	    server submits" in the P4 Command Reference.

	#1776989 (Job #48387) **
	    The Helix Core Server Extensions are a fully-supported alternative
	    to triggers. To learn about the advantages of using extensions,
	    see 'p4 help extension' and the "Triggers and Extensions" chapter
	    of Helix Core Server Administrator Guide: Fundamentals.
	    Note: Extensions are not available with the Helix Core Server
	    on Windows platforms.

	#1747154 (Job #96951) **
	    The graph data model now supports Git LFS locks.

	    These locks are exclusive and are honored by all 'p4' commands that
	    would interact with Git LFS files. Unlike the '+l' filetype locking,
	    these locks are taken, released and listed by 'p4 graph lfs-lock',
	    'p4 graph lfs-unlock' and 'p4 graph lfs-locks' respectively.

	#1743677 * ** *** ****
	    Autotune has been enabled by default.

	    This functionality enables the TCP stack to manage the size of the
	    network send and receive buffers, allowing more efficient use of the
	    network, especially over slow high latency connections.
	    This behaviour can be disabled in clients, proxies, brokers and the
	    server by setting the 'net.autotune' configurable to 0; the default
	    is now 1 (enabled).  Clients can set this via "p4 set" or by adding
	    the configurable to P4CONFIG files and servers can set this via
	    'p4 configure'.
	    On Windows based platforms, send buffer sizes are not autotuned but
	    are still manually configurable with the 'net.tcpsize' configurable.

	#1743672 (Job #95158) **
	    The new 'db.storage' table replaces 'db.archmap' to provide a link
	    count for archive files on the server. This tracking reduces the
	    complexity of identifying lazy-copies, allowing +Sn type files to
	    now be lazy copied and providing massive performance gains for
	    'p4 obliterate' on servers with a lot of integration history.

	    Please note that the upgrade from 'db.archmap' to 'db.storage' may
	    be non-trivial, although it will mostly be performed in the
	    background after the server has restarted, and that the new table
	    will also be potentially sizeable.

	    This change impacts our recommendations for distributed server
	    upgrades. Please refer to the upgrade notes section, which has
	    been updated for this release.

Technology Preview features in 2019.1 (2019.1/1796703)

	#1750665 (Job #21301) *
	    The Helix Core Client Extension mechanism allows the client to
	    run scripts written in the Lua programming language. See
	    'p4 help clientextensionintro'.

Minor new functionality in 2019.1 (2019.1/1796703)

	#1775358 (Job #97011) **
	    Improved tracking of stream spec edits because the changelist
	    number associated with a stream update is included in the spec
	    depot records.

	#1774452 **
	    The definition of the P4LANGUAGE variable has been updated to say
	    that it should be set to the language tag and optional region for
	    the user.  E.g. if $LANG is 'en-US.UTF-8', set P4LANGUAGE=en-US.
	    Note that servers with existing message translations will need their
	    message database to be re-seeded with an updated message file.

	#1771834 (Job #92000) **
	    'p4 archive' has a new '-z' option, which can reduce disk space
	    usage. See 'p4 archive' in the P4 Command Reference.

	#1764315 (Job #96321) **
	    Added '-s change' and '--into-only' flags to 'p4 integrated'
	    command to refine output.

	#1763210 (Job #96748) **
	    'p4 streamlog' displays history of changes to streams.

	#1758544 (Job #96970) **
	    Edge servers may now be chained together. See "Edge-to-edge
	    chaining" in Helix Core Server Administrator Guide: Multi-Site
	    Deployment.

	#1756090 (Job #96667) **
	    Added support for utilizing multiple processor groups on Windows.
	    Enabled by setting the 'sys.threading.groups' configurable to 1.
	    See this configurable in the P4 Command Reference.

	#1753991 (Job #93328) **
	    For all server types, the DistributedConfig field of that server
	    spec shows a line for each configurable that is set to a non-default
	    value. In this field, you can edit the value, add a new line to set
	    a different configurable to a non-default value, or delete a line to
	    reset that configurable to its default value.

	#1747051 (Job #96666) **
	    'p4 switch' has a new '--no-sync' flag to allow switching streams
	    but without immediately syncing the target stream.

	#1740349 (Job #61064) **
	    Connections from super users and operators will no longer be refused
	    when the connection limit is exceeded. The limit is defined by the
	    'server.maxcommands' configurable.
	    The new configurable 'server.maxcommands.allow' may be set to 0 to
	    disable this.  See "Limiting simultaneous connections" in Helix
	    Core Server Administrator Guide: Fundamentals.

	#1735885 (Job #373) *
	    The verbose message output from 'p4 -s' now displays the actual
	    error level: warning, error or fatal.  Both error and fatal levels
	    still cause 'p4' to return 1.  For the case where existing scripts
	    depend on the previous behavior, the API level can be set with
	    '-Zapi=85' to cause all non-info output to be tagged with error.

	#1735085 (Job #96336) **
	    Setting the new 'push.unlocklocked' configurable to 1 automatically
	    unlocks files that were locked as part of a push, on push failure.

	#1733878 (Job #66258) * ** *** ****
	    Improvements to compression code yield 13-21% faster performance
	    for binary files (sync and verify) and checkpoints (creation
	    and replay).

	#1726148 (Job #51996) * **
	    'p4 reconcile' has a new '-t' flag that allows filetype changes to
	    be detected.

	#1723334 (Job #76162) **
	    'p4 -ztag info' now reports an 'unloadSupport' tag with a value of
	    either 'enabled' or 'disabled', depending on the existence of an
	    unload type depot.

Bugs fixed in 2019.1 Patch 16 (2019.1/2135798)

	#2128368 (Job #106380) **
	    Missing archives were sometimes not reported by 'p4 verify -z'.
	    This has been fixed.

	#2128366 (Job #106628) **
	    Under specific conditions that cannot normally occur, a file open
	    for integrate but without any resolve records could cause the server
	    to crash during submit. This has been fixed.

	#2126651 (Job #104926) **
	    'p4 unshelve' now correctly tracks temporary shelve copies created
	    for pending resolves on edge servers in db.storagesh.

	#2124831 (Job #105391) **
	    The performance of verifying archives using the storage tables
	    has been improved. ('p4 verify -Z', p4 storage -v')

	#2119621 (Job #106130) *
	    The client-side threading for parallel sync no longer shares charset
	    converters, preventing race conditions during translation of unicode
	    type files which could corrupt the files in the workspace.

	#2118436 (Job #104527) **
	    Fix for wrong stream view generation with an embedded wildcard.
	    If a stream is a grandchild of the mainline, and has a one 
	    parameter import path, and share paths which are contained in the
	    import path, then the view generated for the first share path with
	    an embedded wildcard would be incorrect. This problem only occurred
	    on Linux and Windows platforms.

	#2107876 (Job #104119) **
	    Fix to allow a file in a virtual stream to be opened and submitted
	    if the file is in a share stream path with an embedded wildcard.

Bugs fixed in 2019.1 Patch 15 (2019.1/2106072)

	#2105325 (Job #105997) * ** *** ****
	    OpenSSL has been upgraded to 1.1.1k

Bugs fixed in 2019.1 Patch 14 (2019.1/2093245)

	#2085707 (Job #104559) **
	    'p4 revert' now only acquires when necessary exclusive locks on
	    db.resolvex, db.revsh and db.storagesh, and instead acquires
	    shared locks on db.resolvex and db.revsh.

	#2084569 (Job #104559) **
	    'p4 revert' no longer acquires an exclusive lock on db.storage.

	#2080604 (Job #105397) **
	    A save of a stream specification in which no changes are actually
	    made to the specification no longer creates a changelist or consumes
	    a changelist number.

	#2075996 (Job #105149) **
	    'p4 describe change' from an edge server was reporting
	    a 'Slashes-in-client' error for shelves created by 'p4 switch'.
	    This has been fixed.

	#2075778 (Job #93890) **
	    Suppress the "Slashes (/) not allowed in 'ws0//sroot/main'." error
	    on 'p4 shelf -d' and 'p4 change -d' on shelves created by
	    'p4 switch'.

	#2074058 (Job #95097) **
	    'p4 switch' now checks the stream hierarchy to determine if the
	    streams are related rather than assuming streams in the same depot
	    are related. To switch to an unrelated stream in the same same
	    depot, you will now need to provide the new --allow-unrelated flag.

Bugs fixed in 2019.1 Patch 13 (2019.1/2075729)

	#2066487 (Job #105093) **
	    When background submit results in failed archive transfers,
	    those archives may be restored using 'pull -u -t'. However, if
	    the archives were not restored to the commit server before
	    commands attempt to fetch them, the pull command might lose
	    the ability to recover them due to the entries being removed from
	    the commit server's rdb.lbr. This behavior has been fixed.

	#2064992 (Job #105118) **
	    Ensure shelved archives are present when replacing with -f or -r.

	#2059990 (Job #104937) **
	    Shelf promotions containing an integration can lead to storage
	    inconsistencies. This has been fixed.

	#2058011 (Job #93890) **
	    Suppress the "Slashes (/) not allowed in 'ws0//sroot/main'." error
	    on 'p4 shelf -d' and 'p4 change -d' on shelves created by
	    'p4 switch'.

	#2051487 (Job #103914) **
	    Shelving unresolved integ file will no longer lead to BAD digest
	    error upon storage verification.

	#2048147 (Job #104093) **
	   'p4 verify -S' now reports the correct changelist number for +S
	   type files.

	#2040677 (Job #102314) *
	    Windows clients now correctly report when they are unable to replace
	    files when using the long filename support.

	#2038957 (Job #102314) **
	    Clients now correctly report when they are unable to delete files.

	#2032946 (Job #104279) **
	    Fix to ensure that the 'describe' command is not manipulating the
	    promoted ktext shelf archive files.

Bugs fixed in 2019.1 Patch 12 (2019.1/2056318)

	#2051777 (Job #104945) * ** *** ****
	    OpenSSL has been upgraded to 1.1.1i

	#2011450 (Jobs #042042, #102435) **
	    Windows file I/O now uses the native Windows API rather then
	    the Posix file I/O routines.  This removes the limit on the
	    number of concurrent open files for the librarian and error
	    logging.

	#2013289 (Job #103714) **
	    'p4 ldapsync -i' no longer stops when an error is encountered.
	    Instead it waits the provided interval and runs again.

	#2009304 (Job #102750) **
	    A crash bug would occur when submitting an integration from
	    a local depot to a readonly depot.  The integration was illegal,
	    but would succeed with a sync/delete message, and a following
	    submit would crash.  This has been fixed.

	#2007606 (Job #103570) **
	    The Ktext unexpanded digest and the file size is stored in the
	    db.storagesh table when a file is shelved or promoted from an
	    Edge server.

	#2008128 (Job #102264) **
	    This enhancement supports automatic start of the Perforce p4diag
	    tool when the Perforce Windows Service starts.  Two things are
	    required.  Place p4diag.exe in the same directory as p4s.exe and
	    p4 set -s Perforce P4DIAGLOG to the p4diag log file name.  See
	    the p4diag autostart KB article.

	#2003990 (Job #102212) **
	    Previously 'p4 submit -b' would fail if submit.allowbgtransfer
	    was not configured, or when that command was run from a server
	    that was not an edge server. Now submit will succeed and
	    fall back to the default submit archive transfer behavior
	    for those scenarios.

	#1998628 (Job #103411) **
	    'p4 reshelve' could crash when file arguments were provided. This
	    has been fixed.

	#1989630 (Job #103165) **
	    The GetArchiveFileInfo() method called within the Archive()
	    extension callback now returns the archive revision as a string
	    rather than an integer.

	#1989171 (Job #103202) *
	    The 'Navigate to URL' message reported by 'p4 login' when using
	    the Helix Authentication Service was emitted on stderr despite
	    being an info message. This has been fixed.

	#1984646 (Job #102995) **
	    Upgrading the server from pre-19.1 would store the wrong checksum
	    for unexpanded ktext files in db.storagesh. The upgrade process has
	    been fixed. To correct the checksums on servers that have already
	    been upgraded to 19.1 or greater, please run `p4 storage -R -S`.

Bugs fixed in 2019.1 Patch 11 (2019.1/1984371)

	#1977774 (Job #102850) **
	    The replacement of a lazy copied shelved revision would cause
	    the removal of the archive on downstream edge servers.
	    This has been fixed.

	#1976546 (Job #102609)
	    Network errors on Windows and Linux are now more accurately
	    reported when additional tracing such as net=3 or ssl=3 are used.

	#1975997 (Job #102797) *
	    Windows clients no longer leave trailing NULL bytes at
	    the end of '+k' filetype files transfered via sync/print
	    when the RCS 'Author' keyword was used and the username
	    submitting the file was changed post-submit.

	#1972510 (Job #102471) **
	    Fix for lock error "Locking failure: db.templatewx locked after
	    db.resolvex!" when deleting a promoted shelf with a stream spec
	    from an edge server client.

	#1971418 (Job #101504) **
	    A rare error that could lead to database deadlock during journal
	    rotation has been fixed.

	#1971417 (Job #102020) **
	    MFA logins via URLs are now delivered promptly through edge-servers.

	#1969457 (Job #72507)
	    If a file in a task stream is submitted with the reopen flag, and a
	    resolve had been done prior on the file prior to the submit, then
	    the submit would fail with the messages "Files newly opened or
	    reverted during submission".  This has been fixed.

	#1967866 (Job #102541) **
	    'p4 unshelve' no longer crashes if a network error is encountered
	    during completion of the command.

	#1967145 (Job #102543) **
	    File transfers between pre 19.1 replicas with 19.1 and subsequent
	    commit server releases can fail with a fileSize error. This
	    has been fixed.

	#1960114 (Job #102442, #102416, #102177) **
	    'p4 submit' from an edge server using background archive transfer
	    could erroneously succeed when archive transfer from the client
	    to the edge server has failed. This has been fixed.

Bugs fixed in 2019.1 Patch 10 (2019.1/1962178)

	#1955700 (Job #99520) **
	    'p4 tag' run with multiple arguments updating an autoreload label
	    no longer causes the label to be loaded into memory and rewriten
	    to the unload depot for each argument.

	#1951411 (Job #101851) **
	    Background transfer for edge submit now ensures that the external
	    address for the edge server performing the submit is valid before
	    allowing the submit to proceed.

	#1938266 (Job #97815, #101422, #101452, #101454) **
	    The storage permission requirements have been relaxed, normal
	    users can now view the storage record table. The lbrFile and
	    lbrRev fields are added to the error messages produced
	    during a storage upgrade that are written to the
	    'storage_upgrade_errors' file when a digest is not computed for
	    a keyword revision. The generation of digests during a storage
	    upgrade can be surpressed using the 'lbr.storage.skipkeyed'
	    configuration variable. The -v argument to 'p4 storage' now
	    correctly reports unset digests.

	#1946483 (Job #101314) **
	    Better error handling of an Extension's GlobalConfigFields callback.

	#1937478 (Job #101639) **
	    'p4 fstat -Ol' for graph depot could crash the server when run on
	     mid-branch and a file there is deleted in the branch tip.

	#1931470 (Job #101653) **
	    Single threaded server requests would start a pending storage
	    upgrade request. This has been fixed.

	#1931197 (Job #100917) **
	    The 'p4 graph cat-file' command was missing the -o option. This
	    change adds in the missing option.

	#1930299 (Job #101687) **
	    Improve error handling for Extension AuthPreSSO, Archive and MFAPre
	    hooks for when both the Extension archive and unpacked files are
	    missing.

	#1930296 (Job #101704) **
	    The '%' character was not properly escaped when saving Extension
	    instance configuration data.

	#1929471 (Job #101586) **
	    Extension instance configuration data is now refreshed between
	    invocations within a single client connection.

	#1929166 (Job #101571) **
	    Extension configuration data no longer strips quotes.

Bugs fixed in 2019.1 Patch 9 (2019.1/1927394)

	#1926603 (Job #101216) *
	    Ditto mappings could cause 'p4 reconcile' or 'p4 clean' to miss
	    files. This has been fixed.

	#1924302 (Job #101494) **
	    Under specific conditons 'p4 submit -e' of a file of action branch
	    could be submitted in such a way that the archive file is not where
	    the server expects. This has been fixed.

	#1919900 (Job #101127) **
	    Make the storage table building process visible to the monitor.

Bugs fixed in 2019.1 Patch 8 (2019.1/1918131)

	#1915408 (Job #101215) **
	    A memory leak in SSL-enabled servers has been closed.

Bugs fixed in 2019.1 Patch 7 (2019.1/1915891)

	#1914179 (Job #101297) **
	    In some cases, RCS archive locking was causing slow sync
	    performance. This has been fixed.

	#1912366 (Job #101243) **
	    The first stage storage upgrade was generating an incorrect
	    error message about a failed digest. This has been fixed.

	#1912256 (Job #101004) **
	    The first phase of the storage upgrade process now limits
	    the number of storage records in a single transaction to 1000.

Bugs fixed in 2019.1 Patch 6 (2019.1/1910149)

	#1908964 (Job #100555) **
	    Ignore permanent .lck failures on attempts to open a RCS file
	    for reading.

	#1908963 (Job #93870) **
	    'p4d -cset', 'p4d -cunset' and 'p4d -cshow' no longer take write
	    locks on all tables; instead only the tables required are locked.
	    'p4d -cshow' now only takes read locks.

	#1908963 (Job #89608) **
	    'p4d -cset' and 'p4d -cunset' now resolves the journal file to write
	    too in the same way that the server would if started with the same
	    flags and environment. When using 'p4d -cset' to set P4JOURNAL, if
	    the new value would change the journal file being used, the new
	    value is used instead.

	#1906389 (Job #100948) **
	    'p4 submit' now fails with a "tampered with after resolve" error
	    when trying to submit an unshelved file that is resolved with 'ay'
	    and then modified inadvertently.

	#1904568 (Job #99171) **
	    Partitioned db.sendq tables are now removed if empty at the end of
	    parallel syncs and on client delete.

	#1904026 (Job #100945) **
	    'p4 revert -C clientname' should ignore admin's client since the
	    client name is specified as a parameter. This has been fixed.

	#1902943 (Job #100588) **
	    The server could return a bad result when attempting to join
	    non-matching table keys. This has been fixed.

	#1902273 (Job #100116) **
	    Client extension p4:connect connection errors were not reported
	    in p4.errors. This has been fixed.

	#1902173 (Job #100158) **
	    UTF8 type files sync'ed from  cache mode replica with a pre-2016.2
	    client could report a depot file error. This has been fixed.

Bugs fixed in 2019.1 Patch 5 (2019.1/1898043)

	#1895699 (Job #100608) **
	    Avoid error on conflicting clients for commands that are
	    read-only. For 'p4 opened -c <chg>' or -u, the current client
	    of the user is irrelevant and no error should be displayed
	    if that client is tied to another server.
	    The same should be the case for 'p4 client' when the client name
	    is provided as an argument or for 'p4 client -i' which
	    should validate the client name listed in the form rather than
	    the client tied to the user initiating the command.

	#1891322 (Job #100615, #100616) **
	    Log a message if computing the digest for a keyed file fails
	    during the storage upgrade process. Avoid holding the write
	    lock on the storage table during digest calculation during
	    the storage upgrade process.

	#1889618 (Job #100613) **
	    Creating file locks (.lck) could take a long time to fail.
	    Check the error returned by the OS and fail quickly if it
	    is a permanent error.

	#1882543 (Job #83623) * **
	    The default value of the 'filesys.lockdelay' has been decreased
	    from 300 to 90 to ensure abandoned .lck files are correctly deleted.

	#1882284 (Job #100524) **
	    Changing the file type from a tempobj type (+S) to a non tempobj
	    type incorrectly removes all previous revisions. This has been
	    fixed.

Bugs fixed in 2019.1 Patch 4 (2019.1/1876401)

	#1875389 (Job #100119, #100351 ) **
	    'p4 reconcile -t' could remove file type modifiers that should
	    be preserved. This has been fixed.

	#1865912 (Job #100130) **
	    Prevent a crash when replicating a file into a directory with
	    no write permissions.

	#1865694 (Job #99021) **
	    Fix for stream import+ case "import+ path...".

Bugs fixed in 2019.1 Patch 3 (2019.1/1865205)

	#1862232 (Job #100081) **
	    Enabled 'p4 submit -Af' for an edge server, for backwards
	    compatibility.  Please note that '-Af' has the same functionality
	    as the '-Sx' parameter, and the use of '-Af' is discouraged in
	    favor of '-Sx'.

	#1862231 (Job #100065) **
	    Now 'p4 shelve -d' without a corresponding '-c clno' changelist
	    number returns a usage error message.

	#1860142 (Job #99990) **
	    Reenabled 'p4 submit' parameter '-Af', for backwards compatibility.
	    Please note that '-Af' has the same functionality as the '-Sx'
	    parameter, and the use of '-Af' is discouraged in favor of '-Sx'.

	#1858257 (Job #99978) **
	    The upgrade storage walker is incorrectly taking the
	    walker lock in exclusive mode, blocking 'safe' commands
	    during the 2nd phase of the upgrade. This has been fixed.

	#1854522 (Job #99733) **
	    If a changelist had a stream spec, and the changelist was shelved
	    and the stream spec was not open in the current workspace, any
	    attempt to change the change spec would result in a error message.
	    Now the error will only occur if the stream field in the change spec
	    has been changed.

	#1848589 (Job #99557) **
	    'p4 describe -S clno' would display a stream spec which was opened
	    in the changelist but not shelved.  Now 'p4 describe -S clno' shows
	    a stream spec only if it has been shelved with the changelist;
	    'p4 describe clno' continues to show a stream spec if it is opened
	    for edit in the changelist or was submitted with the changelist.

	#1808412 (Job #98651) **
	    The server can enter an infinite loop trying to join the rev
	    and have table during a sync request using the #have revision
	    specifier and a changed client view. This has been fixed.

Bugs fixed in 2019.1 Patch 2 (2019.1/1845410)

	#1844397 (Job #75382) **
	    The maximum size of shared memory for monitor table use was
	    too small (2048 8K pages). Now it's 32768 pages for all
	    platforms except Windows 32bit where memory address space
	    is severely limited.

	#1843450 (Job #99587) **
	    If a stream spec had been opened for edit in a numbered
	    changelist and then reverted, 'p4 change -o clno' would still
	    show the stream spec in the changelist.  Fixed so that that
	    the reverted stream spec no longer shows up in the changelist.

	#1840313 (Job #99534) **
	    If a stream spec has been shelved in a numbered changelist
	    and then reverted, editing the changelist would result in
	    warning that the stream spec is not open, even if the stream
	    spec name was unchanged.  This was problematic for downstream
	    applications.

	    Fixed, so that if the name is changed, the warning is still
	    generated and the change is not saved. However if the name is not
	    changed, no warning is issued.  Also added a comment "Shelved, not
	    opened" to the stream field of the change spec output for this case.

	#1838469 (Job #99468) **
	    If a stream spec was opened in a numbered change list, the
	    changelist was shelved, the opened stream spec was reverted,
	    and then the stream spec was deleted from the shelf,
	    'p4 change -o clno' would still show the stream spec in the
	    changelist.  Fixed, so the new behavior no longer shows
	    the stream spec in the changelist.

	#1836989 (Job #99436) **
	    'p4 shelve -As <filespec>' and 'p4 unshelve -As <filespec>' are not
	    legal uses of the commands, but were allowed.  Now an usage error
	    is returned in both cases.

	#1836483 (Job #99413) **
	    For a stream spec in a changelist, the tagged output of
	    'p4 -ztag change -o clno' and 'p4 -ztag changes' will now report a
	    'streamState' tag with values of 'streamOpened', 'streamShelved',
	    'streamOpenedShelved', or 'streamSubmitted'.

	#1834884 (Job #99267) **
	    Using 'p4 submit -b' with triggers could cause triggers to
	    return failure status on Linux platforms when no failure occured.
	    This has been fixed.

	#1834169 (Job #99391) **
	    Added a stream spec digest to the output of 'p4 -ztag stream -o'
	    and 'p4 -ztag describe -S clno'.

	    Added a stream spec diff to the output of 'p4 describe -S clno'.
	    The difference is between the stream spec version in the given
	    changelist number and the head version of the stream spec.

	#1831717 (Job #99288) **
	    'p4 revert -So' would incorrectly remove the stream name from a
	    shelved or submitted changelist.  This has been fixed.

	#1831716 (Job #99275) **
	    Changed MsgDm::StreamMustResolve from a warning to an error.

	#1832439 (Job #98561) **
	    Changed "p4 graph receive-pack" to allow tag deletion. This also
	    fixes the issue for tag deletion via push from git to Git-connector:
	    git push --delete <remote-repository> <tag-name>

	#1830302 (Job #99247) **
	    Enabled triggers for submitting and shelving for stream specs.
	    If an opened stream spec is submitted or shelved, and if a
	    trigger is defined with a file spec of either '//stream/name' or
	    '//stream/name/...', then the trigger will be invoked.  The
	    trigger variable %stream% will be set to the name of the
	    stream.

	#1829838 (Job #99300) **
	    Journal header notes included with database table unloads
	    created by 'p4 journaldbchecksums -u' now contain the correct
	    case/unicode flags and the server root of the server they
	    were unloaded from.

	#1830740 (Job #99382) **
	    Support for Helix Core Extensions was disabled for Windows servers
	    due to unrelated performance concerns on that platform requiring
	    a conflicting toolchain change. Extensions remain fully supported on
	    Linux and Mac.

	#1828396 (Job #99271) **
	    When 'p4 stream -o' was called at a change that did not match
	    a stream spec modification, the most recent stream spec would
	    be returned. The new behavior is to return the most recent
	    version prior to the specified change.

	#1827416 (Job #98909) **
	    'p4 change -df' of submitted changes containing stream edits
	    now displays the correct messages about the stream and files
	    in the change that prevent the delete.

	#1825235 (Job #99035) **
	    Multiple stream specs could be shelved to the same shelf number.
	    This has been fixed.

	#1825187 (Job #99106) **
	    Users could see the description of a restricted submitted change
	    using 'p4 changes' or 'p4 change -o' when having list access to a
	    directory that is common to all files in that changelist without
	    having list access to the specific files in the change. This has
	    been fixed.

	#1824517 (Job #98988) **
	    'p4 streamlog' now correctly reports all stream spec changes
	    regardless of which fields were changed.

	#1824117 (Job #99184) **
	    'p4 shelve -As -d' now deletes the stream from the shelf.
	    Therefore, the message it returns is now correct.

	#1823281 (Job #99158) **
	    'p4 diff2' run by a user with only list access could cause a crash.
	    This has been fixed.

	#1822891 (Job #98978) **
	    'p4 switch' now reports the correct target stream name on error.

	#1822172 (Job #99042) **
	    'p4 stream -o //streamname@changelist' now includes the specified
	    version rather than the current version of all fields. Previously,
	    only the Paths, Parent and Type field would be the specified
	    version, and all other fields would be the current version. This
	    fix applies only to data created by the 19.1 server and later.

	#1822042 (Job #98542) **
	    A temporary lock now prevents concurrent updates to an RCS file.

	#1821878 (Job #99077) **
	    A race condition can no longer cause a lock (.lck) file to remain
	    after use.

	#1821475 (Job #99141) **
	    'p4 submit -i' run against an edge server using background transfer
	    would failed to submit the change. This has been fixed.

	#1821208 (Job #98861) **
	    'p4 renameuser' could leave orphaned locks when the user being
	    renamed had opened exclusive checkout files (+l). This has
	    been fixed.

	#1820930 (Job #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.

	#1820503 (Job #99098) **
	    Updated shelving messages relating to stream specs. Now if an
	    opened stream spec was implicitly or explicitly specified to be
	    shelved but is not in the changelist, an appropriate error message
	    appears.

	#1819042 (Job #98967) **
	    A 'p4 shelve' command with no arguments would fail to shelve an
	    opened stream spec.  This has been fixed.

	#1818502 (Job #99050) **
	    The db.storage upgrade process (phase 1) was incorrectly
	    executing on forwarding replicas. This has been fixed.

	#1818437 (Job #99010) **
	    A 'p4 stream -o //streampath@=shelf' command will now display a
	    shelved stream spec, where "streampath" is the name of the stream
	    and "shelf" is the changelist number of the changelist which is
	    shelved.

	#1818393 (Job #99041, #99074) **
	    'p4 shelve' would output messages about shelving files when only
	    a stream spec was shelved. This has been fixed.

	#1818105 (Job #99075) **
	    'p4 reopen' now has a '-Si' flag for moving open stream specs and
	    files between changelists in a single command.

	#1816910 (Job #98925, #98910) **
	    Submitted changes containing stream-only edits now have the
	    correct "root" field set in the db.change table.

	#1816226 (Job #99003, #99022)**
	    'p4 describe -S' would not always show accurate information about
	    shelved stream specs. This has been fixed.

	#1814927 (Job #98586) **
	    The storage error file generated during an upgrade to 19.1
	    was always being created even if no errors were detected.
	    This has been fixed.

	#1814802 (Job #97697) **
	    A 'p4 shelve -d' command could fail to remove an unneeded
	    librarian file. This has been fixed.

	#1814745 (Job #98294) **
	    'p4 storage -u' run against an edge server  will now only update
	    the local shelf storage records.

	#1814074 (Job #96617) *
	    Threaded parallel sync could occasionally fail to chmod or
	    rename temp files. This has been fixed.

	#1813039 (Job #98855) **
	    Relative file paths passed into 'p4 graph lfs-lock' commands are now
	    handled correctly.

	#1813017 (Job #98710) **
	    Clarify help text for 'p4 grant-permission'.

	#1810430 (Job #98540) *
	    When P4CLIENTPATH is set, clients can no longer create symlinks that
	    could be followed to access paths outide of the sandbox.

	#1809639 (Job #97003) **
	    'p4 diff -As' and 'p4 diff2 -As' allow stream specs to be compared.
	    Shelved streams can be referenced with the @= notation.

Bugs fixed in 2019.1 Patch 1 (2019.1/1813586)

	#1808413 (Job #98605) **
	    Submitting import+ files from a task stream could cause corruption
	    to its task stream. This has been fixed.

	#1807936 (Job #96532) **
	    'p4 describe' would erroneously show a filetype for the
	    prior version of an added file. This has been fixed.

	#1807617 (Job #98544, #97979) **
	    All stream updates now create associated changelists rather than
	    just consuming changelist numbers.

	#1806502 (Job #98766) **
	    The p4 configuration setting 'submit.allowbgtransfer=1' would
	    cause replica file content pull threads using '--batch' to crash.
	    This has been fixed.

	#1805822 (Job #98424) **
	    Certain commands were requiring the user to log in to all
	    upstream edges, not just the edge the user is connecting to.
	    This has been fixed.

	#1805680 (Job #97885) **
	    'p4 graph lfs-lock' is no longer allowed for non-LFS graph files.

	#1805524 (Job #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.

	#1803226 (Job #98543) **
	    A StreamNeedsResolve message would occur upon submit if another user
	    made changes identical to the current open stream spec. This has
	    been fixed.

	#1802979 (Job #94895) **
	    Under some conditions, when successive task streams were created
	    and populated, a superuser could delete a change with files in the
	    changelist.  This has been fixed.

	#1802016 (Job #97847) **
	    Normalize the target ref when testing for LFS locks during
	    'p4 undo --repo'.

	#1799999 (Job #98500) **
	    'p4 filelog' results containing huge descriptions or many
	    integration paths results in Rpc buffers too big. Fixed.

	#1799583 (Job #94400) **
	    'p4 help-graph client' now shows proper syntax lines for graph
	    depots. It includes reference for finding flag descriptions and
	    explanation about how hybrid scenario works.

	#1798894 (Job #97895) **
	    In some cases 'p4 -ztag stream -o //streampath@have' would
	    result in a message where the stream name was printed, but the
	    client name should have been reported instead.

	#1798095 (Job #98367) **
	    If 'p4 unshelve' acts on a shelf with files which are inaccessible
	    to the current user and client, the first file in the filelist
	    would be displayed for each file in list.  This has been fixed so
	    that each filename is displayed instead of the first file.

	#1798061 (Job #97962) **
	    'p4 resolve -So' now displays "No stream fields to resolve." if
	    there are no open stream fields which need to be resolved.

	#1791371 (Job #98467) **
	    Fixed 'p4 submit -Sx' and 'p4 submit -So' for edge servers.

	#1782033 (Job #97820, #98182) **
	    'p4 resolve -So' did not detect a conflict for an open modified
	    stream spec when another client/user made a public edit of the
	    same stream spec.  Fixed.

Bugs fixed in 2019.1 (2019.1/1796703)

	#1787364 (Job #98256) **
	    The 'p4d -xu' command no longer actually executes the upgrades
	    on a standby or forwarding standby server. The upgrades are
	    applied as they are journalcopy'd from the upstream server.
	    The 'p4d -xu' command is still required to help prevent
	    unintentionally upgrading the server by mistakenly
	    starting the server using a binary from a new major release.

	#1782963 (Job #98117) **
	    'p4 pull' could fail to replicate spec depot archives due to a
	    race condition introduced by a performance enhancement in release
	    2018.2. This has been fixed.

	#1782803 (Job #95173) **
	    'p4 describe' would report errors when run against shelved
	    changelists created by 'p4 switch'.  This has been fixed.

	#1781879 (Job #92961) **
	    Successful OTP based 2FA events logged to the auth.csv structured
	    log were incorrectly recorded as failures.  This has been fixed.

	#1780867 (Job #97063) *
	    Parallel sync now respects the '-C charset' client flag.

	#1780019 (Job #97125) **
	    'p4 unshelve' and 'p4 revert' now update syncTime, correcting the
	    behavior of 'p4 reconcile -m'.

	#1777076 (Job #98218) **
	    Revert of moved file when the moved-from file was deleted at
	    the head revision in a edge/commit environment could have had
	    unpredictable results due to accessing uninitialized data. This
	    has been fixed.

	#1775117 (Job #98350) **
	    'p4d -xu' may no longer be run with '-Joff'. Some upgrade steps make
	    metadata changes that must be reduplicated, which cannot happen when
	    the upgrades are run with journaling disabled.

	#1773233 (Job #97211) **
	    Submitting unshelved ktext files with undo actions could cause
	    incorrect tamper errors. This has been fixed.

	#1772348 (Job #97898) *
	    The 'p4 clone' command could fail when using remote specifications
	    with DepotMap paths containing spaces. This has been fixed.

	#1768961 (Job #97460) **
	    The 'mandatory' option is now disallowed when creating a
	    new standby or forwarding standby server. After the standby or
	    forwarding standby server's journalcopy thread has caught up with
	    the journal on the server from which it is journalcopy'ing, the
	    'mandatory' option can then be set for an HA standby server.

	#1768266 (Job #98019) **
	    Stream specs that are not at latest or are being privately edited
	    no longer show comments on the fields that were or are being edited.

	#1766398 (Job #97896) **
	    Graph depot commands now open a maximum of 128 pack files at the
	    same time.

	#1765852 (Job #97211) **
	    'p4 fstat' could show an invalid or missing haveRev value when a
	    file that was deleted is being re-added. This has been fixed.

	#1763055 (Job #95105) **
	    Larger journal fragments will now by default be sent to
	    journalcopy. The 'rpl.jnl.batch.size' configurable as defined
	    for the server executing the journalcopy (which is generally
	    a standby server) can be used to tune the journal fragments
	    sent to journalcopy.

	#1758633 (Job #97773) **
	    'p4 receive-pack' would downgrade the force push to a new repos to
	    a normal push.  This has been fixed.

	#1757383 (Job #96635) **
	    P4DEBUG configuration set with 'p4d -v' could be incorrectly parsed
	    if a non-numeric value was followed by additional options.
	    This has been fixed.

	#1745310 (Job #96271) **
	    Under certain conditions a submit from an edge server in an autotune
	    enabled environment from an old Windows client application could
	    hang.  This has been fixed.

	#1743439 (Job #96758) **
	    'p4 failover' now checks to ensure that the standby is suitably
	    licensed for its role following failover.

	#1742700 (Job #93206) **
	    'p4 reconcile' would fail with 'Opening too many files' error
	    when enforcing the 'MaxOpenFiles' group limit, even when the
	    command opened less than 'MaxOpenFiles'. This has been fixed.

	#1739928 (Job #95194) **
	    'p4 delete' against graph depot files that are in the have exception
	    list could remain in the exception list even after the change was
	    submitted. This has been fixed.

	#1734228 (Job #96791) **
	    Prior to failing over, 'p4 failover' now checks to ensure that
	    there are no archive file content transfers that were not
	    completed on the standby.

	#1732870 (Job #94976) **
	    The 'p4 revert' command now batches its journal work into fewer
	    larger transactions, resulting in more efficient replication of
	    this command.

	#1728271 (Job #96335) **
	    Admin users could not unlock files that had been locked by a failed
	    'p4 push'. This has been fixed.

	#1726773 (Job #93725) **
	    Virtual streams would incorrectly import from the stream's parent's
	    parent when the import path was specified with a single path.
	    This has been fixed so that the path imported is from the virtual
	    stream's parent.

	#1726440 (Job #96818) **
	    A client's have records could be incorrectly overwritten when
	    syncing to #have and the client's view included ditto mappings.
	    This has been fixed.

	#1726251 (Job #96545) **
	    'p4 user -D' no longer implies the '-F' flag. To globally delete a
	    user, their client workspaces and remove them from groups and the
	    protections table, both flags must be provided 'p4 user -D -F'.

	#1723981 (Job #96826) **
	    'p4 failover' no longer hangs waiting for the 'pull -L' thread
	    to complete its work if the LEOF had not been advanced to the last
	    consistency point journalcopy'd by the standby and either the master
	    does not participate in the failover or some mandatory standby is
	    not actively journalcopy'ing at the time of the failover.

	#1722715 (Job #92743) *
	    Client-side UTF8 validation failed to detect files that terminated
	    part way through a multi-byte character.
	    This has been fixed.

	#1722358 (Job #96273) **
	    Certain DVCS scenarios could lead to an 'Invalid zipfile format'
	    error related to rev records counts being off. Improved error
	    checking now produces a more comprehensive error message on
	    the sending side of the DVCS operation.

	#1720213 (Job #96546) **
	    The 'p4 clean' command would incorrectly count workspace
	    file updates against the 'MaxOpenFiles' group limit causing
	    the command to fail. This has been fixed.

	#1718223 (Job #94828) **
	    If characters in a commit short-SHA are all numeric, sync fails
	    assuming that the all numeric short-SHA is a change number.
	    This has been fixed.

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

Major new functionality in 2018.2

	#1688531 (Job #95155) **
	    The new 'p4 failover' command can be used for failing over a
	    master (or edge) server to a standby (or forwarding-standby)
	    server that is journalcopy'ing from the master server. Run
	    on a standby server, the command orchestrates many facets
	    of the failover process, including:

	        Ensure that monitoring ('p4 monitor') is enabled
	        on the standby server

	        Coordinate with the standby server's 'pull -L' thread to
	        ensure that the standby server has applied the metadata
	        journalcopy'd from the master server

	        Verify recently updated classic depot file content

	        Move the latest journalcopy into place as the journal
	        that will be used following failover

	        Enable journaling on the standby server

	        Update the configuration of the master server

	        Update the serverID of the standby server to the
	        master server's serverID

	        Restart the standby server as the new master server

	    If the master server participates in the failover, the
	    'p4 failover' command also orchestrates:

	        Quiesce the master server: refuse new commands on the master
	        server, wait a fixed amount of time for existing commands
	        to complete, and then stall any remaining commands

	        Coordinate with the standby server's 'journalcopy' and
	        'pull -u' threads to ensure that the standby server has all
	        of the latest metadata and file content from the master server

	        Stop the master server

	    If the 'p4 failover' command is interrupted or encounters an
	    error, the command will attempt to undo what has been done up
	    to that point. But if the command has stopped the master server,
	    that server will not be restarted.

	    The standby server must be licensed as needed to function
	    as the master server following failover.

	    Prior to failing over an edge server, its service user should
	    be logged into the commit (or master) server using the file
	    specified by the P4TICKETS configurable for each standby of the
	    edge server. And if needed, trust with the commit server for the
	    service user should be established using the file specified by
	    the P4TRUST configurable for each standby of the edge server.

	    The 'p4 failover' command might update some of the configurables
	    for the master server to ensure that it will function as expected
	    when the command starts it in the environment within which the
	    standby server was running. The configurables that might be
	    updated are:

	        P4AUDIT       client.readonly.dir    server.depot.root
	        P4JOURNAL     client.sendq.dir       server.extensions.dir
	        P4LOG         journalPrefix          server.locks.dir
	        P4ROOT        pull.trigger.dir       statefile
	        P4TICKETS     rpl.journal.ack
	        P4TRUST       rpl.journal.ack.min

	    When failing over an edge server, the update of its configurables
	    cannot be propagated back to the commit (or master) server since
	    the edge server might not be participating in the failover.
	    After the failover, the updated configurables for the edge
	    server will need to be changed on the commit server.

	    In support of the new 'p4 failover' command, three fields have
	    been added to the db.server table: Options, ReplicatingFrom, and
	    FailoverSeen. The Options and ReplicatingFrom fields are part of
	    a server's spec and can be changed using the 'p4 server' command.
	    The ReplicatingFrom field is required for standby servers.

	    Of particular note is the 'mandatory' option of the Options
	    field in the server spec. When set for a standby server, that
	    server will always participate in the calculation that determines
	    when metadata is replicated to replicas (other than standby
	    servers.) That is, metadata must be journalcopy'd to all
	    mandatory standby servers before it will be replicated
	    to other replicas. If a mandatory standby server is desired,
	    it is recommended that it is initially deployed using the
	    'nomandatory' option. After the standby server's journalcopy
	    thread has caught up with the master server, the 'mandatory'
	    option can then be set in the server spec for the standby
	    server on the master server.

	    If the master server does not participate in the failover,
	    the standby server on which the 'p4 failover' command is run
	    must be a mandatory standby server. This ensures that replicas
	    remain consistent with the master server following failover.

	    There are several new files, typically in the P4ROOT directory,
	    that contain journal positions related to this new functionality.
	    They are the 'stateLEOF', 'statefailover', and 'statepullL' files.

	    The 'stateLEOF' file contains the journal position of the
	    last transaction replicated to replicas (other than standby
	    servers) of the master server. This file is present for all
	    standby servers of the master server if at least one of those
	    is a mandatory standby server. If the 'stateLEOF' file is present,
	    the 'pull -L' thread will apply to the standby server's metadata
	    only what has been journalcopy'd through that journal position.
	    This ensures the consistency of the metadata on the standby
	    servers with the new master server when failover occurs
	    without participation of the old master server.

	    The 'statefailover' file will be deleted automatically when it
	    is no longer needed; it persists after the failover to ensure the
	    consistency of the journalcopy for the remaining standby servers.
	    So that the 'statefailover' file can be deleted automatically,
	    the ReplicatingFrom field must have a value in the server spec
	    for all standby (and forwarding-standby) servers defined in
	    the master server.

	    Additional information is available from 'p4 help failover'
	    and in the "Failover" section of the "Backup and recovery"
	    chapter in the "Helix Core Server Administrator Guide:
	    Fundamentals" manual.

Technology Preview features in 2018.2

	#1690230 (Job #48387) **
	    The Helix Core Extension mechanism is a feature that allows
	    the server to run administrator-supplied scripts written in
	    the Lua programming language, packaged with metadata and other
	    resources. The server runs these programs natively, providing
	    a portable, versioned runtime with automatic replication and a
	    programmatic API. Depot and repo owners may configure Extensions
	    to operate on the areas they own without involving the super user.

	    The scripting runtime is also available on the command-line client,
	    via the 'p4 --script' flag.

	    See 'p4 help extension' for further info.

	    Note: Extensions are not available with the Helix Core Server
	    on Windows platforms.

Minor new functionality in 2018.2

	#1707299 (Job #91576) **
	    When unshelving an exclusively-locked file by another client,
	    "p4 unshelve" reports the error message as a 'warning' rather than
	    an 'info'. Output messages for "p4 edit/delete/reconcile/integ" are
	    also changed similarly. This change will only affect the message
	    type. The command return value will not change. To get the old
	    behavior use p4 option -Zapi=[84 or earlier].

	#1701226 (Job #94362) **
	    The graph rebase command no longer duplicates commits; commits that
	    would have no diff when replayed are now skipped.

	#1700123 (Job #94681) **
	    All graph reference triggers will now populate the %refType% and
	    %refFlags% placeholders.

	#1697842 (Job #96191) **
	    A new 'auth-invalidate' trigger has been added. This is fired when
	    a user's ticket is explicitly invalidated by 'p4 logout'.

	#1693278 (Job #95956) **
	    The parallel sync 'db.sendq' table may now be partitioned, reducing
	    lock contention, by setting the 'client.sendq.dir' configurable to
	    a directory under which the per-client tables will be created. The
	    specified directory may be set to the same as the have partition
	    directory 'client.readonly.dir'.

	#1689195 (Job #96066) **
	    'p4 monitor show' now always shows 'pull -L' for the thread
	    that applies metadata from a local journal. Showing the '-L'
	    flag helps distinguish this thread from other pull threads.

	#1685442 (Job #95168) **
	    'p4 undo' is now supported for graph depots.
	    See 'p4 help-graph undo'.

	#1678111 (Job #95713) **
	    Additional configurables have been added for modifying the
	    authentication behavior when auth-check-sso triggers are installed.
	    Setting 'auth.sso.allow.passwd=1' will allow client's without the
	    client-side P4LOGINSSO trigger configured to fall back to password
	    authentication against the database.
	    Setting 'auth.sso.nonldap=1' will allow non-LDAP users on an LDAP
	    enabled servers to authenticate against the auth-check-sso trigger.
	    When 'auth.sso.nonldap=1' is set, non-LDAP users will be required
	    to have the client-side P4LOGINSSO trigger configured, unless the
	    'auth.sso.allow.passwd=1' is also set.

	#1677404 (Job #95408) **
	    The tagged output for 'p4 change -o' now includes a shelveUpdate
	    field, showing the last time shelved files on the change were
	    updated.

	#1676951 (Job #43827, #95824) **
	    New -D flag in 'p4 user' that deletes the user and all
	    the user's clients and reverts all the user's files.

	#1676343 (Job #94823) **
	    A new 'action.csv' structured log has been added. This logs user
	    initiated events that occur on the server. This log is intended
	    to be consumed by downstream tools that would otherwise poll for
	    changes.

	#1671478 **
	    Various compiler upgrades have adopted for better performance and
	    security. These changes have yielded a 10% improvement to the
	    file commit rate on Linux.

	#1666576 (Job #92539) **
	    The default value of 'db.monitor.interval' has been changed to 30
	    seconds. This will allow admins to use 'p4 monitor terminate' to
	    remove stale processes. Note that 'monitor' must also be set to
	    at least 1 in order to use 'p4 monitor terminate'.

	#1663100 (Job #95230, #95159) **
	    Additional configuration data may now be sent to client-side
	    P4LOGINSSO triggers by setting the 'auth.sso.args' configurable.
	    The value of this configurable will be passed as the %ssoArgs% to
	    the client-side P4LOGINSSO trigger. Additionally, the server-side
	    auth-check-sso trigger may now use the %email% and %fullname%
	    placeholders.

	#1644456 (Job #94149) **
	    The graph related output from 'p4 have' has been improved to be
	    more readable. The branch and sync'ed commit sha are now on the
	    same line.

	#1644554 (Job #94184) **
	    Added support for P4IGNORE in graph client

Bugs fixed in 2018.2 Patch 10

    #2051777 (Job #104945) * ** *** ****
        OpenSSL has been upgraded to 1.1.1i

	#2038017 (Job #102314) *
	    Windows clients now correctly report when they are unable to replace
	    files when using the long filename support.

	#2037903 (Job #102314) **
	    Clients now correctly report when they are unable to delete files.

	#2009026 (Job #102750) **
	    A crash bug would occur when submitting an integration from
	    a local depot to a readonly depot.  The integration was illegal,
	    but would succeed with a sync/delete message, and a following
	    submit would crash.  This has been fixed.

	#1998631 (Job #103411) **
	    'p4 reshelve' could crash when file arguments were provided. This
	    has been fixed.

	#1975996 (Job #102797) *
	    Windows clients no longer leave trailing NULL bytes at
	    the end of '+k' filetype files transfered via sync/print
	    when the RCS 'Author' keyword was used and the username
	    submitting the file was changed post-submit.

Bugs fixed in 2018.2 Patch 9

	#1973761 (Job #102609)
	    Network errors on Windows and Linux are now more accurately
	    reported when additional tracing such as net=3 or ssl=3 are used.

	#1971411 (Jobs #042042, #102435) **
	    Windows file I/O now uses the native Windows API rather then
	    the Posix file I/O routines.  This removes the limit on the
	    number of concurrent open files for the librarian and error
	    logging.

	#1970610 (Job #101504) **
	    A rare error that could lead to database deadlock around journal
	    rotation time has been fixed.

	#1969996 (Job #72507) **
	    If a file in a task stream is submitted with the reopen flag, and a
	    resolve had been done prior on the file prior to the submit, then
	    the submit would fail with the messages "Files newly opened or
	    reverted during submission".  This has been fixed.

Bugs fixed in 2018.2 Patch 8

	#1966821 (Job #102541) **
	    'p4 unshelve' no longer crashes if a network error is encountered
	    during completion of the command.

	#1955701 (Job #99520) **
	    'p4 tag' run with multiple arguments updating an autoreload label
	    no longer causes the label to be loaded into memory and rewriten
	    to the unload depot for each argument.

	#1952395 (Job #102264) **
	    This enhancement supports automatic start of the Perforce p4diag
	    tool when the Perforce Windows Service starts.  Two things are
	    required.  Place p4diag.exe in the same directory as p4s.exe and
	    p4 set -s Perforce P4DIAGLOG to the p4diag log file name.  See
	    the p4diag autostart KB article.

	#1937480 (Job #101639) **
	    'p4 fstat -Ol' for graph depot could crash the server when run on
	     mid-branch and a file there is deleted in the branch tip.

	#1925276 (Job #100917) **
	    The 'p4 graph cat-file' command was missing the -o option. This
	    change adds in the missing option.

	#1925275 (Job #101062) **
	    When 'p4 have' for graph has no matching repos, it would complete
	    as a failure. This fix changes the failure message "No matching
	    repos" to the warning message "file(s) not on client".

	#1925274 (Job #100902) **
	    'p4 fstat -OI' for graph depots would miss changeCommit if the
	    graph depot index is missing. Now, the changeCommit appears whether
	    or not the index exists.

Bugs fixed in 2018.2 Patch 7

	#1915408 (Job #101215) **
	    A memory leak in SSL-enabled servers has been closed.

Bugs fixed in 2018.2 Patch 6

	#1910107 (Job #99171) **
	    Partitioned db.sendq tables are now removed if empty at the end of
	    parallel syncs and on client delete.

	#1909547 * ** *** ****
	    OpenSSL has been upgraded to 1.1.1a

	#1908978 (Job #93870) **
	    'p4d -cset', 'p4d -cunset' and 'p4d -cshow' no longer take write
	    locks on all tables; instead only the tables required are locked.
	    'p4d -cshow' now only takes read locks.

	#1908978 (Job #89608) **
	    'p4d -cset' and 'p4d -cunset' now resolves the journal file to write
	    too in the same way that the server would if started with the same
	    flags and environment. When using 'p4d -cset' to set P4JOURNAL, if
	    the new value would change the journal file being used, the new
	    value is used instead.

	#1906390 (Job #100948) **
	    'p4 submit' now fails with a "tampered with after resolve" error
	    when trying to submit an unshelved file that is resolved with 'ay'
	    and then modified inadvertently.

	#1902810 (Job #100608, #100945) **
	    Avoid error on conflicting clients for commands that are
	    read-only. For 'p4 opened -c <chg>' or -u, the current client
	    of the user is irrelevant and no error should be displayed
	    if that client is tied to another server.
	    The same should be the case for 'p4 client' when the client name
	    is provided as an argument or for 'p4 client -i' which
	    should validate the client name listed in the form rather than
	    the client tied to the user initiating the command. Also,
	    'p4 revert -C clientname' should ignore the admin's client since
	    it is specified as a parameter. This has been fixed.

	#1902174 (Job #100158) **
	    UTF8 type files sync'ed from  cache mode replica with a pre-2016.2
	    client could report a depot file error. This has been fixed.

Bugs fixed in 2018.2 Patch 5

	#1883953 (Job #100588) **
	    The server could return a bad result when attempting to join
	    non-matching table keys. This has been fixed.

	#1882547 (Job #83623) * **
	    The default value of the 'filesys.lockdelay' has been decreased
	    from 300 to 90 to ensure abandoned .lck files are correctly deleted.

Bugs fixed in 2018.2 Patch 4

	#1840011 (Job #75382) **
	    The maximum size of shared memory for monitor table use was
	    too small (2048 8K pages). Now it's 32768 pages for all
	    platforms except Windows 32bit where memory address space
	    is severely limited.

	#1821148 (Job #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.

	#1811250 (Job #96617) *
	    Threaded parallel sync could occasionally fail to chmod or
	    rename temp files.

	#1811202 (Job #98605) **
	    Submitting import+ files from a task stream could have caused
	    corruption to its task stream. This has been fixed.

	#1808412 (Job #98651) **
	    The server can enter an infinite loop trying to join the rev
	    and have table during a sync request using the #have revision
	    specifier and a changed client view. This has been fixed.

	#1805688 (Job #96532) **
	    'p4 describe' would erroneously show the file type of added
	    files as 'unset'. This has been fixed.

	#1805433 (Job #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.

	#1796270 (Job #98117) **
	    'p4 pull' could fail to replicate spec depot archives due to a
	    race condition introduced by a performance enhancement in release
	    2018.2. This has been fixed.

	17935460 (Job #98500) **
	    'p4 filelog' results containing huge descriptions or many
	    integration paths results in Rpc buffers too big. Fixed.

	#1790460 (Job #97898) *
	    The 'p4 clone' command could fail when using remote specifications
	    with DepotMap paths containing spaces. This has been fixed.

	#1782952 (Job #92961) **
	    Successful OTP based 2FA events logged to the auth.csv structured
	    log were incorrectly recorded as failures.  This has been fixed.

	#1782877 (Job #95173) **
	    'p4 describe' would report errors when run against shelved
	    changelists created by 'p4 switch'.  This has been fixed.

Bugs fixed in 2018.2 Patch 3

	#1830737 (Job #99382) **
	    Support for Helix Core Extensions was disabled for Windows servers
	    due to unrelated performance concerns on that platform requiring
	    a conflicting toolchain change.

	#1777104 (Job #98218) **
	    Revert of moved file when the move-from file was deleted at
	    the head revision in a federated environment could have had
	    unpredictable results due to accessing uninitialized data. This
	    has been fixed.

	#1773516 (Job #94976) **
	    The 'p4 revert' command now batches its journal work into fewer
	    larger transactions, resulting in more efficient replication of
	    this command.

	#1772859 (Job #98011) **
	    Tamper error when submitting unshelved undo action on ktext file
	    has been fixed.

	#1766398 (Job #97896) **
	    Graph Depot: impose a maximum of 128 opened packed files.

	#1762665 (Jobs #97818, #97870, #97871) **
	    DVCS triggers (push-submit, push-content and push-commit) now
	    support exclusionary mappings in the same way that submit triggers
	    do: the paths of multiple consecutive trigger entries with the same
	    name and type are aggregated into a single map.

	#1760683 (Job #97566) **
	    If the listener address of the server from which failover
	    is occurring is defined with an explicit host that is foreign
	    to the standby server's machine, the server to which failover
	    is occurring no longer fails to restart. The foreign host is
	    now removed from the inherited server's listener address
	    definition.

	#1760113 (Job #97155) **
	    Deletion of a shelf during a 'p4 submit -e' could leave opened
	    files that could not be reverted. This has been fixed.

	#1754580 (Job #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 2018.2 Patch 2

	#1750136 (Job #95082) **** *** ** *
	    The final select() for Rpc::Close() no longer blocks for ssl
	    connections. The timeout is subject to 'net.maxclosewait'.

	#1750068 (Job #96682) **
	    'p4 submit' for only import+ files in the context of a task stream
	    failed with message "Not permitted to update a task stream and
	    Import+ file at the same time".  This has been fixed so that only
	    submitting import+ files is allowed from a task stream.  Note that
	    the submission of a mix of import+ files and task stream files is
	    still not allowed.

	#1748252 (Job #87889) **
	    'p4 reopen' run on an edge server did not propagate updates to locks
	    back to the commit server when changing the owner of opened files.
	    This fix requires both the commit and edge server to be upgraded.

	#1746799 (Job #95435) **
	    'p4 undo' was recording the incorrect resolve action when files
	    being undone were modified with 'p4 edit' before submit.
	    This has been fixed.

	#1743034 (Job #96758) **
	    'p4 failover' now checks to ensure that the standby is
	    suitably licensed for its role following failover.

Bugs fixed in 2018.2 Patch 1

	#1738306 (Job #3933) **
	    'p4 print -o' now handles paths with wildcards to write multiple
	    files to the client's filesystem. The wildcards in the -o flags
	    argument and the filespec must match.

	#1734880 (Job #97134) **
	    Group protections entries containing wildcards in the group name
	    could cause a server crash. This has been fixed.

	#1733586 (Job #96791) **
	    Prior to failing over, 'p4 failover' now checks to ensure that
	    there are no archive file content transfers that were not
	    completed on the standby.

	#1730693 (Job #97079) *
	    'p4 login' interrupted by ctrl-c no longer hangs.

	#1730544 (Job #96839) **
	    Changing the 'ExtRev' field of a configured extension instance
	    leaves the previous extension instance to remain as a duplicate.
	    This has been fixed.

	#1729566 (Job #97065) **
	    'p4 -ztag info' now shows the 'security' tag when any auth-triggers
	    are present. Additionally, if the auth-check-sso is configured, an
	    'ssoAuth' tag will also be shown, indicating whether P4LOGINSSO is
	    required or optional.

	#1729420 (Job #96450) **
	    'p4 populate' was incorrectly taking the client's ChangeView into
	    consideration. This command ignores the client view, it now ignores
	    the ChangeView too.

	#1728264 (Job #96335) **
	    Locks taken on files after a failed DVCS push could not be unlocked
	    by admin or super users using 'p4 unlock -f' flag.
	    This has been fixed.

	#1726738 (Job #96662) **
	    Parallel submit could fail to transfer archive content if
	    the file transfer threads exit without error. This has been
	    fixed by ensuring that archives exist on the server before the
	    submit continues and reports success.

	#1726440 (Job #96818) **
	    Syncing to #have when the client view contains ditto mappings could
	    produce the wrong results. This has been fixed.

	#1723656 (Job #96826) **
	    'p4 failover' no longer hangs waiting for the 'pull -L'
	    thread to complete its work if the LEOF had not been advanced
	    to the last consistency point journalcopy'd by the standby and
	    either the master does not participate in the failover or some
	    mandatory standby is not actively journalcopy'ing at the time
	    of the failover.

	#1723368 (Job #76162) **
	    'p4 -ztag info' command now shows an 'unloadSupport' tag indicating
	    if the server has a depot of type unload. The value will be either
	    'enabled' or 'disabled'.

	#1722714 (Job #92743) *
	    UTF8 validation would not catch invalid files where the file
	    terminated with a partial multi-byte unicode character.
	    This has been fixed.

Bugs fixed in 2018.2

	#1716935 (Job #96569) **
	    The 'p4 switch stream@change' command now takes into account
	    stream imports when syncing files.

	#1716652 (Job #96588) **
	    'p4 fetch -t' run against an edge server could crash the server.
	    This has been fixed.

	#1716320 (Job #96636) **
	    'p4 describe' was not correctly handling graph depot binary files.
	    This has been fixed.

	#1716305 (Job #96634) **
	    'p4 revert' was not correctly handling graph depot LFS binary files.
	    This has been fixed.

	#1715880,#1718570 (Job #96580) **
	    Resolve and merge of binary graph files are now handled correctly.

	#1715337 (Job #96120) **
	    'p4 undo' uses the current client mapping when placing undone files
	    in the workspace. File locations maintained in haveMaps are ignored.

	#1714779 (Job #91876) **
	    Obliterating a file in the parent of a task stream incorrectly
	    removed the file from the depot. This has been fixed.

	#1712648 (Job #94695) **
	    'p4 integ' of a stream with a +S moved file could propagate wrong
	    content. This has been fixed.

	#1712118 (Job #86506) **
	    Unshelved files, opened for integrate, that were not previously
	    sync'ed to the client would be deleted on revert, but the have
	    record would remain causing sync errors later. This has been fixed.

	#1710647 (Job #95908) **
	    Tamper checking has been restored for merged ktext files.

	#1709635 (Job #96468) **
	    A graph merge -n operation with a conflicting file incorrectly
	    stated that the merge will succeed. This has been fixed.

	#1709629 (Job #96469) **
	    A graph merge -n operation did not clean up correctly, failing
	    a subsequent graph merge request. This has been fixed.

	#1707891 (Job #94445) **
	    Diff of non-modified graph depot file reported the  wrong
	    error message This has been fixed and the message is now
	    "file(s) not opened on this client".

	#1707354 (Job #96381) **
	    The 'p4 journals' command when run during a checkpoint operation
	    could hang the server. This has been fixed.

	#1702795 (Job #95804) **
	    The use of import+ in a stream spec to include a graph depot path
	    is now blocked instead of being silently ignored.

	#1702793 (Job #94078) **
	    Attempting to sync a repo with a badly configured default branch
	    now produces warnings for those repos rather than blocking the sync.

	#1702779 (Job #96093) **
	    Graph merges that would result in a fast-forward did not cause the
	    reference triggers to fire. This has been fixed.

	#1702778 (Job #95055) **
	    Edge servers no longer replicate graph metadata that are
	    specific to clients on the commit server.

	#1702035 (Job #96312) **
	    Processing of stream specs with a large number of exclude and/or
	    isolate paths has been made faster.

	#1697165 **
	    The second factor authentication functionality has been renamed to
	    multifactor authentication. This only affects documentation and
	    messages sent to the client; configuration and tagged output have
	    not been changed.

	#1693712 (Job #95114) **
	    It was possible for 'p4 filelog' to cause a deadlock with other
	    running commands. This has been fixed.

	#1693683 (Job #94452) **
	    The update-ref graph command did not provide the correct
	    value to the %refFlags% field to the graph-push-reference
	    and graph-push-reference-complete triggers. This has been
	    fixed.

	#1693642 (Job #96127) **
	    The graph commands merge and rebase now create new
	    changelists associated to the commits they create.

	#1692620 (Job #96039) **
	    Files in graph that contain reserved characters could not be
	    specified via standard Perforce commands. These characters may now
	    be escaped when they are specified.

	#1691921 (Job #96155) **
	    Improve the performance of group protections.

	#1690833 (Job #95656) **
	    Ensure all clients see stream view changes after 'p4 stream edit'.

	#1689825 (Job #96001) **
	    The repo and reference permissions are now correctly checked
	    during a graph merge request. It uses the same model as
	    submit and receive-pack.

	#1689663 (Job #96020) **
	    A graph merge command with more than one repo and a missing source
	    component can crash the server. This has been fixed.

	#1688338 (Job #90929) **
	    Improved the error message generated when opening a graph file
	    in a mixed mode client view that is not of the 'graph' type.
	    It now adds the string "file is mapped read only".

	#1688292 (Job #90685) **
	    Changed how the graph permissions are checked during a
	    'p4 graph receive-pack' command. This copies the methods
	    used by submit and avoids checking each individual file
	    path where possible.

	#1688251 (Job #94895) **
	    It was possible for a superuser to delete a non-empty changelist
	    for a task stream. This has been fixed.

	#1686860 (Job #95988) **
	    The server no longer crashes when a parallel 'sync -L'
	    is interrupted.

	#1682979 (Job #86492) **
	    The obsolete 'Backup' field has been removed from the client
	    spec comments section.

	#1682468 (Job #73624) **
	    Shelving replication performance with forwarding (not edge)
	    replicas has been improved. Previously 'shelve -r'
	    would cause all of the archives in the shelved change to be
	    transferred to its forwarding replica. This has been fixed
	    to only transfer files that have changed.

	#1681302 (Job #92509) **
	    The -v flag to 'p4 integrate' was moved to undoc in 2016.1. This
	    change moves -v out of undoc and back into 'p4 help integrate'
	    and the 'p4 integrate' usage message, thus making it no longer
	    deprecated.

	#1680899 (Job #90782, #85175, #75672, #85342) *
	    The command-line client will now run parallel syncs using
	    threads instead of forked processes.

	#1677801 (Job #95012) **
	    Edge server processing of a large obliterate, prune, or a task
	    to development stream conversions can encounter replication
	    performance issues with journal hook logging at rpl=4. Journal
	    hook logging is now initiated at rpl=5 instead of rpl=4.

	#1675879 (Job #91061) **
	    p4 edit/delete/add will show a warning if the user does not
	    have write privilege for this file.

	#1673954 (Job #95627) **
	    'pull -L' now correctly updates the 'state' file through the
	    end of consistency points containing only entries that don't
	    actually apply any metadata (e.g. @nx@ and @ex@ entries).

	#1673827 (Job #69353) **
	    'p4 pull -u' will stop trying to pull archive content if it
	    detects that the content is missing or corrupt on the master.

	#1671476 (Job #95082) **** *** ** *
	    The Rpc::Close() P4API function no longer does a blocking
	    select(). Use the 'net.maxclosewait' configurable to control
	    the timeout (defaults to 1 second).

	#1653848 (Job #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.

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

Major new functionality in 2018.1

	#1623544 **
	    Further Graph Depot enhancements.
	    The commands which allow direct contribution to the git data model
	    have undergone improvements.  Most notably, submits of changes that
	    affect multiple repos are now performed atomically, with the
	    resulting changelist recording the resulting commits so that their
	    association is not lost.

	#1622318 (Job #10428) **
	    'p4d -jr' will now automatically recognize that a checkpoint or
	    journal is compressed when restoring either. It is now possible to
	    chain compressed and uncompressed checkpoint and journal files
	    during restoration in a single command by omitting the -z option.

	#1617715 (Job #92977, #94460, #94461) **
	    On-demand fetch of graph depot objects from a master server
	    is now supported for 'p4 diff2', 'p4 sync' (including parallel),
	    'p4 fstat -Ol', 'p4 print', and 'p4 describe'. This enables
	    reliable replication for supported graph depot read-only commands.

	#1616256 (Job #91300) **
	    A new command 'p4 admin end-journal' has been added that allows
	    a standard or operator user, with super access, to end a journal
	    being replicated to a standby server via 'journalcopy' at the last
	    replicated consistency point.  The 'journalcopy' thread is stopped,
	    and the journal number and the offset of that last replicated
	    consistency point is returned.  This feature is required to
	    facilitate some advanced failover strategies.

	#1603239 (Job #50063) **
	    Stream path definitions may now include a wildcard in the final
	    expression of a path, following the last slash.  This is useful
	    should you wish to refer to a collection of files, such as -
	    path_type pattern/to/....exe  (or) path_type pattern/to/*.txt

	#1601670 (Job #92974) **
	    The new command 'p4 graph rebase' has been added to allow rebasing
	    of commits within graph depot.

	#1596216 (Job #92976) **
	    The non-interactive graph depot 'p4 merge' now supports specifying
	    multiple repos, which will be merged atomically.  This ensures that
	    if a merge on any repo would fail, none are performed.

	#1630915 (Job #48959) **
	    Second factor authentication is now a supported server feature.

	    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

	    Please note that not all client applications have added support for
	    second factor authentication yet.

Minor new functionality in 2018.1

	#1623544 **
	    The following commands previously documented as technology preview
	    features) are now supported for use in conjunction with the git data
	    model: filelog, fstat, non-interactive merge.
	    (For more information see 'p4 help-graph').

	#1622291 (Job #77528) **
	    The new 'rpl.journalcopy.location' configurable can be
	    used to change the prefix of the filepath where the current
	    journalcopy'd journal is written. With the default value of
	    zero, the current journalcopy'd journal is written directly to
	    the filepath with a prefix of the standby server's 'journalPrefix'
	    configurable. With a value of one, the current journalcopy'd
	    journal is written alongside where the standby server's P4JOURNAL
	    would be written, and then rotated to the filepath with a prefix
	    of the standby server's 'journalPrefix' configurable. The
	    effect of changing the value of the 'rpl.journalcopy.location'
	    configurable occurs when the standby server replicates the
	    P4TARGET's journal rotation. journalcopy'd journals will
	    always have their journal number in the suffix.

	#1620269 (Job #60462) **
	    The new configurable 'dm.info.hide', when set to '1', prevents
	    'p4 info' from returning sensitive data to unauthenticated users.
	    This is primarily aimed at servers running on public networks.

	#1620201 (Job #93347) **
	    "p4 graph show-ref" may now be provided with a "-e" or "-E" flag to
	    filter the returned references by name.

	#1619740 (Job #92904) **
	    "p4 graph tag -l" now lists tags from all repos when no repo is
	    specified.

	#1619150 (Job #91132) **
	    The new command 'p4 show-permissions' has been added.  This is the
	    graph permissions equivalent of 'p4 protects', providing a
	    user-centric view of granted permissions.

	#1617808 (Job #94207) **
	    The second factor authentication triggers now provide the user's
	    email address and full name in the %email% and %fullname% variables.
	    The values of these variables come from the user spec.  If user
	    modification of these fields in the user's user spec is undesirable,
	    setting the new configurable 'dm.user.allowselfupdate' to '0' will
	    prevent those fields be being changed by the user.

	#1614722 (Job #92878) **
	    The graph depot index table (db.graphindex) now stores a file's
	    size, type and LFS OID.  Any previously-indexed graph depot repos
	    must be manually re-indexed after upgrade.

	#1612161 (Job #90744) **
	    LDAP user auto-creation may now prevent users being created if they
	    would have no permissions on the server.  To enable this, the
	    'auth.ldap.userautocreate' must be set to '2'.

	#1610807 (Job #93604) **
	    Replicas now support syncing LFS files from graph depots.

	#1609265 (Job #90487) **
	    A new structured log 'ldapsync.csv' has been added to record the
	    activity of 'p4 ldapsync'.

	#1608660 (Job #92975) **
	    The graph-push-reference* triggers now pass the original reference
	    value in the %oldValue% variable.  When these triggers are fired
	    from 'p4 graph receive-pack', the reference type is passed in the
	    %refType% variable and the %refFlags% variable is populated with a
	    list of actions that are being applied to the reference.

	#1595764 (Job #93545) **
	    A new configurable 'auth.tickets.nounlocked' has been added,
	    providing a means of preventing 'p4 login -a' from issuing host
	    unlocked tickets.  When set to '1', the '-a' flag is silently
	    ignored and the users always be issued host locked tickets.
	    When the configurable is set to '2', the '-a' flag is explicitly
	    disabled and the user will get an error if they try to use it.
	    If either value is set, the tagged output from 'p4 info' will show
	    unlockedTickets disabled.

	#1586092 (Job #93002) **
	    'p4 filelog' is now supported when specifying a graph depot paths.

	#1583012 (Job #92967) **
	    'p4 configure set' now validates numeric configurables to prevent
	    them from being set outside of their acceptable ranges. Previously
	    configurables set outside of the acceptable ranges were silently
	    altered to the minimum or maximum values when used; this meant that
	    the values reported as being set and the values actually used were
	    different.  Configurables already set outside the acceptable ranges
	    will continue to be silently altered.

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

Bugs fixed in 2018.1 Patch 16

	#1937483 (Job #101639) **
	    'p4 fstat -Ol' for graph depot could crash the server when run on
	     mid-branch and a file there is deleted in the branch tip.

	#1925278 (Job #100902) **
	    'p4 fstat -OI' for graph depots would miss changeCommit if the
	    graph depot index is missing. Now, the changeCommit appears whether
	    or not the index exists.

	#1925277 (Job #101062) **
	    When 'p4 have' for graph has no matching repos, it would complete
	    as a failure. This fix changes the failure message "No matching
	    repos" to the warning message "file(s) not on client".

Bugs fixed in 2018.1 Patch 15

	#1915408 (Job #101215) **
	    A memory leak in SSL-enabled servers has been closed.

	#1912798 (Job #95082) * ** *** ****
	    The final select() for Rpc::Close() no longer blocks for ssl
	    connections. The timeout is subject to 'net.maxclosewait'.

	#1911941 * ** *** ****
	    OpenSSL has been upgraded to 1.1.1a

	#1908979 (Job #93870, #89608) **
	    'p4d -cset' and 'p4d -cunset' now resolves the journal file to write
	    too in the same way that the server would if started with the same
	    flags and environment. When using 'p4d -cset' to set P4JOURNAL, if
	    the new value would change the journal file being used, the new
	    value is used instead.

	#1906391 (Job #100948)
	    'p4 submit' now fails with a "tampered with after resolve" error
	    when trying to submit an unshelved file that is resolved with 'ay'
	    and then modified inadvertently. Note that this error is not
	    generated for ktext files.

Bugs fixed in 2018.1 Patch 14

	#1902668 (Job #100945) **
	    'p4 revert -C clientname' should ignore admin's client since the
	    client name is specified as a parameter. This has been fixed.

	#1902172 (Job #100158) **
	    UTF8 type files sync'ed from cache mode replica with a pre-2016.2
	    client could report a depot file error. This has been fixed.

Bugs fixed in 2018.1 Patch 13

	#1894626 (Job #100608) **
	    Avoid error on conflicting clients for commands that are
	    read-only. For 'p4 opened -c <chg>' or -u, the current client
	    of the user is irrelevant and no error should be displayed
	    if that client is tied to another server.
	    The same should be the case for 'p4 client' when the client name
	    is provided as an argument or for 'p4 client -i' which
	    should validate the client name listed in the form rather than
	    the client tied to the user initiating the command.

	#1882546 (Job #83623) * **
	    The default value of the 'filesys.lockdelay' has been decreased
	    from 300 to 90 to ensure abandoned .lck files are correctly deleted.

	#1882546 (Job #99077) **
	    A race condition can no longer cause a lock (.lck) file to remain
	    after use.

Bugs fixed in 2018.1 Patch 12

	#1821147 (Job #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.

	#1808412 (Job #98651) **
	    The server can enter an infinite loop trying to join the rev
	    and have table during a sync request using the #have revision
	    specifier and a changed client view. This has been fixed.

	#1805434 (Job #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.

Bugs fixed in 2018.1 Patch 11

	#1795237 (Job #95627) **
	    'pull -L' now correctly updates the 'state' file through the
	    end of consistency points containing only entries that don't
	    actually apply any metadata (e.g. @nx@ and @ex@ entries).

	#1790547 (Job #97898) *
	    The 'p4 clone' command could fail when using remote specifications
	    with DepotMap paths containing spaces. This has been fixed.

	#1782941 (Job #92961) **
	    Successful OTP based 2FA events logged to the auth.csv structured
	    log were incorrectly recorded as failures.  This has been fixed.

	#1782878 (Job #95173) **
	    'p4 describe' would report errors when run against shelved
	    changelists created by 'p4 switch'.  This has been fixed.

Bugs fixed in 2018.1 Patch 10

	#1762664 (Job #97818, #97870, #97871) **
	    DVCS triggers (push-submit, push-content and push-commit) now
	    support exclusionary mappings in the same way that submit triggers
	    do: the paths of multiple consecutive trigger entries with the same
	    name and type are aggregated into a single map.

	#1760169 (Job #97155) **
	    Deletion of a shelf during a 'p4 submit -e' could leave opened
	    files that could not be reverted. This has been fixed.

	#1754469 (Job #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 2018.1 Patch 9

	#1751790 (Job #97585) **
	    'p4 user -d' run against a very specific configured replica would
	    fail to lock the correct database tables and could cause a deadlock.
	    This has been fixed.

	#1747841 (Job #95435) **
	    'p4 undo' was recording the incorrect resolve action when files
	    being undone were modified with 'p4 edit' before submit.
	    This has been fixed.

Bugs fixed in 2018.1 Patch 8

	#1734993 (Job #97134) **
	    Group protections entries containing wildcards in the group name
	    could cause a server crash. This has been fixed.

	#1730852 (Job #92743) *
	    UTF8 validation would not catch some invalid files. When
	    a file terminated with a partial unicode, the client would not
	    detect the error.
	    This has been fixed.

	#1728426 (Job #96335) **
	    Admin/super user cannot unlock files after failed/rejected DVCS push
	    Running p4 -c <client> 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.

	#1727238 (Job #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.

	#1726525 (Job #96818) **
	    The have table can be corrupted with the use of 'and'
	    mapppings set to a specific revision. This has been fixed.

	#1726395 (Job #96469) **
	    A graph merge -n operation did not clean up correctly, failing
	    a subsequent graph merge request. This has been fixed.

	#1726388 (Job #96468) **
	    A graph merge -n operation with a conflicting file incorrectly
	    stated that the merge will succeed. This has been fixed.

	#1720347 (Job #94695) **
	    'p4 integ' of a stream with a +S moved file could propagate wrong
	    content.  This has been fixed.

	#1717005 (Job #96569) **
	    The 'p4 switch stream@change' command now takes into account
	    stream imports when syncing files.

Bugs fixed in 2018.1 Patch 7

	#1714682 (Job #96120) **
	    'p4 undo' uses current client mapping when placing undone files in
	    workspace. File locations maintained in haveMaps are ignored.

	#1709104 (Job #96381) **
	    The 'p4 journals' command when run during a checkpoint operation
	    could hang the server. This has been fixed.

	#1707877 (Job #96312) **
	    Processing of stream specs with a large number of exclude and/or
	    isolate paths has been made faster.

	#1706332 (Job #96438) **
	    A proxy in front of an edge server now allows 'p4 login' to be run
	    when 'rpl.forward.login=1' is set.

	#1706331 (Job #96326) **
	    On-demand replication of graph files containing reserved characters
	    in their paths would fail. This has been fixed.

Bugs fixed in 2018.1 Patch 6

	#1703579 (Job #96370)
	    For graph clients, 'p4 add -f filepath' succeeds when
	    the filepath contains a asterisk.

	#1697902 (Job #96279) **
	    There was a memory leak when checking the permissions
	    for graph merge actions. This has been fixed.

Bugs fixed in 2018.1 Patch 5

	#1689825 (Job #96001) **
	    The repo and reference permissions are now correctly checked
	    during a graph merge request. It uses the same model as
	    submit and receive-pack.

	#1688292 (Job #90685) **
	    Change how the graph permissions are checked during a
	    'p4 graph receive-pack' command. This copies the methods
	    used by submit and avoids checking each individual file
	    path where possible.

	#1692676 (Job #96039) **
	    Support graph files with reserved characters in their paths
	    originating from git datasets.

	#1692160 (Job #96155) **
	    Improve the performance of group protections.

	#1690481 (Job #95656) **
	    Ensure all clients see stream view changes after 'p4 stream edit'.

	#1689663 (Job #96020) **
	    A graph merge command with more than one repo and a missing source
	    component can crash the server. This has been fixed.

Bugs fixed in 2018.1 Patch 4

	#1687110 (Job #95988) **
	    The server no longer crashes when a parallel 'sync -L'
	    is interrupted.

Bugs fixed in 2018.1 Patch 3

	#1680890 (Job #95177) **
	    Running 'p4 describe' against a changelist involved in a DVCS push
	    during a push-submit or push-content trigger execution now
	    shows the files associated with that change.

	#1679672 (Job #95740) **
	    Improve the performance of graph permissions.

	#1677079 (Job #95668) **
	    When a description is passed to a graph merge request, extra
	    text is no longer added to the commit comment.

	#1676342 (Job #95293) **
	    A proxy in front of an edge server now allows a user to submit
	    sync'ed files.

	#1674502 (Job #95639) **
	    'p4 filelog' run against a graph file no longer causes issues
	    with successive commands run on the same connection.

Bugs fixed in 2018.1 Patch 2

	#1672670 (Job #94877) ***
	    Fix new proxytotals reporting accuracy.

	#1672310 (Job #95546) **
	    Correct errors caused by the '-d' option with "p4 merge --repo".

	#1667081 (Job #95136) **
	    Optimize the 'p4 filelog -m1" for graph repos.
	    The normal and -ztag output format are slightly different.

	#1666512 (Job #94847) **
	    The filesys.checklinks configurable will may now be set to '4',
	    providing the same checking as '3' but disallows using '-f' to
	    override the check.

	#1665939 (Job #95333) **
	    'p4 logparse' could fail to find the structured log file under
	    certain conditions. This has been fixed.

	#1665779 (Job #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.

	#1665775 (Job #95317) **
	    Graph merges reject non-interactive requests that do not have
	    a client mapping. This has been fixed.

	#1662526 (Job #95163) **
	    'p4 show-permissions' would fail to show permissions granted at a
	    depot level when a repo within that depot was specified. This has
	    been fixed.

	#1658865 (Job #95149) **
	    The error message produced when a graph merge fails due to a
	    file not being in the client view is incorrect. This has been
	    fixed.

	1651515 (Job #94778) **
	    Provide 'p4 pubkeys [-k key -t type]' lookup.
	    This option verifies existence of an ssh public key.

Bugs fixed in 2018.1 Patch 1

	#1655243 (Job #95102) **
	    The database table (db.haveg) for tracking file-specific revisions
	    in a graph depot now correctly retains entries after a user invokes
	    p4 edit followed by p4 revert.

	#1653784 (Job #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.

	#1651968 (Job #94668) **
	    If a graph depot client workspace is set to 'noclobber' and the
	    user issues the 'p4 sync ...#0' (or 'p4 sync ...#none') command
	    even though one or more 'noclobber' files cannot be removed
	    from the workspace, the output of the 'p4 have' command
	    correctly displays 'File specific revisions' instead
	    of 'File(s) not on client'.

	#1650350 (Job #93996) **
	    Graph permissions of at least read level are now required before
	    graph depots are made visible to users.

	#1649010 (Job #93650) **
	    An interactive graph merge operation incorrectly ignored
	    conflicting files outside of the client view. This has been fixed.

	#1649031 (Job #94528, #94911) **
	    Graph depot permissions may now be set across all graph depots by
	    specifying '-d *'.  Additionally, 'p4 show-permissions' now accepts
	    a '-g' flag show permissions that apply to the specified group.

	#1646840 (Job #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.

	#1645485 (Job #94825) **
	    'p4 fstat' using a revision specification on an opened file
	    would hang if the file had ditto mapping. This has been fixed.

	#1644841 (Job #94890) **
	    Creation or deletion of a graph branch on a client connected
	    to an edge replica is not supported. A proper error message
	    is now displayed.

	#1644657 (Job #94670) **
	    When a file was not sync (eg: noclobber) and was at a different
	    revision than the rest of the graph client workspace, but later
	    was deleted (by another user) and the user attempts to edit it,
	    a proper error will be displayed.

	#1644215 (Job #94634) **
	    'p4 submit' on a graph depot without the "leaveunchanged"
	    submit option would leave unchanged files with
	    read/write permission. This has been fixed.

	#1643679 (Job #94827) **
	    Fixed "p4 switch" for graph to work with branch names that are
	    legal, possibly shortened, SHA values.

	#1643520 (Job #94831) **
	    A multi-repo graph switch with an empty repo could cause a failure.
	    This has been fixed.

	#1643295 (Job #94106) **
	    The help text for graph resolve was incorrect. This has been
	    fixed.

	#1642219 (Job #93833) **
	    Adding support for file with wildcards in 'p4 add -f' in graph.

	#1642206 (Job #94633) **
	    Symbolic links not deleted properly in graph client with allwrite
	    noclobber.

	#1641204 (Job #94538) **
	    Network problems can cause graph submit to process the request in
	    the wrong order. This has been fixed.

	#1641056 (Job #94742) **
	    Graph 'p4 sync' would schedule an unneeded resolve if a file
	    that is being synced is opened for edit. This has been fixed.

	#1640625 (Job #94700) **
	    p4 describe on a changelist number containing multiple graph repos
	    can sometimes report on only one repo. This has been fixed.

	#1638175 (Job #94493) **
	    Graph 'p4 client -d' would not check for opened files before
	    deleting the client.  Also the -f option would not revert
	    opened files before deleting the client.  These behaviors have
	    been fixed.

	#1636355 (Job #94567) **
	    A one-off memory leak in a server using an SSL P4PORT is fixed.

	#1635754 (Job #94636) **
	    Unrecognized join-join code in p4 sync in some conditions.
	    Happens when one file is open for edit and p4 sync would add
	    a new file from another submit. The new file will not be added
	    to the workspace and the error will be displayed instead.

	#1635359 (Job #94621) **
	    Certain server rejectList settings will no longer block replication.

	#1634420 (Job #94470) **
	    'p4 client -T type' now correctly sets client type when a client
	    template is specified via 'p4 client -t' or the template.client
	    server configurable.

	#1634347 (Job #94428) **
	    Clients configured with 'allwrite' now correctly sync lfs files.

	#1634345 (Job #94255) **
	    Running 'p4 add -c' against a file already opened for add in a graph
	    depot gave the wrong error.  This has been fixed.

	#1634236 (Job #94599) **
	    Running 'p4 submit -c' from a graph client against an existing
	    submitted changelist number gave an unhelpful error message.
	    This has been fixed.

	#1633781 (Job #94559) **
	    Running 'p4 describe' against a pending changelist owned by a graph
	    client could crash the server.  This has been fixed.

	#1633069 (Job #93131) **
	    p4 grant|revoke permission now disallows '...' in user/group names.

	#1633065 (Job #94342) **
	    'p4 switch -d' run from a graph type client now warns before
	    deleting a branch that is not merged with its parent (the repo's
	    default branch) and in this case requires the -f force flag to be
	    passed.

	#1632668, #1628823 (Job #91231, #94494) **
	    Deletion of empty repos no longer requires the -f flag.

	#1631097 (Job #94187) **
	    'p4 reconcile' run from a graph type client could report the same
	    files added twice under certain conditions. This has been fixed.

	#1631503 (Job #94555) **
	    'p4 graph show-ref -e nameFilter' now supports '.' in ref names.

Bugs fixed in 2018.1

	#1636440 (Job #94694) **
	    p4 sync removed +w (for noclobber client) on lfs file during sync

	#1635359 (Job #94621) **
	    Certain server rejectList settings will no longer block replication.

	#1630915 (Job #94537) **
	    When 'p4 login2 -S check-auth' is run and the second factor
	    authentication service's response is that an external prompt has
	    been rejected, the user's second factor authentication status
	    remained 'required waiting' when it should have transitioned to
	    'required rejected'.  This has been fixed.

	#1628184 (Job #93747) **
	    The journalcopy on a Windows standby server from a server running
	    on a platform other than Windows is now journalcopy'd correctly.

	#1626200 (Job #91459) **
	    'p4 receive-pack' now prevents ASCII control characters from being
	    used in reference names.

	#1625571 (Job #93641) **
	    'p4 pull --batch' could cause graph depot pack and index archive
	    files to be transferred using incorrect filenames, resulting in
	    'Blob data not found' errors from 'p4 sync'.  This has been fixed.

	#1625540 (Job #93916) **
	    "p4 print -o" is now supported when specifying a graph depot path.
	    Previously the '-o' flag was ignored and the file content would
	    be output to stdout.  This has been fixed.

	#1625385 (Job #93132) **
	    Providing 'p4 receive-pack' with a truncated pack file could cause
	    the server to crash.  This has been fixed.

	#1624026 (Job #93453) **
	    Parallel sync of from a graph depot via a forwarding replica may
	    crash the parallel transfer threads.  This has been fixed.

	#1622147 (Job #94348) **
	    Running 'p4 diff2' against 2 files in different graph depot repos
	    could cause a crash.  This has been fixed.

	#1620977 (Job #92620) **
	    If a sync of a graph file failed, the server would record that the
	    sync had completed for the entire commit, preventing further sync
	    commands from attempting to retry.  The server now records a list
	    of exceptions to the files sync'ed to the have commit so that the
	    sync can be retried.

	#1620366 (Job #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.

	#1619465 (Job #92050) **
	    'p4 dirs' run against a graph depot path would ignore the '-C',
	    '-D' and '-H' flags, returning misleading results.  These flags are
	    not supported yet when specifying a graph depot path, and now
	    return no files instead.

	#1619071 (Job #94219) **
	    It was possible that a unicode server running on Windows may crash
	    if untranslatable characters were entered in a password when the
	    user logging in is configured to use LDAP authentication.
	    This has been fixed.

	#1618574 (Job #94247)
	    Post-command triggers for spec-updating commands would get internal
	    RPC callback function names instead of the user command names.
	    For example: 'dm-UpdateClientSpec' instead of 'user-client' for a
	    'p4 client' command.  This has been fixed.

	#1618387 (Job #94152) **
	    Creating and deleting the same label at the same time could result
	    in a deadlock, hanging the server.  This has been fixed.

	#1617327 (Job #94225) **
	    A memory leak when running 'p4 merge' against a graph depot has
	    been fixed.

	#1614880 (Job #94116) **
	    A memory leak when running 'p4 shelve -d' without any file arguments
	    has been fixed.

	#1614541 (Job #93383) **
	    Active LDAP configs may have been skipped on insensitive platforms
	    due to the case of the LDAP configuration name not matching.
	    This has been fixed.

	#1614386 (Job #5109) **
	    'p4 protect', 'p4 triggers' and 'p4 typemap' now require that the
	    main list field name is present in the spec, even if the list is
	    empty.  This is to prevent accidentally resetting these specs from
	    the command line by running 'p4 protect -i' and then using CTRL+C to
	    cancel in the input.

	#1608123 (Job #93736) **
	    'p4 describe -a' for graph depot no longer attempts to display
	    file diff for deleted files.

	#1604210 (Job #90915) **
	    The 'p4 reshelve' command would fail to shelve into an existing
	    changelist when run against a non-distributed server running with
	    a serverId.  This has been fixed.

	#1600842 (Job #93672) **
	    'p4 graph receive-pack' was completing regardless of failing
	    graph-push-reference triggers.  This has been fixed.

	#1598323 (Job #89751) **
	    'p4 graph receive-pack --discard-archives' could remove pack files
	    that were in use by other threads.  This has been fixed.

	#1592596 (Job #92822) *
	    'p4 ignores -i' no longer concatenates the current working directory
	    to the paths of files specified with absolute files.

	#1590591 (Job #92898) **
	    'p4 logout -a' was not clearing the second factor authentication
	    state for users who's state were set to persistent.  This has been
	    fixed.

	#1589311 (Job #92744) **
	    Files of type 'utf8' containing content that ends with a partial
	    utf8 sequence will now correctly result in a translation error
	    when attempting to submit from a pre-15.2 client.

	#1582091 (Job #92754, #81128 ) **
	    Readonly clients are now allowed to run 'p4 clean' and 'p4 status'.

	#1577965 (Job #93001) **
	    'p4 annotate -I' will no longer terminate abnormally if access
	    to a branch is excluded within some integration histories.

	#1568232 (Job #91885) **
	    Submitting a moved 'utf8' file using a pre-15.2 client no longer
	    results in a missing archive.

	#1562762 (Job #92623) ****
	    When the p4broker is in router mode, an unresponsive altserver
	    might not have its connection error sent to the client.

	#1561275 (Job #92417) **
	    A delay in the replication of a consistency point will no longer
	    corrupt the journal written by a 'journalcopy' thread.

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

Major new functionality in 2017.2

	#1547263 (Job #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 (Job #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 (Job #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 (Job #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 (Job #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 (Job #75754) **
	    'p4 pull -R' provides an easy way to retry failed
	    'p4 pull -u' failures.

	#1556644 (Job #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 (Job #92324) * **
	    The filesys.checklinks configurable will now allow directory
	    symlinks to be added/reconciled when it's set to the value '3'.

	#1538126 (Job #91517) **
	    'p4 pull -u --batch' can use new --min-size and --max-size
	    options to assign differently sized files to different pull
	    threads.

	#1536638 (Job #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 (Job #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 (Job #29410) **
	    The 'p4 describe' command now has a '-a' flag that displays
	    the content of added files.

	#1519158 (Job #14944, #15488) **
	    The 'p4 changes' command now has a '-r' flag that reverses
	    the command output.

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

Bugs fixed in 2017.2 Patch 8

	#1805432 (Job #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 (Job #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 (Job #97155) **
	    Deletion of a shelf during a 'p4 submit -e' could leave opened
	    files that could not be reverted. This has been fixed.

	#1753593 (Job #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 (Job #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 (Job #97134) **
	    Group protections entries containing wildcards in the group name
	    could cause a server crash. This has been fixed.

	#1728431 (Job #96335) **
	    Admin/super user cannot unlock files after failed/rejected DVCS push
	    Running p4 -c <client> 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 (Job #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 (Job #96468) **
	    A graph merge -n operation with a conflicting file incorrectly
	    stated that the merge will succeed. This has been fixed.

	#1709629 (Job #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 (Job #94695) **
	    'p4 integ' of a stream with a +S moved file could propagate wrong
	    content.  This has been fixed.

	#1715429 (Job #96569) **
	    The 'p4 switch stream@change' command now takes into account
	    stream imports when syncing files.

	#1709174 (Job #96381) **
	    The 'p4 journals' command when run during a checkpoint operation
	    could hang the server. This has been fixed.

	#1703335 (Job #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 (Job #96155) **
	    Improve the performance of group protections.

	#1690836 (Job #95656) **
	    Ensure all clients see stream view changes after 'p4 stream edit'.

	#1674913 (Job #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 (Job #94877) ***
	    Fix new proxytotals reporting accuracy.

	#1653657 (Job #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 (Job #94825) **
	    'p4 fstat using a revision specification on an opened file
	    would hang if the file had ditto mapping. This has been fixed.

	#1647697 (Job #94951) **
	    Referencing autoreloaded labels uses much less memory.

	#1646839 (Job #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 (Job #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 (Job #94152) **
	    Concurrent label create/delete of the same label no longer hangs.

	#1616808 (Job #94116) **
	    'p4 shelve -d' without any file arguments leaks memory.
	    This change fixes the issue.

	#1614169 (Job #94050) **
	    Fix for 'p4 keys -e nameFilter' to support a period in key names.

	#1611860 (Job #92645) **
	    Parallel sync performance through the proxy has been improved
	    for some scenarios.

	#1609806 (Job #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 (Job #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 (Job #93936) **
	    The graph mode of 'p4 merge' would perform a fast-forward when
	    possible, ignoring the --squash flag.  This has been fixed.

	#1606983 (Job #93931) **
	    The graph mode of 'p4 merge' no longer accepts both --no-ff and
	    --squash at the same time.

	#1606951 (Job #93857) **
	    Corrupt git pack indexes now cause errors to be returned.

	#1606799 (Job #93925) **
	    'p4 copy' and 'p4 integ' requests are now rejected for graph
	    clients.

	#1605825 (Job #93871) **
	    'p4 where' run against replica using a partitioned or readonly
	    client could suppress output from additional commands run within
	    the same connection.

	#1605817 (Job #93794) **
	    'p4 files' correctly reports 'no such file(s).' for an empty
	    repo branch.

	Upgrade to SSL 1.0.2n

	#1603922 (Job #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 (Job #93691) **
	    'p4 describe' correctly reports commits containing deleted files.

Bugs fixed in 2017.2 Patch 1

	#1588156 (Job #92867) **
	    p4 describe -n <repo1> <commit-sha> 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 <sha> not found in repo"
	    This has been fixed.

	#1588156 (Job #92123) **
	    p4 describe -n repo <commit-sha> 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 (Job #93382) **
	    The use of clients bound to specific servers were not being
	    restricted to those servers in all circumstances.
	    This has been fixed.

	#1589629 (Job #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 (Job #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 (Job #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 (Job #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 (Job #92894) **
	    'p4 -ztag describe -S' would update the shelveAccess date even
	    though the shelved content was not displayed. This has been
	    fixed.

	#1583727 (Job #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 (Job #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 (Job #93001) **
	    'p4 annotate -I' will no longer terminate abnormally if access
	    to a branch is excluded within some integration histories.

	#1577673 (Job #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 ensure that the command fails when the transfer
	    fails.

	#1573540 (Job #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 (Job #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 (Job #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 (Job #91885) **
	    Submitting a moved 'utf8' file using a pre-15.2 client
	    no longer results in a missing archive.

	#1567257 (Job #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 (Job #92417) **
	    A delay in the replication of a consistency point will no
	    longer corrupt the journal written by a 'journalcopy' thread.

	#1558115 (Job #92327) **
	    A submit of a +Sn file will no longer cause a failure of
	    a concurrent 'clone' or 'fetch' operation.

	#1529453 (Job #91971) **
	    Parallel sync performance has been improved for some scenarios
	    in which distribution of load across the transmit threads
	    was not an issue.

	#1526861 (Job #90476) **
	    'p4 sync -r <file>' would error if the file was either the 'to'
	    or 'from' half of a moved file.

	#1526302 (Job #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 (Job #90798) **
	    'p4 sync' against a repo (graph depot) would not honor the
	    client option 'noclobber'.

	#1525293 (Job #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 (Job #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 (Job #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 (Job #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 (Job #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 (Job #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 (Job #90330) **
	    'p4 copy' could miss needed copies in a complex case of
	    moves and earlier copies.

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

Major new functionality in 2017.1

	Graph Depot support **

	    A collection of new features provide direct support for git
	    repositories and git workflows using the p4d server. In addition
	    to the new server features (outlined below), there is a new
	    server component, called the Connector, that is separately
	    installable as needed, and provides services which are broadly
	    similar to those provided by Perforce proxy and replica servers.

	    The new features you should be aware of include:
	    - server data model support
	    - authentication and authorization enhancements
	    - p4 command line access to git versioned files
	    - new triggers

	    To learn more about the Connector component, please read its
	    release notes and documentation. Below is a broad overview
	    of the new p4d support; for details, please read the server
	    documentation.

	    Server data model support:

	    A single p4d server new supports storage of versioned files
	    using either the classic Perforce data model, or using the
	    git data model. The data model to use is specified on a
	    depot-by-depot basis: a depot of type "graph" is used to store
	    one or more git repositories. The server automatically creates
	    a graph depot named 'repo'; you may create additional graph
	    depots using the 'p4 depot' command.

	    git repositories are named using a hierachical naming scheme
	    of the format: //depot/repo/path/name, using the new 'p4 repo'
	    command.

	    Authentication and authorization enhancements:

	    git users accessing the Perforce server must be properly
	    authenticated and authorized. When using the HTTPS protocol,
	    git users are prompted for their Perforce username and password
	    as necessary when they perform clone, push, or pull commands.
	    When using the SSH protocol, git users authenticate using
	    public key encryption; the appropriate public key for each user
	    should be recorded in the server using the new 'p4 pubkey' command.

	    Access control for git repositories uses a new set of permissions,
	    defined with the 'p4 grant-permission' command. The related
	    revoke-permission, check-permission, and show-permission commands
	    are also useful for defining and maintaining repository access
	    control rules.

	    Command line access to git versioned files:

	    A client workspace can be configured to access git versioned files
	    by mapping paths from repos within graph type depots; non-graph
	    depot paths may also be mapped in the same client view.

	    The 'p4 sync' command will then sync the specified version of the
	    specified files from one or more git repositories and other depots
	    to the corresponding location in your client's filesystem. Similarly
	    the 'p4 have', 'p4 files', 'p4 dirs' and 'p4 fstat' commands will
	    also report on the metadata from git repositories as well as other
	    depots. Not all flags for these commands are applicable for graph.

	    New triggers:

	    Several new trigger types are available to allow administrators
	    to define custom policies for access to git repository data, and
	    to support advanced workflows such as initiating build/test
	    automation activities upon the completion of a git push command.

	    Licensing:

	    The default maximum repos allowed for a server is 10, to increase
	    this limit contact Perforce Sales at sales@perforce.com.

	    (For more information see 'p4 help --depot-type=graph').

	#1434004 * ** ***
	    TCP connection changes to improve performance
	    over long latency connections.  Significantly more
	    information may be in transport now and clients and
	    intermediate processes need to handle more data in a
	    timely manner.  This new behavior can be disabled in
	    clients, proxies, brokers and the server with the
	    configurable net.autotune which defaults to 1 (enabled)
	    and can be set to 0 to disable.  Clients can set this
	    via "p4 set" or P4CONFIG files and servers can set this
	    via "p4 configure."  On Windows based platforms, send
	    buffer sizes are not autotuned but still are manually
	    configurable with net.tcpsize.

	#1425396 (Job #88065) **
	    Binary fields in journal records will now be written in
	    base64 instead of hex with a few exceptions.  Binary
	    objects of length 1 will still be written in hex and some
	    md5 digest fields will still be hex.

Minor new functionality in 2017.1

	#1487961 (Job #90210) **
	    New server option '--daemonsafe' is like '-d' and forks
	    the 'p4d' into the background, but also closes the stdio
	    files.

	#1486890 (Job #88954) **
	    The utf8 file type was not handled properly by clients older
	    than 2015.2 and the p4 java api.  The server now attempts to
	    work with these older clients by handling the byte-order-mark
	    in the server and having the server produce digests which
	    these older clients will expect.  Operation with utf8
	    files and these old client will skip proxy caching also.
	    These older clients and utf8 filetype will assume the BOM
	    is present while clients 2015.2 can adapt to a BOM being
	    present or not.

	#1459677 (Job #89065) **
	    The 'p4 verify -v' command now supports updates to files which
	    have been branched into one or more active task streams. Please
	    see 'p4 help verify' for more details about this scenario.

	#1458367 (Job #37069, #89070) **
	    The 'p4 move -r' command allows users to rename or change
	    the location of files in the depot without opening them
	    for edit first.

	#1457332 (Job #89008) **
	    The 'p4 remotes' command now accepts the '-u user' flag.

	#1453638 (Job #84442) **
	    The --remote-user flag may be specified on the fetch, push, and
	    login commands, overriding the RemoteUser field in the remote
	    spec for this command.

	#1450711 (Job #88643) **
	    A restriction on using the 'p4 renameuser' command in a
	    Commit-Edge configuration has been removed: it is now safe to
	    use the command to rename a user who owns workspaces and/or
	    labels on one or more Edge Servers. Note that unloaded workspaces
	    are still not processed by the command, no matter which server
	    those workspaces reside on.

	#1448666 (Job #63670) **
	    A new type of structured server log audit record format which
	    includes the revision's size in bytes is now available. To
	    specify the logging of these alternate audit records, change the
	    name of your audit log from 'audit.csv' to 'auditsize.csv'.

	#1442507 (Job #69777) **
	    Two new security levels have been introduced to enforce stricter
	    intermediary checking.  Setting the security configurable to 5 to
	    higher will require each intermediary to have a valid authenticated
	    service user.  Setting the security configurable to 6 to higher will
	    require each intermediary to have a valid server spec, where the
	    service user must match the user named in the spec's 'User' field.
	    The server spec will be found by matching the intermediary's P4PORT
	    with a value in the spec's 'AllowedAddresses' field.  For example,
	    if connecting to a proxy on 10.0.0.100:1667, a server spec with this
	    IP address and port number in the 'AllowedAddresses' field must
	    exist and must have the proxy's service user named in the 'User'
	    field.  Errors relating to configuration of intermediaries will be
	    logged to the 'route.csv' logfile, if enabled.

	#1439069 (Job #81269) **
	    When specifying file paths you can now use the change identity
	    from the submitted change spec instead of the actual change number.
	    So, for example given a change submitted with an identity:
	    'p4 sync //depot/...@30E7C829-08C504-4109-89AA-904D0C2194B8'

	#1424268 (Job #88017) **
	    The template.label configurable introduced by change 656580 now
	    also applies to a label created via the 'p4 tag' command.

	#1526517 (Job #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

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

Bugs fixed in 2017.1 Patch 9

	#1737215 (Job #97134) **
	    Group protections entries containing wildcards in the group name
	    could cause a server crash. This has been fixed.

	#1728560 (Job #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.

	#1709207 (Job #96381) **
	    The 'p4 journals' command when run during a checkpoint operation
	    could hang the server. This has been fixed.

	#1703333 (Job #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.

	#1692127 (Job #96155) **
	    Improve the performance of group protections.

Bugs fixed in 2017.1 Patch 8

	#1675009 (Job #94847) **
	    The filesys.checklinks configurable will may now be set to '4',
	    providing the same checking as '3' but disallows using '-f' to
	    override the check.

	#1647697 (Job #94951) **
	    Use of auto-reloaded labels no longer allocates and holds onto
	    memory for the label on every use.  It now uses memory proportional
	    to the size of the label used.

	#1640812 (Job #94621) **
	    The 'rejectList' feature will no longer block replicas.

	#1672646 (Job #94877) ***
	    Fix new proxytotals reporting accuracy.

	#1653549 (Job #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.

	#1648718 (Job #94825) **
	    'p4 fstat' using a revision specification on an opened file
	    would hang if the file had ditto mapping. This has been fixed.

	#1646835 (Job #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.1 Patch 7

	#1620424 (Job #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.

	#1618405 (Job #94152) **
	    Concurrent label create/delete of the same label no longer hangs.

	#1616222 (Job #94116) **
	    'p4 shelve -d' without any file arguments leaks memory.
	    This change fixes the issue.

	#1611639 (Job #92645) **
	    Parallel sync performance through the proxy has been improved
	    for some scenarios.

	#1609812 (Job #93973) **
	    'p4 ldapsync -u' would only delete users if a spec depot were
	    present.  This has been fixed.

	#1609801 (Job #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.

	#1609779 (Job #93871) **
	    'p4 where' run against replica using a partitioned or readonly
	    client could suppress output from additional commands run within
	    the same connection.

	#1603813 (Job #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.

Bugs fixed in 2017.1 Patch 6

	Upgrade of OpenSSL to 1.0.2n

Bugs fixed in 2017.1 Patch 5

	#1589832 (Job #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.

	#1588218 (Job #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 from the Commit Server. This has
	    been fixed to insure that the command fails when the transfer
	    fails.

	#1586874 (Job #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.

	#1584718 (Job #92894) **
	    'p4 -ztag describe -S' would update the shelveAccess date even
	    though the shelved content was not displayed. This has has been
	    fixed.

	#1577292 (Job #93001) **
	    'p4 annotate -I' will no longer terminate abnormally if access
	    to a branch is excluded within some integration histories.

	#1576900 (Job #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 dictionary containing the '@' character. This has been
	    fixed.

	Upgrade of OpenSSL to 1.0.2m

Bugs fixed in 2017.1 Patch 4

	#1569495 (Job #92417) **
	    A delay in the replication of a consistency point will no
	    longer corrupt the journal written by a 'journalcopy' thread.

	#1566131 (Job #91885) **
	    Submitting a moved 'utf8' file using a pre-15.2 client
	    no longer results in a missing archive.

	#1564066 (Job #92442) **
	    'p4 resolve' now has an undoc flag '-dx' which can be used to
	    make the 3-way merge algorithm perform more like the unix
	    'diff3 -m' merge.  Typically merge tends to remove duplicate
	    lines in adjacent inserts from 'theirs' and 'yours', with this
	    flag all the lines in the inserts from both legs of the merge
	    will be inserted.

Bugs fixed in 2017.1 Patch 3

	#1550695 (Job #92435) **
	    User not able to submit an open stream with a file change
	    on a edge server. This is now fixed.

	#1549763 (Job #92443) **
	    Users auto-created by 'p4 login' would not have the Update time set
	    in the user spec.  This has now been fixed.

Bugs fixed in 2017.1 Patch 2

	#1539093 (Job #92168) ** ***
	    The new performance improvements for TCP over long latency
	    connections could cause write/write deadlocks in proxies
	    and brokers.  To mitigate this, the default behavior
	    has been changed to disabled.  It can be re-enabled by
	    setting 'net.autotune' to 1. Once enabled, it will work
	    for any server configuration that does not have a proxy
	    or a broker in the mix.

	#1542613 (Job #92377) **
	    Empty repos in graph depot could cause reference erors to be shown
	    when running commands like 'p4 dirs' against unrelated paths.
	    This has been fixed.

Bugs fixed in 2017.1 Patch 1

	#1529412 (Job #91971) **
	    Parallel sync performance has been improved for some scenarios
	    in which distribution of load across the transmit threads
	    was not an issue.

	#1528637 (Job #85788) **
	    'p4 revert -C client <path>' fails to revert moved files.

	#1525095, #1524788, #1524323, #1523395 (Job #91812)
	    Graph depot triggers are not honoring trigger Path field for repo submit.

	#1519789, #1518201 (Job #91541)
	    'p4 submit' must activate graph-push-* triggers.

	#1519789, #1519676 (Job #91644)
	    Mirrored repo should only be able to run post-commit triggers.

	#1516824 (Job #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.

	#1516465 (Job #90653) * **
	    Application locked licenses now work with DVCS.

	#1516413 (Job #91562) **
	    'p4 repos -M' could report incorrect number of mirrored repos.

	#1514865 (Job #90330) **
	    'p4 copy' could miss needed copies in a complex case of
	    moves and earlier copies.

	Upgrade of OpenSSL libraries to 1.0.2l

Bugs fixed in 2017.1

	#1505154 (Job #90088) **
 	    For a specific use case, a branch resolve is scheduled instead
 	    of a move resolve.  This is fixed by backing out change #1422325.

	#1502778 (Job #89674) **
	    Obliterating files from a task stream that is no longer protected
	    because it has been unloaded can cause revision inconsistency after
	    being reloaded.

	#1498792 (Job #86088) **
	    Using 'p4 switch' between task streams and non-task can fail
	    if a previous manual switch was done with 'p4 client -s' without
	    subsequently calling 'p4 sync'.

	#1489051 (Job #2170) **
	    Submitting a file with the same name as an existing depot
	    directory path (or vice versa) will now be rejected.

	#1483947 (Job #89040) *
	    'p4 print -o <a filename in the os temp directory>' will now
	    work even if a P4CLIENTPATH is set or the DVCS P4INITROOT is
	    set.  This is a new exception to the P4CLIENTPATH feature.

	#1481077, #1481305, #1483342 (Job #89051, #90160) * ** ***
	    SSL connections now allow use of TLSv1.1 and TLSv1.2 in addition
	    to the existing support for TLSv1.0.  Clients and servers will
	    choose the highest TLS version supported by both ends of the
	    connection; thus old clients and old servers will always use
	    TLSv1.0, and by default new clients connecting to new servers
	    will use TLSv1.2.

	    Two new configurables are provided to restrict the allowed TLS
	    versions when a new client connnects to a new server:
	        ssl.tls.version.min    [default=10]
	        ssl.tls.version.max    [default=12]
	    These default settings allow TLSv1.0, TLSv1.1, and TLSv1.2.

	    Each of these configurables can take one of the following
	    values:
	        10 specifies TLSv1.0
	        11 specifies TLSv1.1
	        12 specifies TLSv1.2
	   ssl.tls.version.min specifies the lowest TLS version that
	   will be accepted, and ssl.tls.version.max specifies the
	   highest TLS version that will be accepted.

	   Changes to these configurables on a server will not take
	   effect until the server is restarted.

	   Thus, to force use of a new client, the server can set
	       ssl.tls.version.min=11    (or 12)
	   because old clients support only TLSv1.0.

	   To force the use of TLSv1.1, set
	        ssl.tls.version.min=11
	        ssl.tls.version.max=11

	   To force the use of TLSv1.2, set
	        ssl.tls.version.min=12
	        ssl.tls.version.max=12

	    To allow TLSv1.1 or TLSv1.2 but exclude TLSv1.0, set
	        ssl.tls.version.min=11
	        ssl.tls.version.max=12

	    These configurables are designed to allow the server to restrict
	    the set of allowed TLS protocol versions, but they can be used
	    by clients as well; this is probably useful mostly for testing,
	    although it can be use to prevent connecting to potentially
	    vulnerable servers.  When used by a client these configurables
	    specify the lowest and highest TLS versions that will be offered.

	    Values of either configurable outside of the legal range will be
	    treated as if they were pinned to the nearest end of the range.
	    Thus values below 10 will be treated as 10; values above 12 will
	    be treated as 12.

	    Be careful not to set ssl.tls.version.min > ssl.tls.version.max
	    because then no clients will be able to connect.  In this case
	    you will need to change these settings on the command line, e.g.:
	        p4d -c"set ssl.tls.version.min=10"
	        p4d -c"set ssl.tls.version.max=12"
	    and then restart the server.

	    Note that if there are no allowed TLS versions common to the
	    client and the server, or if the server is not using SSL, then
	    the client will get an error similar to this:

	    Perforce client error:
	        SSL connect to ssl:host:1666 failed  (Connection reset by peer).
	        Remove SSL protocol prefix from P4PORT or fix the TLS settings.

	    If the client or server does not offer any protocol versions (eg,
	    because the client set ssl.tls.version.min > ssl.tls.version.max)
	    then the client will get an error similar to this:

	    Perforce client error:
	        SSL protocol: error:14077102:SSL routines:
	            SSL23_GET_SERVER_HELLO:unsupported protocol:

	    There are only two lines in this error message; the actual error
	    has the "SSL protocol:" line and the "GET_SERVER_HELLO" line
	    on a single line, but they are split here for readability.

	#1480537 **
	    'p4 protects -m' could incorrectly report a max permission of
	    'owner' (owner is not an access permission).

	#1480400 (Job #89648, #89890) **
	    The db.sendq entries for a failed parallel sync are now
	    immediately removed from db.sendq.

	#1479216 (Job #89781) **
	    'p4 depot -f' would allow changing the depot type of a depot
	    that is not empty. This has been fixed.

	#1475982 (Job #89723) **
	    The rpl >= 2 condition for reporting replication tracking
	    metrics has been removed. The replication tracking metrics
	    will now be reported when the applicable tracking thresholds
	    have been exceeded.

	#1473097 (Job #89657) **
	    'p4d -xx' could incorrectly declare "db.workingx/db.revsh
	    inconsistencies found," and incorrectly generate jnl.fix records,
	    in some situations where multiple shelves existed for the
	    same files.

	#1471650 (Job #89336) **
	    'p4 add ...' could generate many "Error object passed to database"
	    errors and fail to terminate when MaxScanRows or MaxLockTime
	    has been reached. This could also happen with 'p4 reconcile' or
	    'p4 status'. This behavior has been fixed.

	#1469144 (Job #89527) **
	    A 'p4 shelve' command which needed to retry its change spec
	    edit operation due to a spec validation error no longer fails
	    with "No files to shelve."

	#1467328 (Job #87271) **
	    'p4 clients -S //stream/name' now respects the case-sensitivity
	    configuration of the server.

	#1466515 (Job #81281) **
	    Replica pull threads which receive error messages from their
	    master server will now log those error messages into any
	    replica structured server logs which record error events.

	#1465792 (Job #16821, #89204) * **
	    The configurable 'filesys.checklinks' may fail to prevent files
	    from being added when files are symlinks to directories. This
	    has been fixed. Also, this configurable is now honored for
	    'p4 reconcile' when detecting files to be added.

	#1464985 (Job #89311) **
	    The fetch/push/unzip commands might incorrectly declare a
	    file conflict for a file which was moved multiple times, to
	    different destinations, during its history.

	#1463567 (Job #86424) **
	    Edge Servers might halt replicating if an obliterate command
	    was run concurrently with a very large populate or submit command.

	#1460946 (Job #88999) **
	    The 'p4 export' command now includes any @dl@ or @pk@ journal
	    records as part of the journal data export.

	#1458557 (Job #89052) **
	    A forwarding replica with lbr.replication=shared will no longer
	    attempt to update the (shared) archive area during the file
	    transfer phase of a forwarded 'p4 submit'. The cache-on-submit
	    behavior is still present for forwarding replicas with
	    lbr.replication set to either readonly or cache.

	#1455848 (Job #88980) **
	    In replica chaining configurations, replicas which were not
	    directly connected to the master server were not processing
	    archive deletion operations arising from operations such as
	    submission of a binary+S file, deletion of a shelf, obliteration,
	    archive depot operations or retype +l commands.

	#1449343 (Job #85596) **
	    The 'logparse' command no longer attempts to open an erroneous
	    file when the structured log's configurable includes a path.

	#1447186 (Job #84067) **
	    The number of fsync() calls for 'rdb.lbr' executed by a replica
	    server fetching graph depot packfiles has been reduced. In some
	    environments, this can improve the performance of fetching
	    graph depot packfiles.

	#1446257 (Job #84067) **
	    The number of fsync() calls for 'rdb.lbr' executed by a replica
	    server fetching file content on demand has been reduced. In some
	    environments, this can improve the performance of fetching file
	    content on demand.

	#1445640 (Job #88728) **
	    The configurables rpl.awaitjnl.count and rpl.awaitjnl.interval
	    were inadvertently swapped; they are now corrected.

	#1440527 (Job #88441) **
	    'p4 verify -S //filepath/...@=<shelved changelist>' would scan
	    the db.revsh table.

	#1439920 (Job #88350) **
	    If an error was encountered when opening an archive file for
	    write on the commit server during an edge submit, the commit
	    server might crash. The edge submit now reports the error
	    encountered and fails gracefully.

	#1432576 (Job #88205) **
	    The 'rdb.lbr' tracking metrics are now aggregated to reflect
	    larger operations. Since the aggregated metrics might now more
	    readily exceed a tracking threshold, the 'rdb.lbr' tracking output
	    might be more likely to be written to the server log when the
	    'rpl' configurable is set to a value of two or greater.

	#1431630 (Job #88189) **
	    The 'rdb.lbr' tracking metrics are now correctly reported
	    for the edge server's metadata pull thread when the 'rpl'
	    configurable is set to a value of two or greater.

	#1425567 (Job #88085) **
	    The number of fsync() calls for 'rdb.lbr' executed by
	    the commit server for coordinating the file content fetched
	    during a parallel submit though an edge server has been reduced.
	    In some environments, this can improve the performance of
	    parallel submit through an edge server.

	#1424177 (Job #26502, #51997, #59889, #69919, #88018) **
	    The server now rejects client and branch views that end
	    with "...." on one side and "..." on the other.

	#1419208 (Job #67640) **
	    A 'p4 sync' command issued to a forwarding replica of a
	    forwarding replica will now deliver file content from the
	    outermost forwarding replica in the chain, rather than the
	    innermost. However, it is now illegal to deploy a proxy to
	    a forwarding replica. If you had such a deployment, you will
	    need to either (a) reconfigure that proxy to point directly
	    to the master, (b) replace that proxy with a forwarding
	    replica, or (c) remove that proxy entirely.

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

Major new functionality in 2016.2

	#1414787 (Job #1649) **
	    A 'p4 undo' command has been added to simplify the process of
	    backing out submitted changes.  See 'p4 help undo'.

	#1379442 (Job #2103, #27421, #75239) **
	    The protections table now supports delegation of control for a
	    specific path to a user or group.  A new 'owner' permission has been
	    added which gives users the ability edit a sub-protections table by
	    running 'p4 protect' with the subpath: the path that is granted
	    by the 'owner' protections entry.  This will open a protect spec
	    similar to the normal protections table, but will only allow
	    permission levels up to 'admin' to be granted for paths within
	    the scope of the subpath.  The sub-protections table will not be
	    shown in the main protections table: the entries in the
	    sub-protections table will be inserted immediately  after the
	    'owner' entry: as such only one 'owner' entry is permitted per
	    subpath.  Multiple owners for a sub-protections table can be
	    achieved by with a group.  Users with 'super' permission can edit
	    any sub-protections table without needing to be an 'owner'.

Minor new functionality in 2016.2

	#1442162 (Job #16821, #88295) * **
	    A new configurable 'filesys.checklinks' can be used to prevent
	    files being added that have a symlink in their directory path.
	    When this configurable is set to '1', trying to 'p4 add' a file
	    that is symbolically linked below the client root will fail.
	    Setting this configurable to '2' allows the user to bypass the
	    check by using the '-f' (force) option.

	#1426811 (Job #88088) **
	    Reverse integration credits will no longer be downgraded by submit
	    due to the presence of multiple 'merge from' records if the merges
	    were from other revisions of the same file.

	#1416336 (Job #76601, #79465) **
	    'p4 ldapsync' has a new '-u' flag that allows users to be created,
	    updated and/or deleted based on users found in LDAP servers.

	#1408304 **
	    'p4 copy -f' and 'p4 populate -f' will no longer copy 'move/delete'
	    source revisions into nonexistent targets as new 'delete' revisions.

	#1401167 (Job #86401) **
	    Setting the new 'server.locks.global' configurable to 1 makes
	    'p4 lock' from an Edge Server take global locks on the Commit
	    Server.

	#1389236 (Job #81369) **
	    A new 'partitioned' client type has been added.  Like the 'readonly'
	    type clients of this type have their own db.have tables that aren't
	    journalled; however, these clients do allow files to be opened and
	    submitted.  Existing 'readonly' clients can be convtered to
	    'partitioned' by updating the 'Type' field.

	#1362620 **
	    'p4 client' now sports a '--type' (-T) flag that allows the
	    user to specify the type of the client to create. The type
	    can be 'writeable', 'readonly', or 'partitioned'.

	#1351238 ***
	    When using 'proxy.monitor.level' and tracking is enabled in
	    the proxy, the tracking metrics for the 'pdb.monitor' table
	    are reported when they are above the thresholds defined for
	    the tracking level specified.

Bugs fixed in 2016.2 Patch 15

	#1737232 (Job #97134) **
	    Group protections entries containing wildcards in the group name
	    could cause a server crash. This has been fixed.

	#1703330 (Job #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.

Bugs fixed in 2016.2 Patch 14

	#1692106 (Job #96155) **
	    Improve the performance of group protections.

Bugs fixed in 2016.2 Patch 13

	#1653426 (Job #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.

	#1649639 (Job #94825) **
	    'p4 fstat' using a revision specification on an opened file
	    would hang if the file had ditto mapping. This has been fixed.

Bugs fixed in 2016.2 Patch 12

        #1647697 (Job #94951) **
            Referencing autoreloaded labels uses much less memory.

        #1640812 (Job #94621) **
            Certain server rejectList settings will no longer block replication.

Bugs fixed in 2016.2 Patch 11

	#1620427 (Job #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.

	#1618408 (Job #94152) **
	    Concurrent label create/delete of the same label no longer hangs.

	#1616854 (Job #94116) **
	    'p4 shelve -d' without any file arguments leaks memory.
	    This change fixes the issue.

Bugs fixed in 2016.2 Patch 10

	#1609799 (Job #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 (Job #93973) **
	    'p4 ldapsync -u' would only delete users if a spec depot were
	    present.  This has been fixed.

	#1609778 (Job #93871) **
	    'p4 where' run against replica using a partitioned or readonly
	    client could suppress output from additional commands run within
	    the same connection.

	#1602887 (Job #92645) **
	    Parallel sync performance through the proxy has been improved
	    for some scenarios.

Bugs fixed in 2016.2 Patch 9

	#1602713 (Job #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.

Bugs fixed in 2016.2 Patch 8

	#1595398 (Job #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 from the Commit Server. This has
	    been fixed to insure that the command fails when the transfer
	    fails.

	#1586878 (Job #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.

	#1584627 (Job #92894)
	    'p4 -ztag describe -S' would update the shelveAccess date even
	    though the shelved content was not displayed. This has has been
	    fixed.

	Upgrade of OpenSSL libraries to 1.0.2n

Bugs fixed in 2016.2 Patch 7

	#1565967 (Job #91885) **
	    Submitting a moved 'utf8' file using a pre-15.2 client
	    no longer results in a missing archive.

	#1564021 (Job #92442) **
	    'p4 resolve' now has an undoc flag '-dx' which can be used to
	    make the 3-way merge algorithm perform more like the unix
	    'diff3 -m' merge.  Typically merge tends to remove duplicate
	    lines in adjacent inserts from 'theirs' and 'yours', with this
	    flag all the lines in the inserts from both legs of the merge
	    will be inserted.

	#1550657 (Job #92435) **
	    User not able to submit an open stream with a file change
	    on a edge server. This is now fixed.

	#1549763 (Job #92443) **
	    Users auto-created by 'p4 login' would not have the Update time set
	    in the user spec.  This has now been fixed.

Bugs fixed in 2016.2 Patch 6

	#1529352 (Job #91971) **
	    Parallel sync performance has been improved for some scenarios
	    in which distribution of load across the transmit threads
	    was not an issue.

	#1528570 (Job #85788) **
	    'p4 revert -C client <path>' fails to revert moved files.

Bugs fixed in 2016.2 Patch 5

	#1514970 (Job #90330) **
	    'p4 copy' could miss needed copies in a complex case of
	    moves and earlier copies.

	#1513104 (Job #88954) **
	    The utf8 file type was not handled properly by clients older
	    than 2015.2 and the p4 java api.  The server now attempts to
	    work with these older clients by handling the byte-order-mark
	    in the server and having the server produce digests which
	    these older clients will expect.  Operation with utf8
	    files and these older clients will skip proxy caching also.
	    These older clients assume the BOM is present for the utf8
	    filetype, while 2015.2 and later clients can adapt to a
	    BOM being present or not.

	Upgrade of OpenSSL libraries to 1.0.2l

Bugs fixed in 2016.2 Patch 4

	#1506799 (Job #90653) * **
	    Application locked licenses now work with DVCS.

Bugs fixed in 2016.2 Patch 3

	#1497233 (Job #90088) **
	    For a specific use case, a branch resolve is scheduled instead
	    of a move resolve.  This is fixed by backing out change #1422325.

	#1495504 (Job #90632) **
	    Issuing a 'p4 fetch' that pulls archive content from a remote
	    server with 'lbr.autocompress' enabled can corrupt a local
	    ktext file if the revision librarian type is mismatched.

Bugs fixed in 2016.2 Patch 2

	#1484083 (Job #89648, #89890) **
	    The db.sendq entries for a failed parallel sync are now
	    immediately removed from db.sendq.

	#1483314 (Job #89040) *
	    'p4 print -o <a filename in the os temp directory>' will now
	    work even if a P4CLIENTPATH is set or the DVCS P4INITROOT is
	    set.  This is a new exception to the P4CLIENTPATH feature.

	#1481077, #1481305, #1483342 (Job #89051, #90160) * ** ***
	    SSL connections now allow use of TLSv1.1 and TLSv1.2 in addition
	    to the existing support for TLSv1.0.  Clients and servers will
	    choose the highest TLS version supported by both ends of the
	    connection; thus old clients and old servers will always use
	    TLSv1.0, and by default new clients connecting to new servers
	    will use TLSv1.2.

	    Two new configurables are provided to restrict the allowed TLS
	    versions when a new client connnects to a new server:
	        ssl.tls.version.min    [default=10]
	        ssl.tls.version.max    [default=12]
	    These default settings allow TLSv1.0, TLSv1.1, and TLSv1.2.

	    Each of these configurables can take one of the following
	    values:
	        10 specifies TLSv1.0
	        11 specifies TLSv1.1
	        12 specifies TLSv1.2
	   ssl.tls.version.min specifies the lowest TLS version that
	   will be accepted, and ssl.tls.version.max specifies the
	   highest TLS version that will be accepted.

	   Changes to these configurables on a server will not take
	   effect until the server is restarted.

	   Thus, to force use of a new client, the server can set
	       ssl.tls.version.min=11    (or 12)
	   because old clients support only TLSv1.0.

	   To force the use of TLSv1.1, set
	        ssl.tls.version.min=11
	        ssl.tls.version.max=11

	   To force the use of TLSv1.2, set
	        ssl.tls.version.min=12
	        ssl.tls.version.max=12

	    To allow TLSv1.1 or TLSv1.2 but exclude TLSv1.0, set
	        ssl.tls.version.min=11
	        ssl.tls.version.max=12

	    These configurables are designed to allow the server to restrict
	    the set of allowed TLS protocol versions, but they can be used
	    by clients as well; this is probably useful mostly for testing,
	    although it can be use to prevent connecting to potentially
	    vulnerable servers.  When used by a client these configurables
	    specify the lowest and highest TLS versions that will be offered.

	    Values of either configurable outside of the legal range will be
	    treated as if they were pinned to the nearest end of the range.
	    Thus values below 10 will be treated as 10; values above 12 will
	    be treated as 12.

	    Be careful not to set ssl.tls.version.min > ssl.tls.version.max
	    because then no clients will be able to connect.  In this case
	    you will need to change these settings on the command line, e.g.:
	        p4d -c"set ssl.tls.version.min=10"
	        p4d -c"set ssl.tls.version.max=12"
	    and then restart the server.

	    Note that if there are no allowed TLS versions common to the
	    client and the server, or if the server is not using SSL, then
	    the client will get an error similar to this:

	    Perforce client error:
	        SSL connect to ssl:host:1666 failed  (Connection reset by peer).
	        Remove SSL protocol prefix from P4PORT or fix the TLS settings.

	    If the client or server does not offer any protocol versions (eg,
	    because the client set ssl.tls.version.min > ssl.tls.version.max)
	    then the client will get an error similar to this:

	    Perforce client error:
	        SSL protocol: error:14077102:SSL routines:
	            SSL23_GET_SERVER_HELLO:unsupported protocol:

	    There are only two lines in this error message; the actual error
	    has the "SSL protocol:" line and the "GET_SERVER_HELLO" line
	    on a single line, but they are split here for readability.

	#1478875 (Job #89781) **
	    'p4 depot -f' would allow changing the depot type of a depot
	    that is not empty. This has been fixed.

	#1474602 (Job #89677) **
	    'p4 admin stop/restart' could cause a server crash if the
	    new configurable 'db.monitor.interval' had been set.

	#1473213 (Job #89657) **
	    'p4d -xx' could incorrectly declare "db.workingx/db.revsh
	    inconsistencies found," and incorrectly generate jnl.fix records,
	    in some situations where multiple shelves existed for the
	    same files.

	#1471463 (Job #89336) **
	    'p4 add ...' could generate many "Error object passed to database"
	    errors and fail to terminate when MaxScanRows or MaxLockTime
	    has been reached. This could also happen with 'p4 reconcile' or
	    'p4 status'. This behavior has been fixed.

Bugs fixed in 2016.2 Patch 1

	#1466749 (Job #89372) **
	    The fix for Job #88792 has caused a regression with changeview
	    entries in client syntax when ditto mappings are not present in
	    the client map. This has been fixed.

	#1465599 (Job #16821, #89204) * **
	    The configurable 'filesys.checklinks' may fail to prevent files
	    from being added when files are symlinks to directories. This
	    has been fixed. Also, this configurable is now honored for
	    'p4 reconcile' when detecting files to be added.

	#1465071 (Job #89311) **
	    The fetch/push/unzip commands might incorrectly declare a
	    file conflict for a file which was moved multiple times, to
	    different destinations, during its history.

	#1463745 (Job #86424) **
	    Edge Servers might halt replicating if an obliterate command
	    was run concurrently with a very large populate or submit command.

	#1458845 (Job #89052) **
	    A forwarding replica with lbr.replication=shared will no longer
	    attempt to update the (shared) archive area during the file
	    transfer phase of a forwarded 'p4 submit'. The cache-on-submit
	    behavior is still present for forwarding replicas with
	    lbr.replication set to either readonly or cache.

	#1424575 (Job #87152)
	    A new tool has been created to aid in converting a server instance
	    to Unicode mode.  Please contact Support for information and
	    availability of jnltool.pl.

Bugs fixed in 2016.2

	#1455848 (Job #88980) **
	    In replica chaining configurations, replicas which were not
	    directly connected to the master server were not processing
	    archive deletion operations arising from operations such as
	    submission of a binary+S file, deletion of a shelf, obliteration,
	    archive depot operations or retype +l commands.

	#1454129 (Job #81273) **
	    The diskspace command now supports long filenames on Windows.

	#1449303 (Job #85596) **
	    The 'logparse' command no longer attempts to open an erroneous
	    file when the structured log's configurable includes a path.

	#1445625 (Job #88728) **
	    The configurables rpl.awaitjnl.count and rpl.awaitjnl.interval
	    were inadvertently swapped; they are now corrected.

	#1439865 (Job #88350) **
	    If an error was encountered when opening an archive file for
	    write on the commit server during an edge submit, the commit
	    server might crash. The edge submit now reports the error
	    encountered and fails gracefully.

	#1432514 (Job #85257) **
	    'p4 server -c' prevented users from setting arbitrary
	    configuration values which were not specific to the server's
	    type. Now any valid configuration commands are supported.

	#1432475 (Job #88205) **
	    The 'rdb.lbr' tracking metrics are now aggregated to reflect
	    larger operations. Since the aggregated metrics might now more
	    readily exceed a tracking threshold, the 'rdb.lbr' tracking output
	    might be more likely to be written to the server log when the
	    'rpl' configurable is set to a value of two or greater.

	#1432037 (Job #78055) **
	    A delete of a stream containing associated unloaded clients
	    was not checking for these unloaded clients before completion.
	    This operation should be blocked with unloaded clients.

	#1431589 (Job #88189) **
	    The 'rdb.lbr' tracking metrics are now correctly reported
	    for the edge server's metadata pull thread when the 'rpl'
	    configurable is set to a value of two or greater.

	#1425966 (Job #88072) **
	    'p4 sync' was not scheduling resolves correctly when a file
	    was open for move/add over an existing deleted file.  Fixed.

	#1425400 (Job #88085) **
	    The number of fsync() calls for 'rdb.lbr' executed by
	    the commit server for coordinating the file content fetched
	    during a parallel submit though an edge server has been reduced.
	    In some environments, this can improve the performance of
	    parallel submit through an edge server.

	#1423738 (Job #87945) **
	    Correct Abort Retry Ignore message from 3rd party memory manager
	    on the Linux platform.

	#1424102 (Job #84137) **
	    The 'serverlog.file.N' configurable no longer allows invalid
	    filenames to be set.

	#1422877 (Job #85923) * **
	    'p4 submit -f reopen' could leave files readonly even when
	    they have been successfully submitted and reopened. This has
	    been fixed.

	#1422726 (Job #87949) **
	    Fixed the rev range recorded when running "p4 populate" with a
	    revision specifier.

	#1422325 (Job #87928) **
	    Fixed a special case where a deleted file produced an unnecesary
	    conflict on merge.

	#1418462 (Job #84067) **
	    The number of fsync() calls for 'rdb.lbr' has been reduced for
	    the most common replication behaviors, such as a replica's
	    metadata and archive pull threads. In some environments,
	    this can improve replication performance for some operations.

	#1417585 (Job #87802) **
	    The very first 'fetch -t' command issued against a server will
	    auto-create the 'tangent' depot in that server. Subsequent
	    commands issued by that same network session would get errors
	    if they referred to the tangent depot.

	#1414436 (Job #87083) **
	    If the domain record for a client exists on a commit server
	    but not on the edge server (probably due to a network problem),
	    this change now makes it possible to delete or reuse the client
	    namespace from the original edge server that first created it.

	#1412767 (Job #87638) *
	    The 'p4 init' command would write a small number of journal
	    records to the end of the file specified by P4JOURNAL, if set.
	    The local server initialization is now performed with -J off.

	#1411325 (Job #81360) **
	    A 'p4 fetch' command which transferred both a text (RCS) file whose
	    archive was already present in the destination server and a lazy
	    copy of that file, would leave the lazy copy corrupt. 'p4 verify'
	    would report 'MISSING!' and requests for the file's content would
	    report 'RCS checkout  failed!'.

	#1410971 (Job #87181) **
	    Correct the digest used to ensure that content is transferred
	    correctly to commands within triggers (such as a 'change-content'
	    trigger) when submitting a shelf. A shelf is implicitly submitted
	    to the commit server when a submit is run on an edge server.

	#1408027 (Job #87115) **
	    Deleting a client from an edge server when the commit server
	    is down would lead to inconsistencies between the servers.

	#1407749 (Job #87327) **
	    Deleting a pending change with an Identity, or deleting an empty
	    committed change with an Identity, incorrectly failed to delete
	    the database record in the db.changeidx table.

	#1406560 (Job #72500) **
	    'p4 describe' will now correctly display the working revision,
	    rather than the have revision, for shelved files.

	#1406440 (Job #71311) **
	    'p4 revert' 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.

	#1406332 (Job #81024) **
	    'p4 unload -o' of a client that gets interrupted could cause
	    a server crash.

	#1404063 (Job #78359) *
	    Parallel submit used with the '-s' client flag now includes
	    status output for all errors.

	#1401397 (Job #86837) * **
	    'p4 submit -f revertunchanged' will now revert the timestamp
	    along with the local file permissions if the modtime option is
	    enabled.  Caveat: this may not work when submitting via an edge
	    server.

	#1398598 (Job #86401) **
	    'p4 lock -g' no longer requires '-c <change>', and now allows
	    file arguments.

	#1397598 (Job #86850) **
	    It is no longer legal to define a depot named "..".

	#1397137 (Job #86855) **
	    Multi-threaded applications using the same connection could
	    disrupt the flow control of long running commands like submit.
	    This change prevents the server from executing any more callbacks
	    as soon as the problem is detected.

	#1393673 (Job #83614, #84042) *
	    The utf8 file type detection has changed.  Now a file
	    must have a utf8 byte order mark (BOM) to be detected as
	    a utf8 file type even for unicode mode servers.  Also,
	    there are new undocumented client side configurations
	    which can change utf8 file type behavior.

	#1393599 (Job #85393) **
	    'p4 populate' ignored the defaultChangeType configuration
	    setting. This has been fixed.

	#1391406 (Job #86555) **
	    'p4 clean' was allowed on an edge server using a client not
	    bound to that edge server. This has been fixed.

	#1390168 (Job #86435) **
	    'p4 server -c' would populate the DistributedConfig field with
	    optional settings when the command had run before and had set
	    non-optional configuration values already. This has been fixed.

	#1390030 (Job #79678) **
	    If the 'StreamAtChange' field in the Client spec was specified
	    before the 'Stream' field, it would be ignored. This has been fixed.

	#1388564 (Job #86608) *
	    A command-line alias may now use 'p4subst' to replace a pattern
	    with the empty string ("").

	#1387597 (Job #86513) *
	    Defining a command-line alias for a tagged-mode command fails with
	    the error "command did not return a spec."

	#1384469 (Job #86476) **
	    Certain formats of structured integrity logs could cause a crash.

	#1384202 (Job #86041) **
	    Change handling of utf8 server type files when working with
	    clients <= 2015.1.  For these clients, the utf8 type files
	    are treated as server type text, so as to avoid any additional
	    line-ending.  These files will not have associated BOMs (Byte
	    order marks) when they are synced in this case.
	    This has no bearing with clients >= 2015.2.

	#1382996 (Job #74886, #86396) **
	    'p4 clean' would fail to sync files when needed when they
	    are exclusively opened by another client. This has been
	    fixed.

	#1381955 (Job #84426) **
	    'p4 submit' from an edge server using 'revertunchanged' could
	    leave orphaned exclusive locks if all files in the change
	    were reverted and some were exclusively locked. This has been
	    fixed.

	#1380083 (Job #86262) **
	    Improve performance around structured logs. Log writers will
	    now only acquire a shared lock on the 'logrotate' server meta
	    lock when there are actually writes to the structured logs.

	#1380037 (Job #85991) **
	    Report to stderr (except on Windows), and syslog or
	    the event log (as supported by the platform), any errors
	    encountered when writing to the server log or a structured log.

	#1378294 (Job #86222) **
	    Following a 'fetch -t' command, the 'resubmit' command must be
	    used, with the '-R' flag to resume after any merge conflicts are
	    resolved, to coordinate the resubmit of the tangented changes. The
	    'submit' command now checks for an accidental attempt to submit a
	    change that should have been run as 'resubmit -R', and issues a
	    message rather than allowing the submit.

	#1376147 (Job #86129) *
	    Using a command-line alias for a 'p4 annotate' command displayed
	    extra blank lines in the output.

	#1369654 (Job #85547) * **
	    Fixed a bug where a "resolve -am" resulting in a lazy copy
	    would not set the modtime correctly on the workspace file.

	#1368672 (Job #85680) **
	    Improve concurrency around structured logs. Log writers will
	    now acquire a shared lock instead of an exclusive lock on the
	    'logrotate' server meta lock to block log rotations.

	#1367706 (Job #85767) **
	    The push/fetch/zip commands no longer allow an execution which
	    would export half of a move operation (a move/delete without the
	    corresponding move/add, or vice versa). To export the affected
	    changelist, either widen the DepotMap field in the remote spec
	    to include both sides of the move, or narrow the map to exclude
	    both sides of the move.

	#1364433 (Job #75866) **
	    Change 996993 is reverted, as the performance impact was large.

	#1364284 (Job #85659) **
	    When integrating into a renamed file, the rename is disregarded
	    if it appears to lead outside of the target branch, based on
	    the broader branch mapping that can be inferred from the source
	    and target file.

 	#1355889 (Job #85346) **
 	    Fixed a memory leak in 'p4 verify'.

	#1354073 (Job #85278) **
	    A command running on a replica could fail to transfer an archive
	    file from the master server, reporting that the file was
	    corrupted, if the file was a compressed binary filetype and if
	    the replica had chosen to transfer the file without uncompressing
	    and recompressing it. This problem was introduced by #1020818.

	#1352542 (Job #85157) *
	    The MacOSX command line client could fail to complete a parallel
	    sync if two or more parallel transfers attempted to create the
	    same directory in the filesystem at the same time; the failing
	    file transfer would print: "mkdir: /path/to/dir: File exists".

	#1341599 (Job #85012) **
	    The error set by a failed post-command trigger might not have
	    had the trigger name set properly.

	#1341589 (Job #84809) ***
	    Using the 'proxy.monitor.level' configurable when starting the
	    proxy could result in significant physical writes to the device
	    on which the pdb.monitor file was located. These physical writes
	    could degrade performance of the proxy. The physical writes for
	    the pdb.monitor file when using the 'proxy.monitor.level'
	    configurable have been significantly reduced.

	#1341013 (Job #84992) **
	    If an archive file for a local shelf on an Edge Server should
	    become damaged or missing, deleting the shelf, or deleting or
	    replacing that file in the shelf, will now cancel any pending
	    file transfer for that file which was listed in 'pull -l'.

	#1337988 (Job #84848) ** *
	    'p4 -Zproxyverbose sync --parallel=...' now correctly displays the
	    diagnostic information about which files were delivered from the
	    proxy's cache.

	#1335377 (Job #84710) **
	    The fix for bug 70118 is generalized, and now applies to all
	    server platforms.

	#1334631 (Job #84473) **
	    A replica server which has been configured to replicate archive
	    files from its master will now correctly replicate the non-lazy-copy
	    archive files in any task stream which contains files of type +S.

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

Major new functionality in 2016.1

	#1357095 (Job #5897) * **
	    Ditto (&) mappings are now supported in client views.
	    These allow a client to map files from the depot into multiple
	    locations in the workspace in a one-to-many fashion.
	    Files mapped with this flag are read-only, and may not be open by
	    'p4 edit', etc. The same files may also be normally mapped, allowing
	    a single copy of the file in the workspace to be openable.
	    Each sync'ed copy of the same file has it's own have record, and so
	    can be sync'ed to a different revision from the other copies of the
	    same file. To sync a specific copy of a file, you must specify the
	    path in client syntax.
	    Existing clients will be able to sync files mapped with ditto
	    mappings. In order for 'p4 fstat' to show details about ditto mapped
	    files, p4 must either be updated or the '-zexpandAndmaps' global
	    flag must be provided.

	#1320223 (Job #72847, #83427) **
	    A new command 'p4 reshelve' copies shelved files from an existing
	    shelf into either a new shelf or one that has already been created.
	    The command executes on the server and does not require a client
	    workspace. See 'p4 help reshelve'.

	#1243015 (Job #79913) * **
	    The p4 command line, run interactively, will now prompt for login
	    if a command that requires authentication is run when the user is
	    not authenticated. If the login is successful, the original command
	    continues.

	#1241816 (Job #81114) *
	    The p4 command line now supports a simple, yet powerful,
	    command aliasing feature. Aliases are read from your
	    ~/.p4aliases file (p4aliases.txt on Windows platforms), and are
	    applied to the command you entered before it is sent to the
	    server for execution. Full documentation for the aliasing
	    features is available on the Perforce website or by issuing
	    'p4 aliases help'.

	#1214192 (Job #78800) **
	    Provided that both DVCS partner servers are at 2016.1 or higher
	    levels, the DVCS fetch/push protocols now support copying a
	    shelf from one server to another. Specify the shelf to copy with
	    the '-s NNN' flag to 'p4 fetch', 'p4 push' or 'p4 zip'. Copying
	    a shelf always results in the creation of a new shelf in the
	    destination server; existing shelves, even if similar, are not
	    overwritten. The new shelf will be owned by the user issuing
	    the push or fetch command, even if the shelf being copied was
	    owned by some other user. The shelve-submit and shelve-commit
	    triggers in the destination server are run for the new shelf.

Minor new functionality in 2016.1

	#1367341 (Job #84856) **
	    'p4 -Ztag info' can report low level TCP connection information
	    in a field 'transportInfo' if it is available on the platform.
	    This field may have multiple lines of output which may affect
	    simple parsers.

	#1351675 (Job #2620) **
	    'p4 user -d' and 'p4 group -d' now feature a new '-F' flag.
	    This flag removes the user or group members from groups, and
	    also removes the user or group from the protection table when
	    deleting the user or group. See 'p4 help user' and 'p4 help
	    group' for details.

	#1340295 (Job #79558) **
	    'p4 switch' now features a '-Rx' flag. This flag controls which
	    actions that switch reconciles when changing streams.
	    see 'p4 help switch' for more details.

	#1339945 (Job #84841) *
	    P4IGNORE files now support escapping '#' comment characters with '\'
	    so that filenames beginning with '#' characters may now be ignored.

	#1324084 (Job #53693) **
	    'p4 protects' now features a '-M' flag which unlike '-m' applies
	    exclusions against the specified path when calculating the maximum
	    permission.

	#1317819 (Job #84182) **
	    Form triggers now provide a new 'specdef' variable that provides
	    the definition for the form's spec.

	#1316579 (Job #52073) **
	    The 'route.csv' log can now be defined in order to log the full
	    network route of authenticated client connections. Errors related
	    to net.mimcheck are also logged against the related hop.

	#1315758 (Job #81357) **
	    Entries in the client spec field 'ChangeView' may now be provided
	    in client syntax as well as depot syntax.

	#1312518 (Job #76643, #76046) **
	    'p4 server -c edge-server|commit-server <serverID>' runs
	    configuration commands for edge or commit servers.
	    'p4 server -o -l <serverID>' shows current distributed
	    configuration settings for a commit or edge server as well.

	#1307507 (Job #11948) **
	    'p4 group' now has a 'MaxOpenFiles' field, which can be used to
	    prevent users from accidentally opening too many files in a single
	    command. See 'p4 help maxopenfiles'.

	#1306511 (Job #70917) **
	    'p4 changes <filepath>#have' now accesses the db.have table
	    lockless for the duration of the compute phase.

	#1265017 (Job #5626) **
	    'p4 dirs' and 'p4 files' now have a '-i' ignore case flag that
	    can be used to list directories/files case-insensitive against
	    a case-sensitive server.

	#1261234 (Job #76243) **
	    'p4 labelsync/tag <filespec>' where the filespec is a path that
	    does not include a client or label will execute the compute
	    phase lockless for the db.rev table.

	#1248091 (Job #77847) * **
	    Using 'p4 switch' with DVCS no longer removes your current
	    working directory when switching to a branch that does not
	    contain that directory.

	#1245813 (Job #75242) **
	    'p4 -Ztag change -o' now displays the access time for shelved
	    files.  An admin can make use of this information to remove old
	    or abandoned shelves.  Note, accessing the shelf in anyway will
	    update the access time except for 'p4 describe -s -S <shelf>'.

	#1245231 (Job #81003) **
	    The 'p4 remote' option "nocopyrcs" can be set to disable the DVCS
	    fetch/push optimization which copies entire RCS ,v files as a
	    single file transfer.

	#1243936 **
	    'p4 integrate -v' has been deprecated, having been made obsolete
	    by the introduction of 'p4 populate' in the 2012.1 release.

	#1243887 (Job #63964) **
	    'p4 annotate' now features a '-T' flag to align the leading part of
	    each line of output to a tab stop.  See 'p4 help annotate'.

	#1240991 (Job #79755) **
	    SSO authentication triggers may now be used in with when native LDAP
	    authentication is enabled. In this case, users who authenticate by
	    LDAP can set a client-side SSO script instead of being prompted for
	    a password. Provided that the SSO trigger succeeds, the active LDAP
	    configurations are used to confirm that the user exists in at least
	    one LDAP server; the user must also pass the group authorization
	    check if configured. SSO triggers will not be called for users who
	    do not authenticated against LDAP.

	#1238714 (Job #79559) **
	    The owner of a shelf can now delete it using the '-d -f' options
	    even if there are pending resolves that involve files from that
	    shelf.

	#1237288 (Job #79804) **
	    The new option '--me' can be used with 'p4 changes' and
	    'p4 clients/labels/branches' as a shorthand for '-u $P4USER'.

	#1236486 (Job #80391) **
	    Provided that both the local servers and the shared server are at
	    2016.1 or higher, DVCS configurations that employ files of
	    type +l can now use the new --remote flag on the 'p4 edit',
	    'p4 delete', and 'p4 revert' commands to lock +l file types
	    exclusively on the shared server, with the locks released
	    automatically when the modified files are pushed. Note that
	    the shared server must be configured as a Commit Server to
	    enable this support, and must set server.allowremotelocking=1.

	#1232507 (Job #79942) **
	    'p4 fetch -v' and 'p4 push -v' are now less verbose by default,
	    and the new '-O' flag allows you to increase the level of
	    verbosity if you choose. See 'p4 help fetch' and 'p4 help push'.

	#1232022 (Job #53806) **
	    'p4 verify' now supports the '-A' flag to allow files in archive
	    depots to be verified prior to issuing the 'p4 restore' command.

	#1231264 (Job #80305) **
	    The native LDAP features now support performing LDAP searches with
	    paged results. This is useful when the returned results set could be
	    larger than the LDAP server's allowed limits. To enable this, set
	    the new 'auth.ldap.pagesize' configurable to a value less than the
	    LDAP servers result limit.

	#1230024 (Job #979) **
	    'p4 protect' now supports comments (## prefix) which can be
	    either interlaced with protection entries or appended to them.

	        ## prevent update to this area of the repo
	        write user mike * -//depot/readonly/location/...
	        write user * 10.1.1.1 //depot/secret/location/... ## Jeff

	    P4Admin comments and 2016.1 native stored comments are currently
	    not compatible.

	    A new long option '--convert-p4admin-comments' has been added to
	    the 'p4 protect -o' which will convert any of the P4Admin style
	    comments into the new improved format.  Once saved the 'p4 protect'
	    table can be edited and saved with the comments remaining intact
	    (however as of this release you can never go back to the P4Admin
	    tool for your protections after the conversion - and while the
	    protections is only a small part of the admin tool its linked
	    very closely together).

	    e.g.   Convert and save:

	    p4 protect --convert-p4admin-comments -o | p4 protect -i

	#1227849 (Job #79439) **
	    When syncing open moved files (when either open for edit and
	    moved in the depot, or open for move and edited in the depot),
	    a resolve is scheduled against the revision of the other file
	    that corresponds to the revision range specified on the synced
	    file.  If no such revision exists, the older behavior (syncing
	    to the head revision of an edited file, or the move/add rev of
	    a moved file) is used instead.

	#1225119 (Job #78430) **
	    'p4 fstat' now displays the working revision (workRev) for opened
	    files.  The working revision is usually the same as the have
	    revision (haveRev) but may differ if the file is explicitly synced
	    to an older revision while open, or implicitly synced as it is
	    opened.

	#1223153 (Job #78281,#79086) **
	    The 'p4 remote' spec now supports the ArchiveLimits: field. This
	    field may be used to establish limits on the number of archives
	    desired in a DVCS repo. These limits are enforced by the 'p4 fetch'
	    command. The typical expected use of this field is for scenarios
	    involving a mix of small (source code) files, where all archives
	    are retained, and large (media asset) files, where only the N most
	    recent archives are retained in the DVCS repo.

	#1218702 (Job #80232) **
	    New flag '-s spec' for 'p4 protects' allows the 'super' user to
	    run the command using the contents of the file in the spec depot
	    rather than the current protections table.  This allows for
	    back-in-time browsing of protection spec changes. Note that
	    protects output will be based on current group data and is
	    therefore not guaranteed to be completely accurate.

	#1217261 (Job #73699) **
	    New flag '-f' for 'p4 dbstat' to show free pages in btree
	    files.  Allows admins to view into how full the db files are
	    and how much space can be recovered or will be reused before
	    the files grow again.

	#1214190 (Job #72880) **
	    'p4 renameuser' now supports a -f flag to bypass the checks
	    against accidentally merging two unrelated users.

	#1214183 (Job #75237) **
	    The 'p4 counter' and 'p4 key' commands now accept the paired
	    flags '--from' and '--to'. A command of the form 'p4 counter
	    --from=XYZ --to=abc my-counter' sets the counter 'my-counter'
	    to the value 'abc' only if it currently has the value 'XYZ'.

	#1214182 (Job #75236) **
	    The 'p4 counter' and 'p4 key' commands now accept the '-v'
	    argument when setting or incrementing a key. If -v is specified,
	    the previous value of the counter or key is displayed as part
	    of the command output.

Bugs fixed in 2016.1 Patch 16

	#1565883 (Job #91885) **
	    Submitting a moved 'utf8' file using a pre-15.2 client
	    no longer results in a missing archive.

	#1528859 (Job #91971) **
	    Parallel sync performance has been improved for some scenarios
	    in which distribution of load across the transmit threads
	    was not an issue.

	#1513175 (Job #88954) **
	    The utf8 file type was not handled properly by clients older
	    than 2015.2 and the p4 java api.  The server now attempts to
	    work with these older clients by handling the byte-order-mark
	    in the server and having the server produce digests which
	    these older clients will expect.  Operation with utf8
	    files and these older clients will skip proxy caching also.
	    These older clients assume the BOM is present for the utf8
	    filetype, while 2015.2 and later clients can adapt to a
	    BOM being present or not.

Bugs fixed in 2016.1 Patch 15

	#1502576 (Job #90943, #71311) **
	    'p4 revert' in a federated environment could leave orphaned
	    locks after a filetype resolve that changed files from '+1'
	    to filetypes without '+l'. This has been fixed.

	#1497158 (Job #90745) **
	    A particular code path trying to match moved revisions could
	    cause integrate/interchanges to crash.

Bugs fixed in 2016.1 Patch 14

	#1484097 (Job #89648, #89890) **
	    The db.sendq entries for a failed parallel sync are now
	    immediately removed from db.sendq.

	#1474546 (Job #89677) **
	    'p4 admin stop/restart' could cause a server crash if the
	    new configurable 'db.monitor.interval' had been set.

	#1473097 (Job #89657) **
	    'p4d -xx' could incorrectly declare "db.workingx/db.revsh
	    inconsistencies found," and incorrectly generate jnl.fix records,
	    in some situations where multiple shelves existed for the
	    same files.

	#1471274 (Job #89336) **
	    'p4 add ...' could generate many "Error object passed to database"
	    errors and fail to terminate when MaxScanRows or MaxLockTime
	    has been reached. This could also happen with 'p4 reconcile' or
	    'p4 status'. This behavior has been fixed.

Bugs fixed in 2016.1 Patch 13

	#1466748 (Job #89372) **
	    The fix for Job #88792 has caused a regression with changeview
	    entries in client syntax when ditto mappings are not present in
	    the client map. This has been fixed.

	#1465495 (Job #16821, #89204) * **
	    The configurable 'filesys.checklinks' may fail to prevent files
	    from being added when files are symlinks to directories. This
	    has been fixed. Also, this configurable is now honored for
	    'p4 reconcile' when detecting files to be added.

	#1464985 (Job #89311) **
	    The fetch/push/unzip commands might incorrectly declare a
	    file conflict for a file which was moved multiple times, to
	    different destinations, during its history.

	#1463567 (Job #86424) **
	    Edge Servers might halt replicating if an obliterate command
	    was run concurrently with a very large populate or submit command.

Bugs fixed in 2016.1 Patch 12

	#1459845 (Job #89040) *
	    'p4 print -o <a filename in the os temp directory>' will now
	    work even if a P4CLIENTPATH is set or the DVCS P4INITROOT is
	    set.  This is a new exception to the P4CLIENTPATH feature.

	#1458557 (Job #89052) **
	    A forwarding replica with lbr.replication=shared will no longer
	    attempt to update the (shared) archive area during the file
	    transfer phase of a forwarded 'p4 submit'. The cache-on-submit
	    behavior is still present for forwarding replicas with
	    lbr.replication set to either readonly or cache.

	#1455848 (Job #88980) **
	    In replica chaining configurations, replicas which were not
	    directly connected to the master server were not processing
	    archive deletion operations arising from operations such as
	    submission of a binary+S file, deletion of a shelf, obliteration,
	    archive depot operations or retype +l commands.

	#1455848 (Job #88980) **
	    In replica chaining configurations, replicas which were not
	    directly connected to the master server were not processing
	    archive deletion operations arising from operations such as
	    submission of a binary+S file, deletion of a shelf, obliteration,
	    archive depot operations or retype +l commands.

Bugs fixed in 2016.1 Patch 11

	#1453353 (Job #66097) **
	    'p4 monitor terminate' can now terminate processes that are
	    blocked waiting for client input.  To enable this type of
	    process monitoring set the configurable 'db.monitor.interval'
	    to a value in seconds. A value of '30' for example would mean
	    that every 30 seconds the process will check to see if its
	    been marked for termination.

Bugs fixed in 2016.1 Patch 10

	#1445531 (Job #88728) **
	    The configurables rpl.awaitjnl.count and rpl.awaitjnl.interval
	    were inadvertently swapped; they are now corrected.

	#1447396 (Job #88717) **
	    Concurrent access to the same label was not possible due to the
	    incorrect lock mode (exclusive) taken against the labelEntity.

Bugs fixed in 2016.1 Patch 8

	#1442073 (Job #16821) * **
	    A new configurable 'filesys.checklinks' can be used to prevent
	    files being added that have a symlink in their directory path.
	    When this configurable is set to '1', trying to 'p4 add' a file
	    that is symbolically linked below the client root will fail.
	    Setting this configurable to '2' allows the user to bypass the
	    check by using the '-f' (force) option.

	#1441036 (Job #87086) **
	    When expanding keywords, if one of them is 'Author' then a lookup
	    of the change description is required.  This should be lockless.

	#1438810 (Job #88380) **
	    Unicode LDAP query results were not being handled correctly on
	    Windows servers in unicode mode, which could have caused the server
	    to crash. This has been fixed.

Bugs fixed in 2016.1 Patch 7

	#1430995 (Job #88180) **
	    'p4 info' is now permittied if the server is running with an
	    expired license.

	#1430566 (Job #87773) **
	    'p4 integrate' will now do an exhaustive scan of direct credit
	    to attempt to establish that no integration is needed prior to
	    loading any indirect credits.

Bugs fixed in 2016.1 Patch 6

	#1429825 (Job #88071) **
	    'p4 protect' command will now reject invocation from the P4Admin
	    tool if (new to 2016.1) '##' comments have been added to the
	    protection table.

	#1423363 (Job #87945) **
	    Correct Abort Retry Ignore message from 3rd party memory manager
	    on the Linux platform.

	#1417623 (Job #87802) **
	    The very first 'fetch -t' command issued against a server will
	    auto-create the 'tangent' depot in that server. Subsequent
	    commands issued by that same network session would get errors
	    if they referred to the tangent depot.

	#1416148 (Job #69001) **
	    'p4 license' may now be used to install a new license when the
	    server is unlicensed or the license has expired.  The following
	    commands are also allowed when running with an expired license:
	    'p4 login', 'p4 admin stop' and 'p4 admin restart'.

	#1413722 (Job #87676) **
	    Performance for parallel 'p4 submit' through an edge server has
	    been improved by batching file transfers and reducing the
	    contention on the database transfer table.

	#1412767 (Job #87638) *
	    The 'p4 init' command would write a small number of journal
	    records to the end of the file specified by P4JOURNAL, if set.
	    The local server initialization is now performed with -J off.

Bugs fixed in 2016.1 Patch 5

	#1411350 (Job #81360) **
	    A 'p4 fetch' command which transferred both a text (RCS) file whose
	    archive was already present in the destination server and a lazy
	    copy of that file, would leave the lazy copy corrupt. 'p4 verify'
	    would report 'MISSING!' and requests for the file's content would
	    report 'RCS checkout  failed!'.

	#1410893 (Job #87181) **
	    Correct the digest used to ensure that content is transferred
	    correctly to commands within triggers (such as a 'change-content'
	    trigger) when submitting a shelf. A shelf is implicitly submitted
	    to the commit server when a submit is run on an edge server.

	#1410428 (Job #87304) **
	    On Windows when running a .exe trigger from the depot, the Server
	    may fail to remove the temporary .exe file. This has been corrected.

	#1409450 (Job #87294) **
	    'p4 clean' would not delete files that were not present in the
	    depot if they were in an area of the client workspace mapped to
	    a read-only path: mapped by a ChangeView entry, a ditto mapping
	    or mapped to a remote depot. New files under these paths are now
	    deleted by 'p4 clean'.

	#1407749 (Job #87327) **
	    Deleting a pending change with an Identity, or deleting an empty
	    committed change with an Identity, incorrectly failed to delete
	    the database record in the db.changeidx table.

Bugs fixed in 2016.1 Patch 4

	#1405586 (Job #87218) **
	    Fixed a performance problem introduced by change 1315758 when
	    syncing files to a label that contains files outside of the path
	    specified, not mapped to the client or excluded by protections.

Bugs fixed in 2016.1 Patch 3

	#1404274 (Job #87179) **
	    Fixed a performance problem introduced by change 1227849 when
	    syncing a large number of files to #0 with some opened for move.

	#1401824 (Job #87006) **
	    Setting dm.changeview.openable=1 will allow files restricted by
	    a changeView to be opened with the pre-16.1 behavior. These files
	    can be opened and shelved, but cannot be submitted.

	#1398982 (Job #87036) **
	    Comments in the protections table no longer cause gaps in the
	    tagged output of 'p4 protect -o'. See p4apinotest.txt more details.

	#1397598 (Job #86850) **
	    It is no longer legal to define a depot named "..".

	#1396903 (Job #86855) **
	    Multi-threaded applications using the same connection could
	    disrupt the flow control of long running commands like submit.
	    This change prevents the server from executing any more callbacks
	    as soon as the problem is detected.

Bugs fixed in 2016.1 Patch 2

	#1395783 (Job #86930) **
	    Setting auth.autologinprompt=0 will disable the automatic login
	    prompting feature.

	#1395197 (Job #25700) **
	    'p4 info' against a server configured to use P4AUTH would always
	    return userName *unknown* in tagged output mode. The P4AUTH server
	    is now contacted to check if the user exists: this only applies
	    for tagged output mode when the '-s' flag is not provided. The
	    new behavior can be disabled by setting info.p4auth.usercheck=0.

	#1394382 (Job #86755) **
	    Trying to send a large (>1GB) message to the client would
	    cause a communication hang between the client and server.

	#1394035 (Job #86785) **
	    A ctrl-C (or client failure) of a 'p4 edit' command against an
	    Edge Server could leave orphaned lock records of +l files -
	    should the dropped client connection not be caught in time.

	#1391673 (Job #86740) **
	    ChangeView mappings for depot paths that are mapped to the client,
	    but are partially overridden would cause those overridden paths to
	    be considered readonly. This has been fixed.

	#1391182 (Job #86031) **
	    'p4 reshelve' failed to copy db.resolvex records correctly. This
	    prevented files opened for move from being reshelved and the
	    unshelved. This has been fixed.

	#1388564 (Job #86608) *
	    A command-line alias may now use 'p4subst' to replace a pattern
	    with the empty string ("").

	#1387597 (Job #86513) *
	    Defining a command-line alias for a tagged-mode command fails with
	    the error "command did not return a spec."

Bugs fixed in 2016.1 Patch 1

	#1386575 (Job #86514) **
	    Syncing to an 'autoreload' label could crash the server.

	#1386381 (Job #86524) **
	    The server consistency check command 'p4d -xx' now does not
	    check for missing db.workingx or db.change records that
	    correspond to a db.revsh record. Now db.revsh records may
	    exist without these when promoted shelves are used in a
	    federated environment.

	#1385588 (Job #86505) *
	    On Unix platforms, variables set with 'p4 set' would override
	    those set in the environment: this was inconsistent with the
	    existing behaviour on Windows. Environment variables now take
	    priority over variables set in the P4ENVIRO file with 'p4 set'.

	#1384452 (Job #74886, #86396) **
	    'p4 clean' would fail to sync files when needed when they
	    are exclusively opened by another client. This has been
	    fixed.

	#1384027 (Job #84426) **
	    'p4 submit' from an edge server using 'revertunchanged' could
	    leave orphaned exclusive locks if all files in the change
	    were reverted and some were exclusively locked. This has been
	    fixed.

	#1383934 (Job #86041) **
	    Change handling of utf8 server type files when working with
	    clients <= 2015.1.  For these clients, the utf8 type files
	    are treated as server type text, so as to avoid any additional
	    line-ending.  These files will not have associated BOMs (Byte
	    order marks) when they are synced in this case.
	    This has no bearing with clients >= 2015.2.

	#1383644 (Job #85547) * **
	    Fixed a bug where a "resolve -am" resulting in a lazy copy
	    would not set the modtime correctly on the workspace file.

	#1379802 (Job #86262) **
	    Improve performance around structured logs. Log writers will
	    now only acquire a shared lock on the 'logrotate' server meta
	    lock when there are actually writes to the structured logs.

	#1379670 (Job #85991) **
	    Report to stderr (except on Windows), and syslog or
	    the event log (as supported by the platform), any errors
	    encountered when writing to the server log or a structured log.

	#1378660 (Job #85882 ) **
	    'p4 server -c edge-server' now allows configuration of more
	    than just three 'startup.' threads. Also 'p4 server -o -l'
	    will display them all rather than just the first three.

	#1378324 (Job #86222) **
	    Following a 'fetch -t' command, the 'resubmit' command must be
	    used, with the '-R' flag to resume after any merge conflicts are
	    resolved, to coordinate the resubmit of the tangented changes. The
	    'submit' command now checks for an accidental attempt to submit a
	    change that should have been run as 'resubmit -R', and issues a
	    message rather than allowing the submit.

	#1378064 (Job #85458) **
	    'p4 copy' could produce a librarian error when attempting to copy
	    a source file that was moved and then deleted.  Fixed.

Bugs fixed in 2016.1

	#1378294 (Job #86222) **
	    Following a 'fetch -t' command, the 'resubmit' command must be
	    used, with the '-R' flag to resume after any merge conflicts are
	    resolved, to coordinate the resubmit of the tangented changes. The
	    'submit' command now checks for an accidental attempt to submit a
	    change that should have been run as 'resubmit -R', and issues a
	    message rather than allowing the submit.

	#1378013 (Job #85458) **
	    'p4 copy' could produce a librarian error when attempting to copy
	    a source file that was moved and then deleted.  Fixed.

	#1369710 (Job #85876) **
	    'p4 submit --parallel' was not supported in a federated
	    environment when the commit server is on a Windows platform.
	    Trying to do this in this scenario now causes the submit to
	    proceed without using the parallel threads. Also this has
	    been documented in 'p4 help submit'.

	#1368620 (Job #85851) *
	    'p4 clone' was failing to copy the "Options:" values from the
	    remote spec on the central server, and was instead using a
	    hard-coded "Options: unlocked nocompress" for the 'origin' remote.

	#1366865 (Job #79423) **
	    'p4 changes' would ignore a client's ChangeView if the specified
	    path matched a sufficient number of revisions, invoking a specific
	    optimization. This has been fixed.

	#1366778 (Job #85680) **
	    Improve concurrency around structured logs. Log writers will
	    now acquire a shared lock instead of an exclusive lock on the
	    'logrotate' server meta lock to block log rotations.

	#1365819 (Job #85738) *
	    P4IGNORE files inside directories that should have been ignored by
	    P4IGNORE were being read, and any reverse rules were being applied
	    within that directory. These files are no longer being read.

	#1365347 (Job #85376) **
	    Fix for false database corruption error when long descriptions
	    are updated concurrent to readers reading the same
	    description.

	#1364433 (Job #75866) **
	    Change 996993 is reverted, as the performance impact was large.

	#1362824 (Job #85371) **
	    'p4 sync --parallel=..' using multiple file arguments could
	    fail to transfer some files if any of the file paths did not
	    contain enough data to use parallel threads. This has been fixed.

	#1357895 (Job #85404) **
	    When LDAP based user auto-creation is enabled, if the 'p4 ldap'
	    spec has the 'downcase' option enabled, then the new user will
	    be created with a lower case username.

 	#1356056 (Job #85346) **
 	    Fixed a memory leak in 'p4 verify'.

	#1355500 (Job #85298) **
	    'p4 sync -r' and 'p4 switch -r' could fail to update a file
	    that was open on another client with the new depot path.
	    This has been fixed.

	#1354741 (Job #79424) **
	    The server consistency check command 'p4d -xx' now reports
	    invalid arguments and allows the user to just provide a
	    single table argument to perform all checks for that table.

	#1354073 (Job #85278) **
	    A command running on a replica could fail to transfer an archive
	    file from the master server, reporting that the file was
	    corrupted, if the file was a compressed binary filetype and if
	    the replica had chosen to transfer the file without uncompressing
	    and recompressing it. This problem was introduced by #1020818.

	#1352542 (Job #85157) *
	    The MacOSX command line client could fail to complete a parallel
	    sync if two or more parallel transfers attempted to create the
	    same directory in the filesystem at the same time; the failing
	    file transfer would print: "mkdir: /path/to/dir: File exists".

	#1349284 (Job #83729) **
	    Configuring a readonly client by adding the 'Type' field only
	    succeeded if it was placed after the 'Options' field.

	#1348225 (Job #85019) *
	    The default P4IGNORE rules no longer match directories named the
	    same as the value of P4CONFIG.

	#1341013 (Job #84992) **
	    If an archive file for a local shelf on an Edge Server should
	    become damaged or missing, deleting the shelf, or deleting or
	    replacing that file in the shelf, will now cancel any pending
	    file transfer for that file which was listed in 'pull -l'.

	#1337988 (Job #84848) ** *
	    'p4 -Zproxyverbose sync --parallel=...' now correctly displays the
	    diagnostic information about which files were delivered from the
	    proxy's cache.

	#1335377 (Job #84710) **
	    The fix for bug 70118 is generalized, and now applies to all
	    server platforms.

	#1334196 (Job #83965) **
	    Removing the client.readonly.dir setting from a server with one
	    or more clients of Type: readonly already defined makes those
	    clients unusable until the configuration setting is restored. This
	    situation is now diagnosed with a more precise error message.

	#1333068 (Job #84451) **
	    Issuing control-C during submit from a 2015.2 Edge Server
	    using submit.unlocklocked could leave files locked on the
	    Commit Server which were difficult to unlock. This has been
	    fixed.

	#1332907 (Job #84705) **
	    A failed 'p4 fetch' or 'p4 push' operation now removes any
	    archive files which it copied to the destination server prior
	    to the failure.

	#1330870 (Job #84661) **
	    'p4 renameuser' now re-indexes any jobs owned by the renamed user.

	#1327174 (Job #83931) **
	    'p4 istat' will now run directly against an edge server rather
	    than be forwarded to a commit server.

	#1324686 (Job #75521) **
	    'p4 labels -e label.*' would fail to match labels due to the
	    processing of '.' adjacent to '*' wildcard.

	#1324692 (Job #84006) **
	    'p4 submit' from an Edge Server using revertunchanged would
	    leave reverted files writable. This has been fixed.

	#1324437 (Job #84468) **
	    A parallel sync via a proxy might not distribute the file transfer
	    load across all the transmit threads as fairly as it should.

	#1323707 (Job #84436, #84437) **
	    'p4 journals' now displays the full error message text for
	    a failed checkpoint or journal entry. Also, if a checkpoint failed
	    due to the checkpoint filesystem being mounted read-only, a
	    checkpoint-failed entry is now written in db.ckphist.

	#1323224 (Job #84441) *
	    'p4 clone' would mis-handle depot file paths containing spaces.

	#1322105 (Job #84375) **
	    The 'SearchBindPasswd' field of the 'p4 ldap' may now be quoted.
	    This allows '#' characters to be used in the password without
	    being interpreted as the start of a comment.

	#1321747 (Job #84368) **
	    All replicas of a Commit Server now accept and process the
	    'opened -x' command. Prior to this change, only Edge Server
	    replicas did so.

	#1321128 (Job #80987) **
	    Selection of a base when merging a move operation was improved
	    for a particular case involving a complex sequence of previous
	    move operations.

	#1319794 (Job #83748) **
	    Servers with structured server logs configured will no longer
	    stop responding if a trigger is defined which executes automated
	    'kill' commands on server sub-processes.

	#1318024 (Job #75136, #75135, 71853, 85501) **
	    Parallel sync and submit commands will not fail when
	    net.parallel.max is unset or the requested number of parallel
	    threads exceeds net.parallel.max. Instead the command will
	    proceed without using parallel threads, or will use the max
	    number of allowed threads. In these cases an informational
	    message will also be written to the log.

	#1315787 (Job #84128) **
	    A server which is configured to use submit.identity=serverid but
	    did not have a serverid defined now generates an error at submit,
	    instead of generating a malformed changelist identity.

	#1313674 (Job #84022) **
	    A replica server which was started up at a moment when its master
	    server was down or unreachable would fail to start correctly,
	    and would print an incorrect error message about archive filesystem
	    configuration in the replica log.

	#1313382 (Job #84023) **
	    The 'p4 zip -A' command could fail to include all the necessary
	    archive files, leading to an "archive entry missing" error when
	    running 'p4 unzip -A' subsequently.

	#1313143 (Job #80887) **
	    The 'serverlog.retain.N' configurable now restricts the number of
	    rotated logs kept when the 'serverlog.counter.N' configurable is
	    also set for the same log.

	#1311906 (Job #83995) **
	    'p4 sizes -h/-H' and 'p4 diskspace' could print incorrect values
	    for the fractional component of the file or filesystem size.

	#1308952 (Job #1557) **
	    'p4 reviews <filepath>' was not honoring exclusion lines.

	#1302870 (Job #81355) **
	    Files restricted by a changeView mapping are no longer openable.
	    These files were already read-only, but gave no indication until
	    submit rejected them. This makes the changeView's read-only behavior
	    consistent with remote depots and ditto mappings.

	#1263380 (Job #83500) **
	    If the operating system should run out of process resources, and
	    if structured server logging was configured at a high enough level,
	    the message recorded in the structured server log about the
	    exhaustion of process resources was improperly formatted.

	#1260940 (Job #55795) **
	    The replica behavior fix for autoreload labels (Job #77558) now
	    also applies when lbr.replication=readonly.

	#1257690 (Job #83296) **
	    Starting the Server on read only db files incorrectly produced
	    a licensing error.  Now an access denied error is produced.

	#1255960 (Job #81403) **
	    A DVCS 'fetch -t' command which encounters an internal error
	    relocating the conflicting changes will no longer loop forever
	    retrying the failed change relocation.

	#1247366 (Job #79908) **
	    Propagating attributes could be removed when performing
	    'p4 resolve -at' after unshelving into an opened file.
	    This has been fixed.

	#1245711 (Job #81034) **
	    Now at most one backup thread is allowed in a server at the same
	    time.  Multiple backup threads are never useful and can cause
	    unexpected behavior.

	#1245120 (Job #81186) **
	    With 'peeking' enabled and a very high submit concurrency rate, the
	    maxCommitChange counter may get updated in the wrong order by a
	    DVCS fetch or push command. The bug might cause some transient
	    inconsistency (most likely with aggressive automation that
	    tracks submits).

	#1244865 (Job #77040) **
	    Large fech/push operations are now more concurrent. Specifically,
	    the write lock on the db.counters table is held for a much
	    shorter duration.

	#1242972 (Job #81083) **
	    When authentication triggers have been configured, operator users
	    now authenticate against the auth-check trigger instead of the
	    service-check trigger.

	#1242773 (Job #81040) **
	    The server.locks.archive configurable introduced by #898102 now
	    also applies to the 'p4 restore' command.

	#1239015 (Job #80722) **
	    A file which was integrated from a streams depot to a local
	    depot, or vice versa, would be placed into the wrong location in
	    the proxy cache if it was accessed via the proxy by a command
	    such as 'p4 sync' or 'p4 print'. Note that the symptom of this
	    bug is in the proxy cache, but the fix is in the server.

	#1236537 (Job #59266) **
	    On Linux and other Unix-like platforms, the 'p4 diskspace'
	    command was reporting the filesystem's reserved space as used.
	    'p4 diskspace' now excludes the reserved space from the display
	    of the used space, which more closely matches the behavior of
	    the system 'df' command.

	#1236012 (Job #80864) **
	    A mistake in the 'p4 remote' file mapping lines will no longer
	    allow a 'p4 fetch', 'p4 push', or 'p4 zip' command to generate
	    filenames with illegal depot syntax.

	#1235448 (Job #80818) **
	    If a fetch, push, or unzip command imported a move/delete revision
	    which was created by a pre-2013.1 server, and the revision of
	    that file immediately prior to the move/delete revision was an
	    integration from a location which was not covered by the remote
	    map used by the fetch/push/unzip command, the metadata for the
	    move/delete revision could be damaged.

	#1234884 (Job #75212) **
	    'p4 configure show server.locks.dir' now shows the correct default.

	#1234286 (Job #80762) **
	    'p4 resolve -at' between files with differing charsets will now
	    copy the charset metadata even if server.filecharset is not set.
	    This prevents the 'copy from' resolve record from downgrading to
	    a 'merge from' due to the charset difference.

	#1232803 (Job #72749,#80586) **
	    'p4 configure show', with no additional arguments, would show some
	    configuration variables that were not explicitly set, but were
	    instead still operating with their default values.

	#1228149 (Job #80494) **
	    A change with a missing db.desc record could cause a server crash
	    if that change was accessed by a fetch, push, or zip command.

	#1227329 (Job #80379) * **
	    On Windows an uninitialized variable could cause a file
	    rename to fail.  This has been corrected.

	#1225579 (Job #80086) **
	    Correct high ascii character handling when the Windows Server is
	    in unicode mode, related to long file name handling.

	#1225187 (Job #74936) **
	    A 'sync --parallel' command issued via a forwarding replica would
	    complete immediately, but would sync no files.

	#1224269 **
	    'p4 shelve' now displays the working revision for files being
	    shelved rather than the current depot revision; this fixes an issue
	    with added files being displayed as '#none'.

	#1223845 **
	    The default value for lbr.retry.max is now 50.

	#1223646 (Job #80332) **
	    If a fetch/push command was issued with a Commit Server or Edge
	    Server as the destination of the fetch/push, and the set of files
	    being copied included some files of type +l, and the command was
	    interrupted or cancelled (e.g., using ^C), then the files of type
	    +l were left exclusively locked by a client with an invalid
	    client name (the name was wrongly prefixed by a double slash).

	#1222063,1304112 (Job #80274,#83625) *
	    'p4 init' and 'p4 clone' would sometimes display errors twice.

	#1214194 (Job #79836) **
	    If rpl.checksum.change >= 1, the 'p4 unzip' command will now
	    write changelist checksum journal notes upon completion.

	#1214188 (Job #79814) **
	    'p4 sizes //...@=NNN', when used to display the size of files in
	    a shelf, could display incorrect data if one or more files in the
	    shelf had been replaced using 'shelve -f' or 'shelve -r' and the
	    actual content of the shelved file was unchanged.

	#1214187 (Job #79569) *
	    The -p flag to 'p4 clone' is now optional; if not specified, clone
	    uses the remote server specified by P4PORT in the environment.
	    Additionally, when cloning a single filepath, the '-f' flag is
	    now optional in front of the path, so the command that previously
	    required 'p4 clone -p host:port -f //file/path...' can now be
	    specified as 'p4 clone //file/path...' if P4PORT is already set.

	#1214184 (Job #77782) **
	    The archive deletion journal records for archives deleted by
	    certain shelve and submit command forms are now written in
	    individual journal transactions, which can improve the
	    responsiveness of replicas waiting for the archive deletion
	    to complete.

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

Major new functionality in 2015.2

	#1211694 (Job #77627) **
	    Stream specifications may now be opened and submitted, enabling
	    them to be staged on a particular client and tested before
	    being submitted atomically in a changelist along with a set of
	    files.  See 'p4 help streamcmds' for more information.

	#1047057 **
	    Improve performance and reduce fragmentation in the 'db.have'
	    table by partitioning 'build' clients away from interactive
	    users.  This change adds a new type of client 'readonly'.
	    A client is configured readonly by setting the 'Type:' field
	    in the client spec.  Setting a client readonly must happen at
	    client creation time, once set in cannot be modified.
	    A 'readonly' client has its own personal 'db.have' database
	    table that is not journaled and can be quickly removed. This
	    type of client is ideal for the build automation cycle that
	    creates a client, syncs, builds then deletes the client.

	#998379  * **
	    UTF8 server file type added.  Files detected to hold utf8 textual
	    contents can be stored as a utf8 file.  These files will have
	    BOMs (Byte order marks) removed when stored on the server
	    and added back when synced.

Minor new functionality in 2015.2

	#1237948 (Job #75238) **
	    'p4 opened -g' in a distributed environment reports files opened
	    on the Commit Server. This can be run from any Edge Server in the
	    distributed environment to show files that are globally locked.

	#1233417 (Job #12755) **
	    'p4 annotate' now supports a new flag '-u'. This flag instructs
	    annotate to display the user who modified the change and the date
	    when the modification occurred.

	#1230546 **
	    Added support through the server specification to surface
	    a helix cluster administration server in the server spec
	    metadata. The new Server Services Set Name is
	    hxca-server and its server type is admin.

	#1216733 (Job #77058) **
	    Added support through the server specification to surface
	    zookeeper servers and the clusterId in the server spec
	    metadata.
	    New Server Types:
	      * identifier
	      * admin
	    New Server Service Set Names:
	      * for type identifier: cluster
	      * for type admin: zookeeper-server

	#1212286 (Job #76687) **
	    The warning messages issued when 'p4 copy' opens 'move/add' source
	    files for 'branch' in the target (added in change #673961) have
	    been disabled by popular request; users who are following
	    recommended branching patterns do not generally need to worry
	    about this situation, and so the warnings were causing more
	    trouble than they were preventing.  Admins that wish to re-enable
	    these warnings for all their users may do so via the new undoc
	    configurable 'dm.copy.movewarn'.

	#1211671 (Job #69771) **
	    'p4 submit' from an Edge Server in a distributed environment
	    now takes early locks on the files on the Commit Server. Now
	    when concurrent submits occur from Edge Servers, the failures
	    are reported earlier, resulting in less wasted time and work
	    done on Edge Servers for failed submits.

	#1210497 (Job #79997) *
	    p4 command line will try to discover a good character set
	    to use if P4CHARSET is set to a wide character set like
	    utf16.  p4 set will now allow -C and -Q before the 'set' verb.
	    Case insensitive platforms now check for setting 'p4charset'
	    to problematic values.

	#1209881 (Job #75238) **
	    'p4 lock -g -c <change>' can be used to lock files in a
	    numbered change on the Commit Server from an Edge Server.
	    This allows users in a distributed environment to take global
	    locks.

	#1206326 (Job #1194) **
	    The label spec now allows a 'group' as the label owner.  When a
	    label is owned by a group, any user within the group may modify
	    the label spec, and update which files are tagged by the label.

	#1203354 (Job #47288) **
	    'p4 depot' now accepts a -t (type) argument to specify the type
	    on new depot creation.   Any depot type may be passed on
	    the command with this argument, but the type will be ignored
	    should the depot already exist.

	#1171246 (Job #77870) * **
	   'p4 login' now accepts a remote name specified with the -r argument,
	   causing the login to be forwarded to the server specified in the
	   remote spec. If a RemoteUser is specified, the login is performed for
	   that user.

	#1130470, #1143127, #1225282, #1228379 (Job #79082, #80368, #80511) **
	    There is now a new tunable "server.global.client.views" that
	    controls whether or not the view maps of a non-stream client on an
	    edge or workspace server are made global when a client is modified.
	    By default server.global.client.views=0 and so client view maps are
	    never made global, matching the pre-2015.2 behavior.

	    If server.global.client.views=1 on an edge or workspace server,
	    then client view maps will be made global when a client is modified
	    on that edge or workspace server.  If this tunable is 0 on the
	    edge/workspace server then client view maps on that edge or
	    workspace server are not made global when they are modified.

	    Note that the view maps of a client on a replica must be made
	    global if that client is to be used as a template on another
	    server.

	    This tunable can be set globally, in cluster scope, or individually
	    for each server.  Normally it would be set globally:
	        p4 configure set server.global.client.views=1
	    and individual edge servers that don't need global client view maps
	    may disable it individually:
	        p4 configure set edge1#server.global.client.views=0
	    In a DCS cluster the master server and all workspace servers must
	    have this tunable set to 1 because this is needed for client
	    recovery in case a workspace server fails.  Therefore P4CMGR sets
	    server.global.client.views=1 at cluster scope when the cluster is
	    created, and this setting should not be changed.

	    This change modifies the behavior of Job #77790, which always made
	    non-stream client view maps of an edge or workspace server be
	    global when the client was modified; with this change, modifying a
	    non-stream client makes its view maps global only when
	    server.global.client.views=1 on the edge/workspace server.  This
	    allows client maps to be global on most edge servers while keeping
	    them local on those edge servers that don't need or want them to be
	    global.

	    Note that setting this tunable does not immediately make any client
	    view maps be global; that happens only when a client is modified
	    afterwards.  Clearing this tunable does not delete the view maps
	    of any clients, but will prevent subsequent changes to a client's
	    view map from being propagated to other servers. If a client with
	    global view maps is deleted then its view maps are also deleted
	    globally regardless of the value of server.global.client.views;
	    this is to prevent orphaned view maps.

	#1129505 (Job #29068) **
	    The commands that service users can run now includes: 'p4 logparse',
	    'p4 logschema', 'p4 logstat', 'p4 logtail', 'p4 servers'.

	#1129944 (Job #77291) * **
	    The 'p4 remote' spec now contains the new field "RemoteUser:". For
	    DVCS scenarios where you wish to fetch and push to multiple remote
	    servers and you need to use a different Perforce identity for a
	    particular remote server, you can specify that identity in the
	    RemoteUser field and it will be used by fetch/push commands against
	    that remote server.

	#1127420 (Job #29068) **
	    The commands 'p4 logparse', 'p4 logstat', and 'p4 logtail' now
	    indicate the log number for any structured logs being read. This
	    is to assist applications that follow logs across rotations.
	    Additionally these commands support referring to the running log
	    files with their current log numbers. The log numbers begin at 0.

	#1126846 (Job #76036, #72755, #74831 ) **
	    New configurables net.parallel.* allow 'p4 sync' to
	    automatically use parallel threads to transfer files. See
	    'p4 help sync' and 'p4 help configurables' for complete
	    information.

	#1100312 (Job #79497) **
	    The 'p4 stream' and 'p4 stream -o' commands now default to
	    the current client's stream if no stream name is specified.

	#1099310 (Job #75868) **
	    When unloading clients on an edge server, a new flag '-p'
	    will promote any non-promoted shelves belonging to the
	    specified client that is being unloaded.

	#1099331 (Job #73681) **
	    A replica with lbr.replication=cache now supports the use of the
	    'verify -t' command to schedule transfer of missing archive files.
	    For this to work effectively, such a replica should have one or
	    more 'pull -u' threads configured for it (see change 1051994),
	    perhaps also using the '--batch=N' flag for those threads (see
	    change 1053213).

	#1073565 (Job #76035) **
	    New configurables net.parallel.submit.* allow 'p4 submit' to
	    automatically use parallel threads to transfer files. See
	    'p4 help submit' and 'p4 help configurables' for complete
	    information.

	#1070966 (Job #73912) **
	    New trigger types journal-rotate-lock and journal-rotate allow for
	    maintenance routines to be run on servers after the journal has been
	    rotated, either while the database tables are still locked or after
	    the locks have been released. These triggers are intended to be used
	    on replicas where journal rotation is triggered by journal records.
	    The server must be running for these triggers to be invoked; running
	    'p4 admin journal/checkpoint' will invoke the triggers, but running
	    'p4d -jc' or 'p4d -jj' directly against a server will not.

 	#1068319 (Job #78060) **
	    The behavior of cluster-only feature of workspace backup
	    can be modified by setting a new "Backup" field in the client
	    specification. Cluster users can set their client to opt out
	    of the workspace backup feature by setting this field to
	    the value "disable".  By default, the value of the Backup
	    field is assumed to be "enable" for all read/write clients.
	    If this field is set to "disable" then that client
	    workspace will neither be backed up nor be considdered
	    for auto-unload.  Setting this field has no impact for
	    clients not hosted in a clustered workspace-server.

	#1067861 (Job #40729, #79069) **
	    The server will now display the canonical filetype for a file,
	    as introduced by change #7724, and will no longer display the
	    shorthand alias, for all clients at API level 79 or above.
	    So, for example, 'p4 opened' for a file of type 'binary+Sw' will
	    now display: '//depot/foo#1 - add default change (binary+Sw)'
	    rather than '//depot/foo#1 - add default change (ctempobj)'.
	    If your application relies on receiving the shorthand aliases,
	    either continue to use the 2015.1 (or older) client API, or get
	    the old behavior by setting protocol variable "api" to 78 (2015.1).
	    For the command line 'p4' executable, the output can be frozen to
	    2015.1 output by using -Zapi=78.

	#1067301 (Job #78817,#78828) **
	    A server with rpl.checksum.change >= 1 will now write changelist
	    checksum journal notes when performing the commands: populate,
	    fetch, and (inbound) push.

	#1066965 (Job #76882) **
	    'p4d -xu' will no longer run automatically if there are fewer than
	    1000 changelists. Upgrades must be run manually unless the server is
	    a DVCS personal server; in this case, any upgrades steps are run
	    automatically.

	#1065023 (Job #79018) **
	    'p4 changes -e changelist#' is now fully supported. This flag
	    provides an alternative to 'filespec@change,#head' processing
	    and can be much faster.

	#1061282 **
	    'p4 labels <filespec>' where the filespec is a single or
	    wildcard revision with no range, now runs lockless.

	#1056188 (Job #75648, #76195, #76632) **
	    In a distributed environment, unshelving of promoted shelves into
	    open files and branches on a server that the shelf did not
	    originate is now allowed.

	#1053213 (Job #78598) **
	    'p4 pull -u' now accepts the '--batch=N' flag, provided that both
	    replica and master are running at this release level or higher.
	    The --batch=N flag is particularly intended for situations where
	    large numbers of very small files are regularly retrieved by a
	    replica separated from its master by a high-latency network.

	#1052310, 1009333 (Job #50432) **
	    Add the ability to root streams at a deeper level in the depot
	    directory hierarchy.  New stream depots contain the 'StreamDepth'
	    field for defining the root level of a stream's path (the number
	    of slashes found within the stream's Stream field) below the
	    depot name. This field accepts a value between one and 10, while
	    it defaults to one.

	    As new streams are created, the number of slashes of the stream's
	    Stream field (beyond the depot name) must match the StreamDepth
	    field of the depot.  As the StreamDepth field is defined in the
	    depot, all streams of the depot are bound by the same depth.
	    For example - a stream depot Tango has the StreamDepth: 2
	    which allows for two slashes in the stream specification's Stream
	    field beyond the depot name.

	        //Tango/core/Rel4.0
	        //Tango/docs/DevQ4

	    both these streams reflect the above depot StreamDepth field.

	    Note the performance implication; the total path to any file
	    revision held within a stream are compounded with stream's
	    Stream field.

	    See 'p4 help depot' and 'p4 help stream' for further details.

	#1052216 * **
	    'p4 reconcile -k' updates the have list to match workspace content.
	    This can be used to reconcile a client's empty or incomplete
	    have list with files on the workspace that have the same content
	    as their mapped files in the depot.

	#1051994 (Job #78599) **
	    It is now legal to configure one or more 'pull -u' threads on
	    a replica with lbr.replication=cache. If the replica is an
	    edge-server or build-server, 'p4 sync' commands on that replica
	    will now use any such 'pull -u' threads to service cache faults.

	#1049517 (Job #78600) **
	    A command which is run in a replica with lbr.replication=cache
	    will now use a single connection to the master server to perform
	    all its archive content fetches.

	#1049398 (Job #78553) **
	    On a replica with monitor > 0, the pull threads will now
	    periodically update their status; the current pull thread state
	    can be viewed via 'p4 monitor show -a -l -sB'.

	#1049397 (Job #78521) **
	    The command 'p4d -jd <dumpfile> db.<table>' now works for the
	    tables db.sendq and db.revpx.

	#1047403 (Job #77798) **
	    New users that are created by authenticating against an LDAP server
	    may now have their FullName and Email fields populated from their
	    record in the LDAP server. This requires the relevant attributes to
	    be named in the LDAP configuration.

	#1044999 (Job #78470, #77790) **
	    Workspaces bound to an edge or workspace server may now be used
	    as a template when creating a workspace on a different edge or
	    workspace server.  Before using a bound workspace as a template
	    on another server you should ensure that its view map has been
	    been made global by making a trivial change to the client (perhaps
	    to the Description field) and saving it.

	#1042495 (Job #78035) **
	    The 'auth.csv' log can now be defined in order to log the results
	    of 'p4 login' attempts. Any additional information provided by the
	    authentication method is included in the log entries.

	#1023845 (Job #77790) **
	    The view maps of non-stream workspaces local to a edge or
	    workspace server are now global and so are visible on all nodes
	    in a distributed or cluster environment.  Note that client view
	    maps are made global only when they are saved (either created or
	    modified); the view map of an existing non-stream client bound
	    to a edge or workspace server is not made global until the client
	    has been saved using a p4d that includes this change.

	#1043956 **
	    The fetch/push/zip/unzip commands now include revision attributes
	    as part of copying submitted changes from one server to another.
	    Note that, once a particular revision has been copied to another
	    server, using 'attribute -f' to change the attributes on that
	    revision will only affect the revision on that server, not on any
	    other server to which it may have been copied.

	#1042179 **
	    The fetch/push/zip/unzip commands now include fix data as part of
	    copying submitted changes from one server to another. Fix records
	    are only added to the destination server if the corresponding job
	    is already present on that server; jobs must be manually copied
	    between servers. When fetch/push/unzip copies a fix record into
	    the destination server, it runs any fix-add and form-commit (job)
	    triggers that are defined for that server and also adds db.logger
	    event records if the logger is enabled. The fix-add trigger is
	    only run by the unzip command if the --enable-dvcs-triggers flag
	    is set.

	#1042005 ** *
	    Windows long file name support now defaults to enabled.  This
		is equivalent to this tunable setting, "filesys.windows.lfn=1".

	#1041784 (Job #75533) **
	    LDAP authentication using the SASL bind method can now optionally
	    separate the realm from the username when the username is in either
	    'user@realm' or 'realm\user' formats.

	#1039642 (Job #77628) **
	    'p4 switch' now supports switching to a point-in-time stream.
	    By specifying 'p4 switch stream@change' the command will set
	    the stream spec/view creation as of that change and sync any
	    files also to the change specified.

	#1038646 (Job #76913) **
	    At 'db.peeking=3', 'p4 files <filespec>' will now access
	    the rev table in lockless mode, even if not using a
	    revision specifier or a revision range.

	#1038593 (Job #78363) **
	    'p4 files <filespec>' when using a revision specifier other
	    than #head (e.g. @label), or a revision range ending with
	    a revision specifier other than #head, will now access
	    the rev table in lockless mode. 'p4 files <filespec>@label'
	    will now also access the label table in lockless mode. And
	    'p4 files <filespec>@change,@change' will now also access
	    the revcx table in lockless mode.

	#1038497 (Job #77113) **
	    The usernames of members added to a Perforce group by 'p4 ldapsync'
	    can now optionally be normalised into lowercase by setting the
	    'downcase' option in the LDAP spec.

	#1037285 (Job #78363) **
	    'p4 sync <filespec>@label' will now access the label table in
	    lockless mode. And at 'db.peeking=3', 'p4 fstat <filespec>@label'
	    will now also access the label table in lockless mode.

	#1035528 (Job #71588) **
	    An admin may now run 'p4 -c <client> unlock -x -f [files...]' to
	    forcibly unlock files of type +l which are not marked orphaned,
	    but which can no longer be unlocked by the user who has them opened.

	#1032823 (Job #65810, #65293, #59656) *
	    P4IGNORE can now be set to a list of filenames and paths to files,
	    using ';' as the separator on Windows and ':' or ';' on other
	    platforms. Earlier items in the list are loaded before later ones.
	    If the list item contains a slash character it is considered a path
	    and is loaded once, otherwise the item is considered to be a
	    filename and the directory tree will be scanned for files with that
	    name.

	#1032762 (Job #2194) *
	    When loading settings from a P4CONFIG file, if there are additional
	    P4CONFIG files higher in the path with additional variables set,
	    those additional variables are now loaded too.

	#1032758 (Job #65293) *
	    The placeholder '$home' in any Perforce environment variable is
	    expanded to the path of user's home directory when that variable
	    is used. The user's home directory is taken to be the value of the
	    'HOME' environment variable or 'USERPROFILE' on Windows.

	#1032190 (Job #72108) **
	    'p4 ldap' now stores LDAP configurations in the new db.ldap table.
	    This table is journalled, so LDAP configurations are now included
	    in checkpoints and are replicated.

	#1029470 (Job #72671, #76543) **
	    Names of automatic labels can now be used as specifiers in import
	    mappings on stream specs and in the 'ChangeView' on client specs.

	#1023388 (Job #76168) **
	    A replica may specify rpl.compress=4 to indicate that network
	    data compression should be used for the journal pull or
	    journalcopy connection between the replica and the master,
	    but not for the 'pull -u' connections.

	#1020818 (Job #77708) **
	    A replica server with lbr.replication = readonly or cache now
	    issues a clearer error message if an archive file is missing on
	    the replica and also damaged on the master.

	#1020055 (Job #51182) *
	    New client side command 'p4 ignores' reports the mappings computed
	    from the rules defined in P4IGNORE files and allows paths to be
	    tested against those P4IGNORE rules.

	#1015978 (Job #76105) **
	    The 'p4 change' spec now includes two additional fields:
	    - ImportedBy: the user who issued the fetch, push, or unzip
	      command which imported this change into this server.
	    - Identity: the identity of this change.
	    These fields are primarily useful for DVCS scenarios, in which
	    changelists are copied from one server to another, and help you
	    correlate the changelist's basic identity as it is so copied.
	    In such configurations, we recommend using the submit.identity
	    configurable to enable automatic generation of changelist
	    identities by the submit command, unless you have an alternate
	    algorithm which you prefer to use for generating universal
	    changelist identity values.

	#1012383 **
	    'p4 fetch' now accepts the -t argument, specifying that conflicting
	    work should be moved into a tangent in the tangent depot,
	    automatically creating that depot if it doesn't yet exist. The
	    tangented changes can then be resubmitted using 'p4 resubmit'. The
	    new -t flag replaces the now obsolete -u flag.

	#1009476 (Job #77230) **
	    'p4 diff2' now defaults to diffing the current stream (if any)
	    vs its parent stream if no other branch view is specified.

	#1003898 (Job #79398) **
	    New trigger types push-submit, push-content, and push-commit
	    allow for policy enforcement and tool integration for changes
	    that are imported into a server via the push, fetch, or unzip
	    commands. These new triggers are largely similar in behavior
	    to the corresponding change-* triggers. The unzip command only
	    runs these triggers if the --enable-dvcs-triggers flag is set.

	#991320 (Job #56642, #59382, #59911, #67993, #70484, #71465, #71466) *
	    Enhancements to the P4IGNORE rule syntax:
	    - Unix path separators '/' are now handled on Windows as if they
	      were Windows paths. Rules using Unix paths will now work on all
	      platforms.
	    - Rules with leading slashes apply to files and folders relative to
	      the P4IGNORE file containing the rule. For example, '/*.c' will
	      only cause C files in the same directory as the P4IGNORE file to
	      be ignored.
	    - Rules with trailing slashes only affect directories.
	    - The '**' wildcard is expanded to the '...' wildcard.

Bugs fixed in 2015.2

	#1565474 (Job #91885) **
	    Submitting a moved 'utf8' file using a pre-15.2 client
	    no longer results in a missing archive.

	#1513385 (Job #88954) **
	    The utf8 file type was not handled properly by clients older
	    than 2015.2 and the p4 java api.  The server now attempts to
	    work with these older clients by handling the byte-order-mark
	    in the server and having the server produce digests which
	    these older clients will expect.  Operation with utf8
	    files and these older clients will skip proxy caching also.
	    These older clients assume the BOM is present for the utf8
	    filetype, while 2015.2 and later clients can adapt to a
	    BOM being present or not.

	#1484153 (Job #89648, #89890) **
	    The db.sendq entries for a failed parallel sync are now
	    immediately removed from db.sendq.

	#1471146 (Job #89336) **
	    'p4 add ...' could generate many "Error object passed to database"
	    errors and fail to terminate when MaxScanRows or MaxLockTime
	    has been reached. This could also happen with 'p4 reconcile' or
	    'p4 status'. This behavior has been fixed.

	#1464985 (Job #89311) **
	    The fetch/push/unzip commands might incorrectly declare a
	    file conflict for a file which was moved multiple times, to
	    different destinations, during its history.

	#1464821 (Job #16821, #89204 ) * **
	    The configurable 'filesys.checklinks' may fail to prevent files
	    from being added when files are symlinks to directories. This
	    has been fixed. Also, this configurable is now honored for
	    'p4 reconcile' when detecting files to be added.

	#1463567 (Job #86424) **
	    Edge Servers might halt replicating if an obliterate command
	    was run concurrently with a very large populate or submit command.

	#1458557 (Job #89052) **
	    A forwarding replica with lbr.replication=shared will no longer
	    attempt to update the (shared) archive area during the file
	    transfer phase of a forwarded 'p4 submit'. The cache-on-submit
	    behavior is still present for forwarding replicas with
	    lbr.replication set to either readonly or cache.

	#1455848 (Job #88980) **
	    In replica chaining configurations, replicas which were not
	    directly connected to the master server were not processing
	    archive deletion operations arising from operations such as
	    submission of a binary+S file, deletion of a shelf, obliteration,
	    archive depot operations or retype +l commands.

	#1417603 (Job #87802) **
	    The very first 'fetch -t' command issued against a server will
	    auto-create the 'tangent' depot in that server. Subsequent
	    commands issued by that same network session would get errors
	    if they referred to the tangent depot.

	#1412767 (Job #87638) *
	    The 'p4 init' command would write a small number of journal
	    records to the end of the file specified by P4JOURNAL, if set.
	    The local server initialization is now performed with -J off.

	#1411325 (Job #81360) **
	    A 'p4 fetch' command which transferred both a text (RCS) file whose
	    archive was already present in the destination server and a lazy
	    copy of that file, would leave the lazy copy corrupt. 'p4 verify'
	    would report 'MISSING!' and requests for the file's content would
	    report 'RCS checkout  failed!'.

Bugs fixed in 2015.2 Patch 10

	#1410745 (Job #87181) **
	    Correct the digest used to ensure that content is transferred
	    correctly to commands within triggers (such as a 'change-content'
	    trigger) when submitting a shelf. A shelf is implicitly submitted
	    to the commit server when a submit is run on an edge server.

	#1407749 (Job #87327) **
	    Deleting a pending change with an Identity, or deleting an empty
	    committed change with an Identity, incorrectly failed to delete
	    the database record in the db.changeidx table.

	#1379774 (Job #86262) **
	    Improve performance around structured logs. Log writers will
	    now only acquire a shared lock on the 'logrotate' server meta
	    lock when there are actually writes to the structured logs.

	#1379621 (Job #85991) **
	    Report to stderr (except on Windows), and syslog or
	    the event log (as supported by the platform), any errors
	    encountered when writing to the server log or a structured log.

	#1378294 (Job #86222) **
	    Following a 'fetch -t' command, the 'resubmit' command must be
	    used, with the '-R' flag to resume after any merge conflicts are
	    resolved, to coordinate the resubmit of the tangented changes. The
	    'submit' command now checks for an accidental attempt to submit a
	    change that should have been run as 'resubmit -R', and issues a
	    message rather than allowing the submit.

Bugs fixed in 2015.2 Patch 7

	#1376672 (Job #86041) **
	    Change handling of utf8 server type files when working with
	    clients <= 2015.1.  For these clients, the utf8 type files
	    are treated as server type text, so as to avoid any additional
	    line-ending.  These files will not have associated BOMs (Byte
	    order marks) when they are synced in this case.
	    This has no bearing with clients >= 2015.2.

Bugs fixed in 2015.2 Patch 6

	#1365919 (Job #85680) **
	    Improve concurrency around structured logs. Log writers will
	    now acquire a shared lock instead of an exclusive lock on the
	    'logrotate' server meta lock to block log rotations.

	#1364433 (Job #75866) **
	    Change 996993 is reverted, as the performance impact was large.

	#1362592 (Job #85371) **
	    'p4 sync --parallel=..' using multiple file arguments could
	    fail to transfer some files if any of the file paths did not
	    contain enough data to use parallel threads. This has been fixed.

	#1362520 (Job #85376) **
	    Fix for false database corruption error when long descriptions
	    are updated concurrent to readers reading the same
	    description.

	#1360523 (Job #75135, #75136, #71853, #85501) **
	    Parallel sync and submit commands will not fail when
	    net.parallel.max is unset or the requested number of parallel
	    threads exceeds net.parallel.max. Instead the command will
	    proceed without using parallel threads, or will use the max
	    number of allowed threads. In these cases an informational
	    message will also be written to the log.

	#1361611 (Job #85526) **
	    Running 'p4 integ' with a non-existent stream path as the target
	    could cause the server to crash. This has been fixed.

	#1361611 (Job #85431) **
	    On Windows, parallel LDAP connections could cause a deadlock when
	    the TLS encryption method was in use. This has been fixed; however,
	    it has been noted that the SSL encryption method performs better
	    on this platform.

	#1356487 (Job #85335) **
	    Running 'p4 reconcile' with the illegal syntax '#have' was not
	    being rejected.

	#1355499 (Job #85346) **
	    Fixed a memory leak in 'p4 verify'.

	#1354073 (Job #85278) **
	    A command running on a replica could fail to transfer an archive
	    file from the master server, reporting that the file was
	    corrupted, if the file was a compressed binary filetype and if
	    the replica had chosen to transfer the file without uncompressing
	    and recompressing it. This problem was introduced by #1020818.

	#1352556 (Job #85157) *
	    The MacOSX command line client could fail to complete a parallel
	    sync if two or more parallel transfers attempted to create the
	    same directory in the filesystem at the same time; the failing
	    file transfer would print: "mkdir: /path/to/dir: File exists".

	#1352392 (Job #84992) **
	    Failure from an edge-content or edge-submit trigger during
	    'p4 submit' using the 'leaveunchanged' option could cause
	    the server to crash. This has been fixed.

	#1352019 (Job #77782) **
	    The archive deletion journal records for archives deleted by
	    certain shelve and submit command forms are now written in
	    individual journal transactions, which can improve the
	    responsiveness of replicas waiting for the archive deletion
	    to complete.

	#1349577 (Job #84432) **
	    Failure from an edge-content or edge-submit trigger during
	    'p4 submit' using the 'leaveunchanged' option could cause
	    the server to crash. This has been fixed.

Bugs fixed in 2015.2 Patch 5

	#1338051 (Job #84848) ** *
	    'p4 -Zproxyverbose sync --parallel=...' now correctly displays the
	    diagnostic information about which files were delivered from the
	    proxy's cache.

	#1335441 (Job #84810) **
	    'p4d -c <command>' uses classic lock order not the new
	    lockless lock order.  Fixed.

	#1335427 (Job #84710) **
	    The fix for bug 70118 is generalized, and now applies to all
	    server platforms.

	#1332929 (Job #84705) **
	    A failed 'p4 fetch' or 'p4 push' operation now removes any
	    archive files which it copied to the destination server prior
	    to the failure.

Bugs fixed in 2015.2 Patch 4

	#1323787 (Job #84421) **
	    'p4 integ' could scan the database table db.locks unnecessarily
	    under certain conditions.

	#1323707 (Job #84436, #84437) **
	    'p4 journals' now displays the full error message text for
	    a failed checkpoint or journal entry. Also, if a checkpoint failed
	    due to the checkpoint filesystem being mounted read-only, a
	    checkpoint-failed entry is now written in db.ckphist.

	#1323256 (Job #84441) *
	    'p4 clone' would mis-handle depot file paths containing spaces.

Bugs fixed in 2015.2 Patch 3

	#1319572 (Job #74317) **
	    'p4 annotate' truncates very long lines. In some cases the output
	    stream is not correctly terminated after the truncation and random
	    data or nulls may be appended.

	#1318741 (Job #84229) **
	    'p4 submit' of changes with thousands of files from an Edge
	    Server had degraded performance in the earliest releases of
	    2015.2 due to inefficiencies from the new global locking
	    feature. This has been fixed.

	#1318264 (Job #84035, #84188) **
	    In a federated server environment 'p4 unshelve' of moved files
	    may cause orphaned exclusive lock entries that show up with
	    'p4 opened -x'.

	#1318264 (Job #84194) **
	    In a federated server environment when running directly against
	    the commit server not all exclusive locks for open files were
	    taken.

	#1315969 (Job #84027) **
	    Explicit rebuild of havemaps utilising 'p4d -xU BuildHaveMaps'
	    would drop all ChangeView fields found in client specs.  This
	    has been fixed.

	#1313674 (Job #84022) **
	    A replica server which was started up at a moment when its master
	    server was down or unreachable would fail to start correctly,
	    and would print an incorrect error message about archive filesystem
	    configuration in the replica log.

	#1313390 (Job #84023) **
	    The 'p4 zip -A' command could fail to include all the necessary
	    archive files, leading to an "archive entry missing" error when
	    running 'p4 unzip -A' subsequently.

Bugs fixed in  2015.2 Patch 2

	#1310642 (Job #83924) **
	    Fixed a rare crash in 'p4 interchanges'.

	#1305592 (Job #83604) **
	    Edge servers fail client authentication when net.mimcheck=5.

Bugs fixed in 2015.2 Patch 1

	#1258290 (Job #83276) **
	    ChangeViews were not being honored in Stream import+ path
	    definitions.  Various commands were not honoring at the designated
	    change, and submits to the target were being allowed - when the
	    ChangeView should make the target read-only.  This has been fixed.

	#1256052 (Job #81415) **
	    Edge servers replicating an obliterate from a commit server
	    could write unnecessary journal delete records for local labels.

	#1256002 (Job #81478) **
	    Submitting an 'open' stream (new in this release) would lock the
	    db.domain table for longer than necessary.

	#1255960 (Job #81403) **
	    A DVCS 'fetch -t' command which encounters an internal error
	    relocating the conflicting changes will no longer loop forever
	    retrying the failed change relocation.

Bugs fixed in 2015.2

	#1361611 (Job #85526) **
	    Running 'p4 integ' with a non-existent stream path as the target
	    could cause the server to crash. This has been fixed.

	#1361611 (Job #85431) **
	    On Windows, parallel LDAP connections could cause a deadlock when
	    the TLS encryption method was in use. This has been fixed; however,
	    it has been noted that the SSL encryption method performs better
	    on this platform.

	#1245120 (Job #81186) **
	    With 'peeking' enabled and a very high submit concurrency rate, the
	    maxCommitChange counter may get updated in the wrong order by a
	    DVCS fetch or push command. The bug might cause some transient
	    inconsistency (most likely with aggressive automation that
	    tracks submits).

	#1244865 (Job #77040) **
	    Large fech/push operations are now more concurrent. Specifically,
	    the write lock on the db.counters table is held for a much
	    shorter duration.

	#1242773 (Job #81040) **
	    The server.locks.archive configurable introduced by #898102 now
	    also applies to the 'p4 restore' command.

	#1239015 (Job #80722) **
	    A file which was integrated from a streams depot to a local
	    depot, or vice versa, would be placed into the wrong location in
	    the proxy cache if it was accessed via the proxy by a command
	    such as 'p4 sync' or 'p4 print'. Note that the symptom of this
	    bug is in the proxy cache, but the fix is in the server.

	#1236012 (Job #80864) **
	    A mistake in the 'p4 remote' file mapping lines will no longer
	    allow a 'p4 fetch', 'p4 push', or 'p4 zip' command to generate
	    filenames with illegal depot syntax.

	#1235448 (Job #80818) **
	    If a fetch, push, or unzip command imported a move/delete revision
	    which was created by a pre-2013.1 server, and the revision of
	    that file immediately prior to the move/delete revision was an
	    integration from a location which was not covered by the remote
	    map used by the fetch/push/unzip command, the metadata for the
	    move/delete revision could be damaged.

	#1231617 (Job #74532 ) **
	    A 'p4 client' command of a stream client which generates no views
	    due to exceeding map.joinmax1 will now display an appropriate
	    message.

	#1228456 (Job #73450) *
	    Concurrent p4 login and p4 logout commands could loose
	    tickets in the P4TICKETFILE.  Similar problems are possible
	    with concurrent p4 trust commands.  Fixed by creating a
	    .lck lock file next to the ticket file to avoid the
	    concurrent login problem.  This .lck file will be removed
	    if it is several minutes old.

	#1228149 (Job #80494) **
	    A change with a missing db.desc record could cause a server crash
	    if that change was accessed by a fetch, push, or zip command.

	#1227692 (Job #80086) **
	    Correct high ascii character handling when the Windows Server is
	    in unicode mode, related to long file name handling.

	#1227632 (Job #80379) * **
	    On Windows an uninitialized variable could cause a file
	    rename to fail.  This has been corrected.

	#1225187 (Job #74936) **
	    A 'sync --parallel' command issued via a forwarding replica would
	    complete immediately, but would sync no files.

	#1223646 (Job #80332) **
	    If a fetch/push command was issued with a Commit Server or Edge
	    Server as the destination of the fetch/push, and the set of files
	    being copied included some files of type +l, and the command was
	    interrupted or cancelled (e.g., using ^C), then the files of type
	    +l were left exclusively locked by a client with an invalid
	    client name (the name was wrongly prefixed by a double slash).

	#1214354 (Job #78784) **
	    Submitting to a combination of task stream path and Import+ path
	    in the same changelist is not allowed, but not prevented. This
	    change catches the combination and rejects the submit, the user
	    has to resubmit changes to the filepaths in separate submits.

	#1203118 (Job #79647, #79739) **
	    p4d -jr would mis-handle the revStatus field if replaying db.rev
	    journal records written by a 2005.2 or older server, and would
	    mis-handle the mount2, mount3, stream, serverid, and partition
	    fields if replaying db.domain journal records written by a
	    2002.1 through 2004.2 server.

	#1202710 (Job #44639, #63140, #74807) **
	    The verify command now supports the -S flag to specify that
	    shelved files are to be verified. This flag can also be combined
	    with the -t flag on a replica to schedule the transfer of any
	    missing or damaged shelf archives from the master server.

	#1199869 (Job #79507) **
	    LDAP connections are now reused were possible to avoid unnecessary
	    overhead.

	#1172454 (Job #79504) **
	    A submit initiated on an Edge Server which failed due to a
	    problem detected after the edge-content trigger had been checked
	    could leave the changelist incorrectly marked as "shelved", and
	    possibly also as "promoted", on the Commit Server, although the
	    changelist was correctly recorded on the Edge Server itself.

	#1172019 (Job #79473) *** ** *
	    The Windows support for filenames longer than 260 characters will
	    now handle highbit ascii characters correctly.

	#1171745 (Job #75750) **
	    The replica server now makes an attempt to detect an
	    incorrect configuration of the lbr.replication setting.

	#1144449 (Job #77333) **
	    The configurables 'P4NAME', 'db.replication' and 'lbr.replication'
	    may no longer be set globally; a serverid must be specified.

	#1142007 (Job #79341) **
	    Since change 1017756, in a Commit/Edge configuration, when
	    'p4 shelve -d' deleted a promoted shelf, the fix records for
	    jobs which were attached to the pending changelist were
	    incorrectly removed.

	#1130240 (Job #79361) *
	    'p4 reconcile' could crash the client when run with a unicode
	    server if filenames have unmapped unicode characters. This has
	    been fixed.

	#1130149 (Job #73821) **
	    Unloading or deleting clients could leave abandoned shelves on
	    servers.  This change allows an admin user to force delete '-df'
	    a shelf that has been left in this state.

	#1128864 (Job #70118,#70738) **
	    Windows servers using the serverlog.maxmb setting will no longer
	    generate duplicate server log files when rotation occurs under
	    heavy load. As a result of this change, server lockfiles under
	    the 'server.locks/meta' subdirectory are no longer stored in
	    numbered subdirectories, so the lockfiles will be named
	    'server.locks/meta/db', 'server.locks/meta/journal', etc.

	#1128635 (Job #79104) **
	    Since change 616010, the 'p4 sync' and 'p4 integrate' commands
	    have been enforcing the MaxResults limit, if set, on the size of
	    the intermediate results of the sync or integrate command,
	    which could in some situations mean that the user's MaxResults
	    setting had to be large enough to contain their entire have list.
	    Now the MaxResults limit is enforced only on the size of the
	    final results of the sync or integrate command.

	#1127279 (Job #79353) **
	    A 'sync --parallel' command which sync'd any files of type 'binary'
	    would write an incorrect value for the 'type' field of the db.have
	    record for the binary file(s). This could cause problems later
	    when integrating changes into these files from other branches.
	    Any workspaces potentially affected by this bug should be sync'd
	    to revision #0 and then re-sync'd for all files of type binary at
	    their convenience in order to rewrite the db.have records.

	#1123323 (Job #74970) **
	    Structured log entries for commands that have passed through a
	    proxy now log both the originating client's IP address and the IP
	    address of the last proxy server. This is stored in the same format
	    as the server log: 'client/proxy'. Setting 'log.originhost=0' will
	    cause the structured log to only log the IP address of the last
	    proxy server, like previous releases.

	#1099636 (Job #78495) **
	    When relocating a client from one edge server to another using
	    unload/reload, any unpromoted shelves of the moved client would
	    no longer be accessible on the server they reside.

	#1098936 (Job #77687) **
	    The 'p4 init' and 'p4 clone' commands can now be used from a
	    directory with a name containing one of the Perforce wildcard
	    characters (@/#/%/*).

	#1098709 (Job #74268) **
	    For 'p4 sync --parallel', 'min=N' now defaults to 9, and
	    'minsize' now defaults to 576 KB.

	#1098514 (Job #76009) **
	    The P4Admin depot deletion tool no longer reports the 'Can't snap
	    active task stream files' error when deleting an empty depot which
	    has no relationship to any active task streams.

	#1072106 (Job #79234) **
	    'p4 fetch' and 'p4 push' now correctly purge old archives when
	    importing new revisions of a file of type +S.

	#1071810 (Job #71853, #75135) **
	    'p4 sync --parallel' and 'p4 submit --parallel' would report
	    a misleading error message when the number of threads requested
	    exceeds the configurable 'net.parallel.max'. This has been fixed.

	#1070381 (Job #79139) **
	    The zip file written by 'p4 zip -A' was missing archive content
	    for branched files if the '-r' flag was omitted.

	#1070377 (Job #79171) **
	    A 'p4 fetch/push/unzip' command on a highly active server could
	    diagnose conflicts incorrectly.

	#1070043 (Job #78498) **
	    The temp file created when a trigger is run from the depot
	    now preserves the original file extension since some script
	    engines refuse to run the file otherwise.

	#1069734 (Job #79181) **
	    The error message issued by change 696998 is improved to more
	    clearly describe the reason that the file can't be archived.

	#1068648 (Job #79162) **
	    Replica servers wouldn't log the completion of some commands that
	    run on the replica before being forwarded to the master.

	#1068615 (Job #57220) **
	    Protocol variable names are now case-insensitive.

	#1065877, #1067450 (Job #79100, #79035) **
	    The configurables 'rpl.forward.all' and 'rpl.forward.login' now only
	    affect replica servers. Additionally, replica servers will no longer
	    start if P4TARGET is not provided.

	#1067300 (Job #76977) **
	    A fetch command which was interrupted before completing could
	    leave corrupted RCS archive files on the destination server.

	#1065376 (Job #77360) **
	    In a distributed configuration, the 'edit -n' and 'delete -n'
	    commands for a file of type +l might incorrectly report that
	    the file was opened by another user, though it was not.

	#1065313 (Job #76987,#77274,#79028,#79029,#79036) **
	    'p4 push' and 'p4 fetch' could mishandle file locks. In some cases,
	    they would report locking conflicts when no such conflict existed;
	    in other cases they would fail to detect locking conflicts. When
	    'unlock -r' was used to unlock files after a failed push, it would
	    leave them open. 'p4 push' was incorrectly allowing a push to be
	    initiated by a workspace which exists in the destination server.
	    In some cases, 'p4 unlock -r' could crash.

	#1063251 (Job #78965) **
	    'p4 fetch' on a case-insensitive server would fail with a file
	    transfer error when fetching multiple revisions of a file of type
	    text if the revision names differed in case.

	#1061247 (Job #78830,#78915) **
	    A replica with rpl.checksum.change set to 2 or higher might
	    incorrectly write its own journal file under conditions of high
	    concurrency on the master, resulting in incorrect behavior and
	    problems with replicas of this replica.

	#1060249 (Job #78781#78812) **
	    p4 push/fetch/unzip now correctly detect the conflict if a file
	    is moved simultaneously on two different servers to different
	    destination filenames.

	#1059769 (Job #78855) * **
	    'p4 sync --parallel' now works with certain custom licenses.

	#1058411 (Job #78785) **
	    If a replica with rpl.checksum.change set to 2 or higher
	    encountered an internal error processing a changelist checksum
	    note, it would halt replication. Now, it logs the error but
	    resumes replication.

	#1057142 (Job #75822) **
	    The commands 'p4d -jd', 'p4d -jv', 'p4d -xv', and 'p4d -xx', if
	    issued on a read-only copy of a server configured with one or more
	    structured server logs, would issue incorrect messages about
	    permissions errors on the structured server log files.

	#1056616 (Job #26763,#26824,#61456,#70297) **
	    Some integer overflow problems in the display of server performance
	    tracking data to the server log have been addressed. Tracking log
	    data for extremely large queries will now display accurate results.

	#1055820 (Job #72351) **
	    A Windows server installed as a Windows Service, which has been
	    given a server.id which does not match the Windows Service Name,
	    will now use the server.id as its name in preference to the
	    Windows Service Name.

	#1054521 (Job #70899) **
	    On a server with a spec depot configured, if the spec depot
	    archive file cannot be written, the spec revision is now
	    marked as purged.

	#1054354 (Job #56725) **
	    A 'p4 print' of a binary file, if it did not specify -o, and did
	    not go through a proxy or forwarding replica, would send the wrong
	    message if the archive file was missing on the server. Instead of
	    sending a 'file not found' message to the client, it would send
	    "Operation 'client-OutputBinary' failed."

	#1054186 (Job #73951) **
	    Shelving a file that is open for integrate from a revision that is
	    hidden by the client's ChangeView will no longer produce an error.

	#1050954 (Job #78647) **
	    On an Edge Server with submit.unlocklocked=1, a submit which fails
	    with "Out of date files must be resolved or reverted" could
	    incorrectly alter the resolve state of the open files if the
	    conflicting change was submitted simultaneously.

	#1050337 (Job #78593) **
	    Spec update commands now enforce filesys.P4ROOT.min and
	    filesys.P4JOURNAL.min.

	#1047418 (Job #78444) **
	    The replica-specific table db.user.rp is now journaled. This means
	    that the table data will appear in checkpoints, journals and
	    dumps. The replica pull thread automatically filters out all
	    db.user.rp records from its P4TARGET server, which is normally the
	    desired behavior, since records in this table are unique to each
	    replica's activity. However, for maintaining warm standby replicas
	    of other replicas, you can set rpl.replay.userrp=1 for the standby
	    replica to disable the filtering and replicate db.user.rp data.

	#1046909 (Job #77390, #77461) **
	    The 'p4 change -d -f' and 'p4 client -d -f' commands now perform
	    more argument checking in a distributed configuration. If a client
	    is bound to a different server, 'p4 client -d -f' no longer allows
	    that client to be deleted, and 'p4 change -d -f' no longer allows
	    that client's pending changes to be deleted. In order to override
	    these checks, the 'p4 change -d -f' and 'p4 client -d -f' commands
	    now accept the '--serverid=X' flag, which can be specified when
	    running these commands on the Commit Server to force the deletion
	    of clients and their changes which are bound to an Edge Server.

	#1046908 (Job #78471) **
	    The 'p4 info' command now includes information about the server
	    services, if this server has a 'p4 server' spec, and about the
	    replica target, if this server is a replica. This information was
	    previously present only when the tagged form of 'p4 info' was used.

	#1046060 (Job #73967) **
	    'p4 -ztag servers' could report incorrect values for the 'User'
	    field for server specs upgraded from an older release.

	#1045565 (Job #78497) **
	    Promoting a shelf, then subsequently deleting it, using the same
	    network connection to the Edge Server could fail to properly
	    delete the shelf.

	#1042783 (Job #78427) *
	    'p4 -P <ticket> sync --parallel' will no longer give authentication
	    errors for the file transfer sub-processes.

	#1042222 (Job #68933) **
	    Fixed unpromoted changelists being omitted from "p4 changes" output
	    for large task streams.

	#1042162 (Job #77612) **
	    Fixed spurious "can't purge active task stream files" when running
	    obliterate with a narrow revision range across a wide depot path.

	#1040989 (Job #77820) **
	    Increased the default value of 'net.backlog' from 10 to 128
	    to make the server more resilient to heavy usage spikes.

	#1039831 (Job #73075, #74961) **
	    The revision specifier @client was not working properly for
	    clients bound to a build-server.

	#1039277 (Job #78383) **
	    A 'p4 describe' command which accesses a remote promoted shelf now
	    properly reports any communications-related error conditions which
	    occur when retrieving the remote shelf.

	#1039178 (Job #77617) **
	    'p4 resubmit' can now resubmit an unsubmitted change which
	    involved the oldest non-purged revision of a file of type +S.

	#1070355 (Job #77551) **
	    'p4d -i' when run under inetd on unix no longer shows 'unknown'
	    for all addresses.

	#1037755 (Job #76982) *
	    If a 'p4 sync --parallel' child process encounters an error
	    writing files to the local machine, the parent 'p4 sync' command
	    now returns a non-zero exit status to the operating system.

	#1037679 (Job #78142) **
	    The 'p4 admin resetpasword' command now allows the passwords of
	    users who authenticate against the Perforce database to be reset
	    when LDAP authentication is enabled.

	#1037486 (Job #76283) **
	    Performance of 'p4d -z -jv <file>' is substantially improved.

	#1140112 (Job #71839) **
	    When 'p4 shelve -d -c NNN' was used on an Edge Server to delete a
	    promoted shelf, an error message 'Change NNN unknown' was
	    incorrectly reported in the Edge Server log.

	#1037192 (Job #78009) **
	    It is no longer allowed to create a client named
	    _____CLIENT_UNSET_____. Any existing client by this name can
	    still be used, but you should plan to delete such a client (if you
	    have created one) as soon as possible, for it can interfere with
	    the use of P4V against this server.

	#1036485 (Job #77069) **
	    A 'p4 describe -S' command on an Edge Server which specified more
	    than 1 promoted shelf which was created on a different Edge Server
	    would fail with an 'Unknown changelist' message.

	#1036596 (Job #77433) **
	    In a distributed configuration, 'p4 unshelve' no longer takes
	    the global exclusive file lock for a file of type +l which is
	    unshelved for add.

	#1035121 (Job #78036) **
	    The 'p4 attribute' command is not allowed on a server which was
	    created by 'p4 init'; also, when a revision is copied to another
	    server by the 'p4 fetch', 'p4 push', or 'p4 unzip' commands, its
	    traitLot field is automatically cleared in the destination.

	#1034765 (Job #75636) **
	    A server which has a P4NAME, but does not have a server.id file,
	    will now read the configuration information from the server spec
	    with ServerID = <that P4NAME>, if such a server spec exists.

	#1032558 (Job #78084) **
	    'p4 push -n -v' and 'p4 fetch -n -v' no longer report that
	    changelists to be pushed/fetched would be renumbered as change #0.

	#1032010 (Job #74056) **
	    'p4 sync --parallel' would fail to expand RCS keywords properly.

	#1031176 (Job #76013) **
	    'p4d -xx db.working db.have' could create spurious delete records
	    for db.working if a file opened for move or delete is subsequently
	    moved and submitted by another client and the opened file is
	    then synced to the head revision.

	#1030772 (Job #77871) **
	    'p4 -ztag pull -l -s' now provides tagged output.

	#1030313 (Job #77559) **
	    A build-server replica would incorrectly process the View: field
	    for labels, causing the wrong set of revisions to be specified
	    by the label.

	#1028751,#1204292 (Job #56707) **
	    The presence of a client spec with the same name as the TCP/IP
	    address of a replica machine no longer causes that replica to
	    issue the error: "Don't know how to translate paths for OS ''".

	#1028372,#1028461 (Job #77558) **
	    A replica with lbr.replication=cache was not able to access
	    labels using the autoreload option.

	#1027668 (Job #77595) **
	    'p4 export -f' now formats the domain type column correctly for
	    unloaded clients, unloaded labels, and unloaded task streams.

	#1026707 (Job #77504) ** *
	    'p4 -Zproxyload sync --parallel=...' now correctly updates the
	    proxy's archive cache without sending files to the client.

	#1026534 (Job #77280) **
	    If a change submitted via an Edge Server was rejected by a
	    change-submit or change-content trigger on the Commit Server,
	    the change's files were modified to read-only mode on the client
	    machine rather than being left in writable mode.

	#1026233 (Job #77435) **
	    A 'p4 integ' or 'p4 unshelve' command on an Edge Server which
	    failed to open a +l file due to a client-side file transfer error
	    would leave an orphaned lock record in db.excl.

	#1025869 (Job #77886) **
	    A parsing problem with the 'p4d -i' flag is resolved.

	#1025619 (Job #77726) **
	    'p4 unsubmit' commands which have multiple arguments, and which
	    terminate due to an error while processing an argument other than
	    the first, now correctly sync the workspace with all the work
	    that was successfully unsubmitted prior to that error.

	#1025545 (Job #77656, #77672) **
	    Audit log records for the push, fetch, zip, and unzip commands,
	    in both the structured audit log and the P4AUDIT log, now have
	    improved precision and additional detail.

	#1025484 (Job #77626) **
	    The 'p4 unsubmit' and 'p4 resubmit' commands are not available
	    on an Edge Server, and issuing them against an Edge Server now
	    gives an error message.

	#1025380 (Job #77326) **
	    'p4 zip' no longer creates an empty zip file if the specified
	    fileset is empty.

	#1024502 (Job #77719) *
	    The 'p4 init' or 'p4 clone' commands, when they connect to a
	    shared server, would cause log records to be written as an
	    "unknown" client program and "unknown" program version.

	#1011878 (Job #77507) **
	    Integrate now reports "integrated in pending changelist" when
	    repeatedly integrating into a moved file.

	#1002449 (Job #77266) **
	    On a replica server, 'p4 monitor show' incorrectly displayed
	    paused background threads as terminated, and 'monitor show -s P'
	    didn't display paused background threads at all.

	#996993 (Job #75866) **
	    A replica which has ArchiveDataFilter specified in its server
	    spec will now pull archive contents for lazy copied files which
	    satisfy the filter.

	#996812 (Job #76749) **
	    On a Windows server, a depot with Map: field specified using
	    Windows-style path syntax (E:\depot\...) could not be deleted
	    with depot -d even though the directory was in fact empty.

	#998869 (Job #73278) **
	    A replica with rpl.checksum.change set to 2 or higher might
	    incorrectly report that a changelist checksum differed if the
	    changelist was submitted by a workspace with SubmitOptions =
	    revertunchanged and at least one unchanged file was reverted
	    during the submission of that changelist.

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

Major new functionality in 2015.1

	#877419 ** *
	    DVCS workflow support has been added to Perforce. Use this new
	    functionality to accomplish the following goals:

	    1) You can create a 'personal server' that you can use to manage
	       versioned content all by yourself, without interacting with
	       any other Perforce server unless you want to.

	    2) You can copy work between Perforce servers to implement
	       various collaboration workflows.

	    3) You can rewrite and revise history to discard unwanted
	       intermediate information.

	    Use the 'p4 init' command to create a new personal repository,
	    or use the 'p4 clone' command to create one with files from an
	    existing server.  Use the 'p4 switch' command to create new
	    streams, and to switch back and forth between existing streams.

	    Use the 'p4 fetch' and 'p4 push' commands to copy work back and
	    forth between servers, either peer-to-peer or in a hub-and-spoke
	    or hierarchical arrangement. Use the 'p4 remote' and 'p4 remotes'
	    commands to manage connections to multiple partner
	    repositories.

	    Use the 'p4 unsubmit' and 'p4 resubmit' commands to rewrite and
	    revise history prior to pushing that work to other servers.

	    The new fetch, push, and unsubmit functionality is disabled by
	    default, even after upgrading your server executable to 2015.1. To
	    enable the new functionality, you must set the 'server.allowpush',
	    'server.allowfetch', and/or 'server.allowrewrite' configurables
	    to enable the desired level of operation.

	    New trigger types and trigger variables are available.

	    See 'p4 help dvcs' for complete information.

	#856900 **
	    Compression of db.have table. By encoding the depot path field
	    with an offset into the client path field, db.have records have
	    been reduced by up to 35%.  Checkpoint and journal files will
	    continue to have the expanded form.  This space saving will
	    happen over time as clients get resynced. Admins who regularly
	    restore from a checkpoint will notice this the first time the
	    table is restored.

Minor new functionality in 2015.1

	#1010616 (Job #77331) **
	    The server spec has a new field, 'ExternalAddress', to specify
	    the external address on an edge server that is used for
	    connections from a commit server. Although it is an optional
	    field, it must be set in the edge server spec in order for
	    parallel submit commands to work in a federated environment.

	#986989 (Job #53185) * **
	    'p4 submit' 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 order to run a parallel submit, the configurable
	    net.parallel.max must be set to a value greater than 1.

	#976359 (Job #76507) **
	    The 'p4 unlock' command now includes the -r flag to allow unlocking
	    files left locked by a failed 'p4 push' or 'p4 fetch' command.

	#969791 (Job #75172) **
	    Peek locking information now reported along with normal
	    lock information

	#968391 (Job #74665) **
	    'p4 rec' is a now a synonym for 'p4 reconcile'.

	#967271 (Job #75557) **
	    Now 'p4 status' displays files already opened in addition to
	    files that need to be reconciled.

	#966422 (Job #75520) **
	    New command 'p4 admin setldapusers' allows a super user to update
	    all non-super, standard users to use LDAP authentication in a single
	    command.

	#965070 (Job #76237) **
	    Previously 'p4 servers' and 'p4 servers -J' could not be run by an
	    operator.  Now an operator can run the 'p4 servers [-J]' commands,
	    which allow operators to monitor the replication status of a
	    group of replicas.

	#964882 **
	    'fstat -Oh' is now lockless on db.rev and db.revtx at db.peeking=3.

	#964603 (Job #55582) **
	    Previously 'p4 journalcopy' and 'p4 pull' could be run only by a
	    superuser.  Now an operator can run 'p4 pull -l -j', 'p4 pull -l',
	    and 'p4 journalcopy -l'.  This allows operators to monitor the
	    replication status of a replica.

	#963443 (Job #65298, #74627) **
	    The new 'mergeany' stream option allows flow rules for 'p4 merge'
	    to be ignored for a particular stream.  The default option of
	    'mergedown' preserves the previously existing flow rules.  Streams
	    created by 'p4 switch' on a personal server use 'mergeany'.

	#963085 (Job #75519) **
	    The LDAP automatic user creation feature enabled as part of setting
	    'auth.default.method' to 'ldap' has been moved to a new configurable
	    'auth.ldap.userautocreate'. In order to allow 'p4 login' to create
	    user automatically after successful authentication against an LDAP
	    server, the 'auth.default.method' configurable must be set to 'ldap'
	    and the 'auth.ldap.userautocreate' must be set to 1.

	#962982 (Job #75562) **
	    New simpler syntax for 'p4 merge' with streams.  If no arguments are
	    specified, the target defaults to the current stream, and the source
	    defaults to the current stream's parent.  A different source can be
	    specified with '--from STREAMNAME', which is an alias for '-P'.  The
	    stream may be specified as a directory name relative to the current
	    stream depot, e.g. '--from main' instead of '--from //Ace/main'.

	#962680 (Job #19474) **
	    New command 'p4 ldapsync -g' updates Perforce groups' users list to
	    match the members of an LDAP group. This requires LDAP fields on the
	    group specifications to be set for any group that is to be
	    synchronized with an LDAP group.

	#959007 (Job #75748) **
	    The read-only LDAP search user's password is no longer stored in
	    cleartext in the LDAP configuration spec files.

	#952949 **
	    'p4 sync' will now automatically resolve files where the previously
	    synced version does not differ from the newer depot revision.

	#946084 (Job #64757) **
	    'p4 revert' now supports a new flag '-C client'. This flag allows
	    a user with admin privilege to revert files opened in another
	    client.

	#938958 (Job #4063) *** ** *
	    The Windows platform can now support filenames longer than
	    260 characters.  The filesys.windows.lfn=1 tunable must be set
	    where ever this functionality is required, Client and Server.

	#936955 (Job #75207) **
	    'p4 reconcile' will now detect files that are open for delete but
	    are physically present on the client, and reopen them for edit.

	#930083 (Job #71699) **
	    'p4 interchanges' now reports changes that consist solely
	    of 'ignored' integrates if those changes have not yet been
	    integrated into the target.

	#907436 **
	    The new '-r' flag for 'p4 sync' permits pending work to be carried
	    over to a different file when the client view is changed.  For
	    example, pending work can be moved to a different stream by running
	    'p4 client -f -s' followed by 'p4 sync -r'.

	#901864 * **
	    'p4 status -s' previews files needing reconcile, but lists
	    files to be opened for add in subdirectories rather than
	    individually.

	#900158 (Job #68860) **
	    'p4 add' now traverses the workspace when given a file argument
	    containing '...', similar to 'p4 reconcile -a'.

	#897834 (Job #74382) *
	    'p4 -G' now accept marshalled inputs from Python version 3 or
	    later.

	#861918 (Job #72999) **
	    An unnecessary update to the db.locks table has been removed from
	    the file transfer phase of 'p4 submit'.

Bugs fixed in 2015.1

	#1463567 (Job #86424) **
	    Edge Servers might halt replicating if an obliterate command
	    was run concurrently with a very large populate or submit command.

	#1458557 (Job #89052) **
	    A forwarding replica with lbr.replication=shared will no longer
	    attempt to update the (shared) archive area during the file
	    transfer phase of a forwarded 'p4 submit'. The cache-on-submit
	    behavior is still present for forwarding replicas with
	    lbr.replication set to either readonly or cache.

	#1455848 (Job #88980) **
	    In replica chaining configurations, replicas which were not
	    directly connected to the master server were not processing
	    archive deletion operations arising from operations such as
	    submission of a binary+S file, deletion of a shelf, obliteration,
	    archive depot operations or retype +l commands.

	#1419606 (Job #87773) **
	    An optimization in 'p4 integrate' for directly related files
	    was broken by change 901775, causing some integrates to take longer
	    than necessary in the presence of large numbers of branches.  Fixed.

	#1412767 (Job #87638) *
	    The 'p4 init' command would write a small number of journal
	    records to the end of the file specified by P4JOURNAL, if set.
	    The local server initialization is now performed with -J off.

	#1411325 (Job #81360) **
	    A 'p4 fetch' command which transferred both a text (RCS) file whose
	    archive was already present in the destination server and a lazy
	    copy of that file, would leave the lazy copy corrupt. 'p4 verify'
	    would report 'MISSING!' and requests for the file's content would
	    report 'RCS checkout  failed!'.

Bugs fixed in 2015.1 PATCH17

	#1410678 (Job #87181) **
	    Correct the digest used to ensure that content is transferred
	    correctly to commands within triggers (such as a 'change-content'
	    trigger) when submitting a shelf. A shelf is implicitly submitted
	    to the commit server when a submit is run on an edge server.

	#1395561 (Job #86855) **
	    Multi-threaded applications using the same connection could
	    disrupt the flow control of long running commands like submit.
	    This change prevents the server from executing any more callbacks
	    as soon as the problem is detected.

	#1379035 (Job #86262) **
	    Improve performance around structured logs. Log writers will
	    now only acquire a shared lock on the 'logrotate' server meta
	    lock when there are actually writes to the structured logs.

	#1378935 (Job #85991) **
	    Report to stderr (except on Windows), and syslog or
	    the event log (as supported by the platform), any errors
	    encountered when writing to the server log or a structured log.

	#1365883 (Job #85680) **
	    Improve concurrency around structured logs. Log writers will
	    now acquire a shared lock instead of an exclusive lock on the
	    'logrotate' server meta lock to block log rotations.

	#1352542 (Job #85157) *
	    The MacOSX command line client could fail to complete a parallel
	    sync if two or more parallel transfers attempted to create the
	    same directory in the filesystem at the same time; the failing
	    file transfer would print: "mkdir: /path/to/dir: File exists".

	#1341013 (Job #84992) **
	    If an archive file for a local shelf on an Edge Server should
	    become damaged or missing, deleting the shelf, or deleting or
	    replacing that file in the shelf, will now cancel any pending
	    file transfer for that file which was listed in 'pull -l'.

	#1340637 (Job #77782) **
	    The archive deletion journal records for archives deleted by
	    certain shelve and submit command forms are now written in
	    individual journal transactions, which can improve the
	    responsiveness of replicas waiting for the archive deletion
	    to complete.

	#1337988 (Job #84848) ** *
	    'p4 -Zproxyverbose sync --parallel=...' now correctly displays the
	    diagnostic information about which files were delivered from the
	    proxy's cache.

	#1335377 (Job #84710) **
	    The fix for bug 70118 is generalized, and now applies to all
	    server platforms.

	#1332907 (Job #84705) **
	    A failed 'p4 fetch' or 'p4 push' operation now removes any
	    archive files which it copied to the destination server prior
	    to the failure.

	#1323224 (Job #84441) *
	    'p4 clone' would mis-handle depot file paths containing spaces.

	#1313382 (Job #84023) **
	    The 'p4 zip -A' command could fail to include all the necessary
	    archive files, leading to an "archive entry missing" error when
	    running 'p4 unzip -A' subsequently.

	#1312636 (Job #76913) **
	    'p4 files <filespec>' when using a revision specifier
	    other than #head (e.g. @label), or a revision range ending
	    with a revision specifier other than #head, will now access
	    the rev table in lockless mode. 'p4 files <filespec>@label'
	    will now also access the label table in lockless mode.
	    'p4 files <filespec>@change,@change' will now also access
	    the revcx table in lockless mode. And at 'db.peeking=3',
	    'p4 files <filespec>' will now access the rev table in
	    lockless mode, even if not using a revision specifier
	    or a revision range.

Bugs fixed in 2015.1 PATCH10

	#1250127 (Job #81342) **
	    Under certain conditions a 'change-failed' trigger could run while
	    the parent 'submit' process was holding locks, this could cause
	    a deadlock.

	#1249596 (Job #81329) **
	    'p4 changes -s pending' could scan the db.workingx database
	    table unnecessarily when a lot of restricted shelved changes
	    are present.

	#1248997 (Job #79381, #79384) * ** ***
	    With Windows long filename support enabled, submitting a text
	    file with a depot repository name just over 260 characters in
	    length could cause the submit to fail.

	#1247146 (Job #81257) **
	    'p4 submit' from an edge server was incorrectly applying the
	    shelve configurables 'dm.shelve.maxfiles' and 'dm.shelve.maxsize'
	    as part of its file transfer process.

	#1244865 (Job #77040) **
	    Large fech/push operations are now more concurrent. Specifically,
	    the write lock on the db.counters table is held for a much
	    shorter duration.

	#1242778 (Job #81040) **
	    The server.locks.archive configurable introduced by #898102 now
	    also applies to the 'p4 restore' command.

Bugs fixed in 2015.1 PATCH9

	#1240752 (Job #80943) **
	    'p4 integrate' can suffer from performance problems (excessive
	    db.revhx scanning) when using wildcards at a shallow depth.
	    This has been fixed.

	#1239015 (Job #80722) **
	    A file which was integrated from a streams depot to a local
	    depot, or vice versa, would be placed into the wrong location in
	    the proxy cache if it was accessed via the proxy by a command
	    such as 'p4 sync' or 'p4 print'. Note that the symptom of this
	    bug is in the proxy cache, but the fix is in the server.

	#1236012 (Job #80864) **
	    A mistake in the 'p4 remote' file mapping lines will no longer
	    allow a 'p4 fetch', 'p4 push', or 'p4 zip' command to generate
	    filenames with illegal depot syntax.

	#1235448 (Job #80818) **
	    If a fetch, push, or unzip command imported a move/delete revision
	    which was created by a pre-2013.1 server, and the revision of
	    that file immediately prior to the move/delete revision was an
	    integration from a location which was not covered by the remote
	    map used by the fetch/push/unzip command, the metadata for the
	    move/delete revision could be damaged.

	#1235330 (Job #80774) **
	    Improve security by increasing randomness in tickets generated
	    by 'p4 login'.

	#1234699 (Job #79472) **
	    'p4 copy' will no longer consider invisible charset metadata when
	    determining whether two files are already identical.

 	#1234699 (Job #80762) **
 	    'p4 resolve -at' between files with differing charsets will now
 	    copy the charset metadata even if server.filecharset is not set.
 	    This prevents the 'copy from' resolve record from downgrading to
 	    a 'merge from' due to the charset difference.

	#1228149 (Job #80494) **
	    A change with a missing db.desc record could cause a server crash
	    if that change was accessed by a fetch, push, or zip command.

	#1225954,1226981 (Job #80379) * **
	    On Windows an uninitialized variable could cause a file
	    rename to fail.  This has been corrected.

Bugs fixed in 2015.1 PATCH8

	#1225954 (Job #80379) * **
	    On Windows an uninitialized variable could cause a file
	    rename to fail.  This has been corrected.

	#1225235 (Job #74936) **
	    A 'sync --parallel' command issued via a forwarding replica would
	    complete immediately, but would sync no files.

	#1223646 (Job #80332) **
	    If a fetch/push command was issued with a Commit Server or Edge
	    Server as the destination of the fetch/push, and the set of files
	    being copied included some files of type +l, and the command was
	    interrupted or cancelled (e.g., using ^C), then the files of type
	    +l were left exclusively locked by a client with an invalid
	    client name (the name was wrongly prefixed by a double slash).

	#1222805 (Job #72888, 80283) * ** ***
	    When using SSL with an X.509 certificate whose key size is
	    greater than 2048 bits, then servers and clients could crash
	    or (possibly) exhibit other incorrect behavior while calculating
	    the certificate fingerprint during connection establishment.
	    Similarly, 'p4d -Gf' and 'p4p -Gf' could crash while calculating
	    the certificate fingerprint.  This has been corrected.

	#1218770 (Job #38284) **
	    Fixed a case where 'p4 annotate -i/-I' could perform excessive
	    database scans and consume large amounts of memory with a combination
	    of extensive integration history and a complex protection table.

Bugs fixed in 2015.1 PATCH7

	#1216917 (Job #80122) **
	    Change #1128864 addressing server log rotation issues on windows
	    server platform introduced some instability into the server that
	    could cause a recursive loop leading to a crash.

	#1216335 (Job #80086) **
	    Correct high ascii character handling when the Windows Server is
	    in unicode mode, related to long file name handling.

	#1215896 (Job #78784) **
	    Submitting to a combination of task stream path and Import+ path
	    in the same changelist is not allowed, but not prevented. This
	    change catches the combination and rejects the submit, the user
	    has to resubmit changes to the filepaths in separate submits.

	#1215836 (Job #79924) **
	    Extremely rare Btree problem would cause the p4d service to hang
	    while database tables are locked.  Fixed.

	#1213580 (Job #79647) **
	    p4d -jr would mis-handle the revStatus field if replaying db.rev
	    journal records written by a 2005.2 or older server.

Bugs fixed in 2015.1 PATCH6

	#1204381, #1028849 (Job #56707) **
	    The presence of a client spec with the same name as the TCP/IP
	    address of a replica machine no longer causes that replica to
	    issue the error: "Don't know how to translate paths for OS ''".

	#1202710 (Job #44639, #63140, #74807) **
	    The verify command now supports the -S flag to specify that
	    shelved files are to be verified. This flag can also be combined
	    with the -t flag on a replica to schedule the transfer of any
	    missing or damaged shelf archives from the master server.

	#1201560 (Job #79689) **
	    Files that have been renamed, copied over from unrelated files, and
	    then deleted will now resolve automatically when integrated into
	    other branches where none of those things have happened.

	#1178443 (Job #79473) *** ** *
	    The Windows support for filenames longer than 260 characters will
	    now handle highbit ascii characters correctly.

	#1172450 (Job #79504, #79402) **
	    A submit initiated on an Edge Server which failed due to a
	    problem detected after the edge-content trigger had been checked
	    could leave the changelist incorrectly marked as "shelved", and
	    possibly also as "promoted", on the Commit Server, although the
	    changelist was correctly recorded on the Edge Server itself.

Bugs fixed in 2015.1 PATCH5

	#1142007 (Job #79341) **
	    Since change 1017756, in a Commit/Edge configuration, when
	    'p4 shelve -d' deleted a promoted shelf, the fix records for
	    jobs which were attached to the pending changelist were
	    incorrectly removed.

	#1140112 (Job #71839) **
	    When 'p4 shelve -d -c NNN' was used on an Edge Server to delete a
	    promoted shelf, an error message 'Change NNN unknown' was
	    incorrectly reported in the Edge Server log.

	#1130584 (Job #79238) **
	    Searches for rename history when integrating renamed files will now
	    stop once a common ancestor has been found.

	#1128864 (Job #70118,#70738) **
	    Windows servers using the serverlog.maxmb setting will no longer
	    generate duplicate server log files when rotation occurs under
	    heavy load. As a result of this change, server lockfiles under
	    the 'server.locks/meta' subdirectory are no longer stored in
	    numbered subdirectories, so the lockfiles will be named
	    'server.locks/meta/db', 'server.locks/meta/journal', etc.

	#1128635 (Job #79104) **
	    Since change 616010, the 'p4 sync' and 'p4 integrate' commands
	    have been enforcing the MaxResults limit, if set, on the size of
	    the intermediate results of the sync or integrate command,
	    which could in some situations mean that the user's MaxResults
	    setting had to be large enough to contain their entire have list.
	    Now the MaxResults limit is enforced only on the size of the
	    final results of the sync or integrate command.

	#1127296 (Job #79353) **
	    A 'sync --parallel' command which sync'd any files of type 'binary'
	    would write an incorrect value for the 'type' field of the db.have
	    record for the binary file(s). This could cause problems later
	    when integrating changes into these files from other branches.
	    Any workspaces potentially affected by this bug should be sync'd
	    to revision #0 and then re-sync'd for all files of type binary at
	    their convenience in order to rewrite the db.have records.

	#1126925 (Job #79178) **
	    A new configuration parameter 'rejectList' has been added to
	    reject certain application/version combinations from the server.
	    For example to reject the 2014.2 version of P4EXP:
	    configure set "rejectList=P4EXP,version=2014.2,Operating System"

Bugs fixed in 2015.1 PATCH4

	#1099652 (Job #79317) **
	    Fixed a filename resolve base selection issue where a file had
	    been moved back and forth on a series of ancestor branches
	    while being intermittently copied over.

	#1099588 (Job #79249) **
	    The fix for Job #64713 has caused a regression with 'p4 reopen'
	    behavior with default changelists.  Consequently, change #782990
	    has been backed-out.

	#1098936 (Job #77687) **
	    The 'p4 init' and 'p4 clone' commands can now be used from a
	    directory with a name containing one of the Perforce wildcard
	    characters (@/#/%/*).

	#1098195 (Job #79298) **
	    Change #771609 introduced a performance regression with
	    'p4 filelog' that could cause excessive scanning of db.integed.

	#1097831 (Job #72558) ** *
	    On Mac OS X, Perforce variables are no longer retrieved from user
	    or system preferences in your Mac preferences folder. The Perforce
	    variables on Mac OS X now behave in the same way as they do on other
	    Unix-like platforms, including the use of P4ENVIRO files. This means
	    that 'p4 set -s' no longer has any effect on Mac OS X.

Bugs fixed in 2015.1 PATCH3

	#1078790 (Job #79275) **
	    Fixed a case involving a remerge after various move, delete,
	    re-add, and copies.

	#1071011 (Job #75098) **
	    'p4 cstat' now runs (fully) lockless when peeking is set to 3.

	#1070381 (Job #79139) **
	    The zip file written by 'p4 zip -A' was missing archive content
	    for branched files if the '-r' flag was omitted.

	#1070377 (Job #79171) **
	    A 'p4 fetch/push/unzip' command on a highly active server could
	    diagnose conflicts incorrectly.

	#1070360 (Job #77551) **
	    'p4d -i' when run under inetd on unix no longer shows 'unknown'
	    for all addresses.

	#1070184 (Job #79180) **
	    LDAP authentication using the SASL bind method now uses /dev/urandom
	    instead of /dev/random to avoid depleting the system's entropy pool.

	#1069094 (Job #79106) **
	    Running many concurrent 'p4 unzip' processes could cause a server
	    crash and potential btree corruption.

	#1067856 (Job #79123) **
	    Fixed a case where renamed files might not match up with each
	    other during an integrate if they were not branched from each
	    other originally, but were instead subsequently copied over each
	    other in a baseless integrate or copy.

	#1067584 (Job #79110) **
	    In a distributed configuration, 'p4 submit -e --parallel' run
	    from an edge server would silently ignore valid parallel
	    options and would run in non-parallel mode. This has been fixed.

	#1066073 (Job #79045) **
	    In a distributed configuration, the command 'p4 switch' could
	    error with the message 'Slashes (/) not allowed in <streamname>'.
	    This would cause the switch shelf (stash) to not be deleted.

	#1065481 (Job #77360) **
	    In a distributed configuration, the 'edit -n' and 'delete -n'
	    commands for a file of type +l might incorrectly report that
	    the file was opened by another user, though it was not.

Bugs fixed in 2015.1 PATCH2

	#1063251 (Job #78965) **
	    'p4 fetch' on a case-insensitive server would fail with a file
	    transfer error when fetching multiple revisions of a file of type
	    text if the revision names differed in case.

	#1062781 (Job #74254 ) **
	    Tagged output for 'p4 submit' from an edge server no longer
	    generates duplicate entries for depotFile, rev, and change.

	#1062239 (Job #78917 ) * **
	    'p4 submit --parallel' now works with certain custom licenses.

	#1062090 (Job #79018) **
	    'p4 changes <filepath>' has been optimized by adding a flag
	    to terminate processing at an end point '-e changelist'.

	#1061247 (Job #78830,#78915) **
	    A replica with rpl.checksum.change set to 2 or higher might
	    incorrectly write its own journal file under conditions of high
	    concurrency on the master, resulting in incorrect behavior and
	    problems with replicas of this replica.

	#1059780 (Job #78855) * **
	    'p4 sync --parallel' now works with certain custom licenses.

	#1059694 (Job #78818) *
	    Usernames containing backslash characters no longer cause 'p4 init'
	    or 'p4 clone' to fail.

	#1058704 (Job #78785) **
	    If a replica with rpl.checksum.change set to 2 or higher
	    encountered an internal error processing a changelist checksum
	    note, it would halt replication. Now, it logs the error but
	    resumes replication.

Bugs fixed in 2015.1 PATCH1

	#1051000 (Job #78647) **
	    On an Edge Server with submit.unlocklocked=1, a submit which fails
	    with "Out of date files must be resolved or reverted" could
	    incorrectly alter the resolve state of the open files if the
	    conflicting change was submitted simultaneously.

	#1047834 (Job #78444) **
	    The replica-specific table db.user.rp is now journaled. This means
	    that the table data will appear in checkpoints, journals and
	    dumps. The replica pull thread automatically filters out all
	    db.user.rp records from its P4TARGET server, which is normally the
	    desired behavior, since records in this table are unique to each
	    replica's activity. However, for maintaining warm standby replicas
	    of other replicas, you can set rpl.replay.userrp=1 for the standby
	    replica to disable the filtering and replicate db.user.rp data.

	#1046060 (Job #73967) **
	    'p4 -ztag servers' could report incorrect values for the 'User'
	    field for server specs upgraded from an older release.

	#1045565 (Job #78497) **
	    Promoting a shelf, then subsequently deleting it, using the same
	    network connection to the Edge Server could fail to properly
	    delete the shelf.

	#1042871 (Job #78427) *
	    'p4 -P <ticket> sync --parallel' will no longer give authentication
	    errors for the file transfer sub-processes.

	#1040963 (Job #78416) **
	    The new command 'p4 switch' was incorrectly forwarding when
	    executed from an edge server.

	#1039853 (Job #73075, #74961) **
	    The revision specifier @client was not working properly for
	    clients bound to a build-server.

	#1039277 (Job #78383) **
	    A 'p4 describe' command which accesses a remote promoted shelf now
	    properly reports any communications-related error conditions which
	    occur when retrieving the remote shelf.

	#1039178 (Job #77617) **
	    'p4 resubmit' can now resubmit an unsubmitted change which
	    involved the oldest non-purged revision of a file of type +S.

	#1037755 (Job #76982) *
	    If a 'p4 sync --parallel' child process encounters an error
	    writing files to the local machine, the parent 'p4 sync' command
	    now returns a non-zero exit status to the operating system.

	#1037486 (Job #76283) **
	    Performance of 'p4d -z -jv <file>' is substantially improved.

	#1036596 (Job #77433) **
	    In a distributed configuration, 'p4 unshelve' no longer takes
	    the global exclusive file lock for a file of type +l which is
	    unshelved for add.

	#1036485 (Job #77069) **
	    A 'p4 describe -S' command on an Edge Server which specified more
	    than 1 promoted shelf which was created on a different Edge Server
	    would fail with an 'Unknown changelist' message.

	#1036167 (Job #76002) **
	    Stream 'import+' paths are not being referenced when the stream
	    type is virtual.  This was causing warnings on 'p4 edit' and a
	    failure on 'p4 submit' of any files within these import+ paths.
	    Fixed.

	#1035768 (Job #78164) **
	    In a distributed environment, the change-failed trigger now
	    runs on the commit server rather than on the edge server.

	#1035121 (Job #78036) **
	    The 'p4 attribute' command is not allowed on a server which was
	    created by 'p4 init'; also, when a revision is copied to another
	    server by the 'p4 fetch', 'p4 push', or 'p4 unzip' commands, its
	    traitLot field is automatically cleared in the destination.

	#1032010 (Job #74056) **
	    'p4 sync --parallel' would fail to expand RCS keywords properly.

	#1031176 (Job #76013) **
	    'p4d -xx db.working db.have' could create spurious delete records
	    for db.working if a file opened for move or delete is subsequently
	    moved and submitted by another client and the opened file is
	    then synced to the head revision.

	#1033960 (Job #78106) **
	    In a distributed environment (edge/commit) promoting of shelves
	    to the commit server could result in a long duration lock being
	    held over multiple commands.  This would be more visible when
	    using P4V rather than the command line.

	#1033794 (Job #75637) **
	    'p4 help administration' now lists the three LDAP related commands:
	    'p4 ldap', 'p4 ldaps' and 'p4 ldapsync'.

	#1032558 (Job #78084) **
	    'p4 push -n -v' and 'p4 fetch -n -v' no longer report that
	    changelists to be pushed/fetched would be renumbered as change #0.

	#1033412 (Job #78198) * ** ***
	    Updated version of OpenSSL to 1.0.1m to address possible
	    vulnerabilities: CVE-2015-0287, CVE-2015-0293, and
	    CVE-2015-0288.

	#1032557 (Job #76351)
	    Performance problems in a distributed environment exhibited by
	    'p4 submit' and 'p4 shelve -p' introduced by change 969974 is
	    addressed. Specifically, file transfer time was degraded under
	    conditions of high latency when submitting or promoting changes
	    with many files.  This problem that was introduced in the
	    initial 2015.1 release has been fixed.

	#1032042 (Job #74056) **
	    'p4 sync --parallel' would fail to expand RCS keywords properly.

	#1031202 (Job #76013) **
	    'p4d -xx db.working db.have' could create spurious delete records
	    for db.working if a file opened for move or delete is subsequently
	    moved and submitted by another client and the opened file is
	    then synced to the head revision.

	#1030772 (Job #77871) **
	    'p4 -ztag pull -l -s' now provides tagged output.

	#1030698 (Job #77559) **
	    A build-server replica would incorrectly process the View: field
	    for labels, causing the wrong set of revisions to be specified
	    by the label.

	#1030610 (Job #77873) **
	    'p4 protects -u' for a service/operator user was showing protects
	    access to content, although service/operator users cannot be used
	    to browse or update a repository.

	#1030042 (Job #77728) **
	    The 'min' argument of the '--parallel' options is now correctly
	    enforced when submitting through an edge server.

	#1029907 (Job #78113) **
	    'p4 switch' and 'p4 switch -l' were taking out an unnecessary
	     client lock.

	#1029218 (Job #78099) **
	    'p4 fetch' and 'p4 push' no longer cause an "unknown command"
	    error when the remote server is a DCS node.

	#1028633 (Job #77558) **
	    A replica with lbr.replication=cache was not able to access
	    labels using the autoreload option.

	#1028018 (Job #78012)
	    Performance problems in a distributed environment exhibited by
	    'p4 submit' and 'p4 shelve -p' introduced by change 969974 is
	    addressed. Specifically, file transfer time was degraded under
	    conditions of high latency when submitting or promoting changes
	    with many files.  This problem that was introduced in the
	    initial 2015.1 release has been fixed.

	#1027765 (Job #77595) **
	    'p4 export -f' now formats the domain type column correctly for
	    unloaded clients, unloaded labels, and unloaded task streams.

	#1026750 (Job #77504) ** *
	    'p4 -Zproxyload sync --parallel=...' now correctly updates the
	    proxy's archive cache without sending files to the client.

	#1026544 (Job #77280) **
	    If a change submitted via an Edge Server was rejected by a
	    change-submit or change-content trigger on the Commit Server,
	    the change's files were modified to read-only mode on the client
	    machine rather than being left in writable mode.

	#1026312 (Job #77435) **
	    A 'p4 integ' or 'p4 unshelve' command on an Edge Server which
	    failed to open a +l file due to a client-side file transfer error
	    would leave an orphaned lock record in db.excl.

	#1025869 (Job #77886) **
	    A parsing problem with the 'p4d -i' flag is resolved.

	#1025589 (Job #75647) **
	    'p4 unload -c' from an edge server now allows unloading of clients
	    with promoted shelves.

	#1025619 (Job #77726) **
	    'p4 unsubmit' commands which have multiple arguments, and which
	    terminate due to an error while processing an argument other than
	    the first, now correctly sync the workspace with all the work
	    that was successfully unsubmitted prior to that error.

	#1025545 (Job #77656, #77672) **
	    Audit log records for the push, fetch, zip, and unzip commands,
	    in both the structured audit log and the P4AUDIT log, now have
	    improved precision and additional detail.

	#1025484 (Job #77626) **
	    The 'p4 unsubmit' and 'p4 resubmit' commands are not available
	    on an Edge Server, and issuing them against an Edge Server now
	    gives an error message.

	#1025380 (Job #77326) **
	    'p4 zip' no longer creates an empty zip file if the specified
	    fileset is empty.

	#1024502 (Job #77719) *
	    The 'p4 init' or 'p4 clone' commands, when they connect to a
	    shared server, would cause log records to be written as an
	    "unknown" client program and "unknown" program version.

	#1024419 (Job #77730) **
	    The 'p4 ldapsync' could run on replicas, potentially changing the
	    contents of the replica's db.group table. This change restricts
	    'p4 ldapsync' so that it may only run on the master; replicas may
	    forward the command, if forwarding is enabled. If configured to run
	    in the background on a replica, 'p4 ldapsync' will immediately stop.

Bugs fixed in 2015.1

	#1017756 (Job #75344, #77391, #77392, #77395, #77421, #77577,
	              #77578) **
	    In a distributed installation, fix records for jobs would not
	    be global until submit.  This could lead to inconsistent
	    information depending on which edge server you were connected
	    to. With this change, all fix record modifications made through
	    'p4 change' or 'p4 fix' are distributed to all participating
	    servers.

	#1012267 (Job #77505) **
	    'p4 sync --parallel' could issue malloc errors when a user enters
	    a value for threads that overflows an integer. This has been
	    fixed.

	#1010386 (Job #77471) **
	    The 'reload -p' command, used to migrate a workspace from one
	    Edge Server to another, or between an Edge Server and the Commit
	    Server, failed in certain specialized licensing scenarios.

	#1008489 (Job #77390) **
	    In a distributed installation, a pending change can be viewed on
	    a server other than the server where the change was created. In
	    such a situation, the pending change will not display a list of
	    open files (the open files are shown only on the owning server).
	    The 'change -d' command would incorrectly allow the pending change
	    to be deleted if the command was issued on a server other than the
	    owning server; this behavior is fixed and the command is now
	    rejected with an appropriate error message.

	#1004762 (Job #77358) **
	    Fixed a crash that could occur when unshelving moved files to
	    a different branch.

	#1003603 (Job #77229) **
	    The istat command run against a task stream target was not detecting
	    delete actions in the parent stream, while the revisions in the task
	    stream had not been promoted.  Fixed.

	#1003287 (Job #77269) **
	    On a forwarding replica with server.depot.root set, a submit which
	    added new files to a depot with a relative mapping would cache
	    copies of those files in the default location under P4ROOT, instead
	    of in the directory named by server.depot.root

	#1002985 (Job #76685) **
	    Stream 'import+' paths defined in streams whose parent type is
	    virtual were not checking for the base (submittable) path of the
	    target stream, causing a warning on 'p4 edit' and failure on
	    'p4 submit'.  Fixed.

	#1001669 (Job #77231) *
	    P4CLIENTPATH checking would not allow filenames with '..'
	    as part of a path component.  Fixed.

	#999127 (Job #77223) **
	    Replication threads (pull or journalcopy) using "long poll"
	    (-i 0) could sometimes report a failure to open the wrong
	    journal file.  Fixed.

	#998869 (Job #73278) **
	    A replica with rpl.checksum.change set to 2 or higher might
	    incorrectly report that a changelist checksum differed if the
	    changelist was submitted by a workspace with SubmitOptions =
	    revertunchanged and at least one unchanged file was reverted
	    during the submission of that changelist.

	#992976 (Job #77084) **
	    'p4 -Ztag resolve -ot' now correctly displays the base for forced
	    text merges of binary files.

	#992705 (Job #77031) *
	    Client progress indicators now work for values of 1 million and
	    higher.

	#984381 (Job #76808) **
	    The Perforce Windows Service shutdown time has been been shortened
	    from a maximum of 120 seconds to a maximum of 15 seconds.  This
	    is bit more friendly to "net stop".

	#980686 (Job #76686) **
	    Parallel sync could under some high concurrency scenarios scan
	    too many rows from db.sendq. This has been fixed.

	#979648 (Job #76627) **
	    Authentication failure occurs attempting to use P4V or
	    P4VS clients -> swarm integration in a DCS configuration.

	#978994 (Job #76443) **
	    'p4 status' could produce corrupted filenames in its output
	    on windows platforms when the command is called with '/'
	    as part of the file argument. This has been fixed.

	#978936 (Job #76625) *
	    Commands that do checksum verification of client files were always
	    reporting symlink files on Windows clients as changed.  Fixed.

	#976632 (Job #76190) *
	    If a password was set via P4PASSWD or the -P option,
	    ticket lookups would fail.  These ticket lookups are needed
	    to check for valid logins on remote servers while
	    the local server is logged in via password.  Fixed.

	#976629 (Job #54717) **
	    If there was an invalid ticket in the ticket file
	    and a valid logged in ticket in P4PASSWD that valid ticket
	    was not honored.  Fixed.

	#976189 (Job #76546) **
	    Parallel sync's per-thread batch count could under some
	    circumstances exceed what was specified in the 'batch'
	    argument. This has been fixed.

	#975020 (Job #76277) *
	    In some cases p4 set -S Perforce may not display the setting
	    for P4PORT.  This has been corrected.

	#972184 (Job #37989) **
	    'p4 submit' now checks that if a text file would add new revisions
	    to an existing RCS archive file, that that file exists. This check
	    can be disabled by setting the new configurable 'lbr.rcs.existcheck'
	    to 0.

	#971892 (Job #76371) **
	    'p4 integrate' no longer exempts files from searches for renames
	    based on the presence of direct credit in the reverse direction.

	#969974 (Job #76351) **
	    'p4 submit' from an edge server could succeed even when files
	    of type 'ctext' failed to transfer to the commit server. This
	    has been fixed.

	#968589 (Job #67075) **
	    'p4d -jr -f -s' was not rejournaling delete records when
	    the record was not actually deleted.  This causes problems
	    when you want to align replicas with a master.  Fixed.

	#966093 (Job #5617) *
	    Form files with specifications edited are no longer removed
	    in case of several errors.  A new error reporting that the
	    file was kept is reported.  Related, the temporary files
	    created for spec edits are now created with owner only
	    permissions.

	#965293 (Job #61632) **
	    The pull and pull -u threads of replica servers no longer retain
	    an open file handle to the journal file on the master server
	    when they are otherwise idle.

	#963201 (Job #44559) **
	    Replica servers will now detect an accidental invocation of
	    'p4d -jc' or 'p4d -jj' issued directly to the replica, and will
	    refuse that command. The correct way to checkpoint a replica is
	    to run 'p4 admin checkpoint' on the replica, then rotate the
	    journals on the master server.

	#962556 (Job #75947) **
	    Cluster members don't see failover if they are down at the time.
	    Added a P4TARGET verification phase during server startup
	    to assure that servers are updated with the latest
	    failover changes if they occured when the server was down.

	#961024 (Job #76044) **
	    'p4 submit' will no longer permit an 'edit' to be submitted to a
	    file that is deleted at the head revision.

	#960002 (Job #73909) **
	    When a workspace on an Edge Server was used to merge new files into
	    a task stream, the workspace's have records were not properly
	    updated at the completion of the submit.

	#958549 (Job #75724) **
	    Erronious dbopen::get status 1 errors when file altered
	    during submit errors are reported.  Fixed.

	#952713 (Job #75810) **
	    'p4d -jd' would issue an error message if db.ckphist was read-only.

	#949563 (Job #75718) **
	    On an Edge Server, 'p4 print -o' of a remote shelf mishandles the
	    name of the output file.

	#940873 **
	    A server started with 'p4d -i' no longer writes journal note 7
	    to its journal when it starts.

	#937039 (Job #75196) **
	    The post-user-info command trigger is now available for use.

	#936970 (Job #74245) **
	    'p4 stream -d name' should not complete when there are clients
	    of the stream.  This protection was failing when only versioned
	    clients (containing both Stream and StreamAtChange fields) of
	    the stream existed.  This has been fixed.

	#936970 (Job #73130) **
	    Deleting a stream-client fails when the underlying stream has
	    been deleted and no-longer exists.  To delete this client, first
	    unload the client using 'p4 unload -c <client>' followed by
	    delete using 'p4 client -d <client>'.

	#933680 *
	    'p4 reconcile -m' will now perform digest checks on files whose
	    modtime is older (not just newer) than the modtime value stored
	    on the server.

	#933045 (Job #73790) **
	    'p4 revert -a' now will revert files opened for add that
	    are missing from the workspace if they do not have
	    pending integration records.

	#930749 (Job #41230) **
	    'p4 duplicate' would sometimes fail reporting corruption
	    of the db.integed table.  Fixed.

	#929671 (Job #74935) **
	    'p4 configure set' now obeys the filesys.P4ROOT.min and
	    filesys.P4JOURNAL.min configurable values.

	#928004 (Job #74855) **
	    'p4 interchanges' will now exclude changes that have been integrated
	    individually between files that do not share a single common base.

	#927254 (Job #74842) **
	    'p4 integrate' will no longer consider a file that has been
	    re-branched over itself to contain new changes relative to
	    its parent revision.

	#926748 (Job #74663) **
	    If 'p4 reload -c <client> -p <commit>' was used to migrate a
	    workspace from the Commit Server to an Edge Server, the command
	    would complete before all the database changes made to the Commit
	    Server had been fully replicated to that Edge Server.

	#909170 (Job #74645) * **
	    Resolving a file and accepting 'theirs' with modtime enabled will
	    now set the client file's timestamp to match the depot revision its
	    contents were copied from.  Previously the server-side timestamp was
	    copied, but the client file would not be updated until the next sync.

	#908151 (Job #72457) **
	    Running out of space in the shared memory db.monitor table
	    could cause server crashs.  Fixed.

	#905967 (Job #74263,#74425) **
	    Stream clients of task streams can no longer be modified to point
	    to different streams while there are opened files in the client.
	    For non-task stream clients, a warning is given when there are
	    opened files - which the '-f' (force) flag can override.  Those
	    files opened will remain unsubmittable until the stream field is
	    returned to the originating stream.

	#904476 (Job #73913) **
	    'p4 reconcile' elapsed time performance has been improved
	     when detecting non-textual files to open for edit.

	#901775 (Job #74331) **
	    A case involving integrating a delete between two renamed files
	    has been improved to no longer provoke a conflict.

	#900691 (Job #73887) **
	    The 'p4 renameuser' command can now be used successfully in a
	    P4AUTH configuration. In such a case, you'll need to rename the
	    user in both servers, by issuing a separate 'p4 renameuser'
	    command to each server, in either order.

	#899057 (Job #71623) **
	    'p4 populate', when run with fromFile and toFile was not checking
	    if the target (toFile) was within a stream and therefore not able
	    to update the change field of that stream.

	#899077 (Job #74233,#74234) **
	    Certain file transfer errors were not reliably detected by
	    'p4 shelve -p'.

	#897653 (Job #68823) **
	    'p4 reconcile', when run through a client of a virtual stream was
	    not checking for the base (submittable) path of the target stream,
	    causing an unnecessary warning.  This has been fixed.

	#892210 **
	    'p4 submit' will no longer submit files open for 'add' against
	    a head revision of 'edit'.  (See change #19923, which fixed this
	    for the case where the head revision was an 'add'.)

	#887499 **
	    'p4 add' will no longer open files with 'add from' credit (see
	    change #252485) when the head revision is a move/delete, since
	    this creates a confusing state where one file has two active names.
	    Move operations should be undone by using 'p4 move' to move the file
	    back into place.

	#871535 (Job #72841) **
	    'p4 passwd -O' now requires that -P also be specified.

	#862767 (Job #67527) **
	    The following commands no longer take the server.locks/meta/db lock:
	    obliterate (without -y), archive -n, and restore -n.

	#861031 (Job #72996) **
	    The metadata pull thread in a replica server with db.peeking set
	    to 2 or higher might hold clientEntity locks longer than
	    necessary, reducing concurrency on the replica.

	#860864 (Job #72994) **
	    Certain 'p4 opened' commands could potentially return incorrect
	    results on a server with db.peeking set to 2 or higher.

	#860522 (Job #73023) **
	    When a background pull thread in a replica receives an error
	    message (e.g., an authentication failure) from the master server,
	    the background pull thread will now use the -b backoff timer,
	    rather than the -i interval timer, to schedule the retry.

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

Major new functionality in 2014.2

	#854976 **
	    Introduced in 2013.3, improved concurrency through lockless
	    reads is now the default.  The default (db.peeking) value is 2.
	    Lockless reads requires that server locks are enabled, since
	    this can cause issues for long duration syncs, the default
	    value for controlling the 'sync' server lock (server.locks.sync)
	    has been changed to 0 (disabled).
	    NOTE: maxlocktime has been changed when peeking is enabled
	    (see change 887850). To revert to the old behavior set the
	    'db.peeking.usemaxlock' configurable to 1.

	#839759 (Job #3872) **
	    Given a data center containing multiple roughly identical Linux
	    machines connected by an enterprise-grade LAN and sharing equal
	    access to the same enterprise-grade storage server, Perforce can
	    be deployed to those machines such that:

	    - The overall Perforce installation appears to end-users and
	      their applications as a single Perforce server.

	    - As servers are added to the installation, it can horizontally
	      scale as the number of Perforce users increases.

	    - The installation can withstand the loss of the master server
	      without the need for immediate manual intervention, and
	      without causing extended downtime; the installation will
	      automatically fail over to a standby server and continue service.

	    To deploy automatic failover support in your Perforce installation,
	    you will need to include several new components in addition to
	    the p4d and p4broker components:

	    - The p4zk process provides cluster coordination services.

	    - The p4cmgr toolset provides DevOps support for installation,
	      deployment, configuration, monitoring, and administration.

	    The p4cmgr toolset will be available in November.

	    NOTE: This is an early release of clustering, and requires
	    Perforce consulting engagement for deployment.

	#906143 (Job #74413) **
	    When p4cmgr creates a standby node it initially runs some
	    configuration commands; these commands produce a journal.
	    This setup journal is independent of the cluster-wide journal
	    and it is never replicated.  After setup we rename this journal
	    to a name like "journal.2014-10-28T12:47:41.0.bak"; it uses an
	    ISO 8601 timestamp to provide a unique name and appends ".bak"
	    to indicate that these journal records are of purely historical
	    interest.  You may examine this journal file if you wish or you
	    may delete it; the cluster software never uses it.

	#820746 (Job #23901,#39524,#50751,#53891,#65998,#70255,#70256) **
	    Users can now be authenticated against LDAP servers like OpenLDAP
	    or Active Directory without the need for an external authentication
	    trigger. This feature supports identifying users in the directory by
	    direct mapping, performing searches or using SASL depending on the
	    LDAP server's support. The Perforce Server must be configured to use
	    LDAP/AD authentication by creating an LDAP configuration with the
	    new command 'p4 ldap' and assigning that configuration a priority
	    order by setting the new configurable 'auth.ldap.order.N' with the
	    configuration's name. All auth triggers will be disabled when LDAP
	    auth is enabled. The new AuthMethod field in the user spec is used
	    to decide whether the user authenticates against an LDAP server or
	    the Perforce database. This feature is only available on Linux and
	    Darwin for Intel(x86, x86_64) and Windows platforms.

	#820182 (Job #41143) *
	    P4CHARSET no longer needs to be set for a client to
	    connect to a Unicode mode Perforce Server.  Clients will
	    now detect the mode of a Perforce Server and remember it
	    in the environment by setting a variable name with a
	    format of 'P4_<p4port>_CHARSET' to either 'none' or 'auto'.
	    The value of 'none' means the server at the given port
	    is not a Unicode server, while 'auto' means it is a Unicode
	    server.  The 'auto' charset value is also new and it means
	    that the client should be examined and a charset value
	    selected based on OS specific properties such as a LANG
	    environment variable.  Windows and MacOS X clients can
	    store this new information in system provided utilities.
	    Other platforms, such as Linux, will now set an environment
	    file.  The environment file is available on all platforms
	    if a P4ENVIRO environment variable is set to a file path.
	    P4ENVIRO will default to a file '.p4enviro' in the user's
	    home directory for systems which do not have system provided
	    facilities.  The p4 enviro file can be shared across platforms.
	    The 'p4 set' command can be used to manipulate or inspect
	    this new environment facility.  Note that these special
	    'P4_<p4port>_CHARSET' values will only appear in 'p4 set'
	    output for the specified or current P4PORT value.
	    For instance 'p4 -p perforce:4666 set' will report on
	    'P4_perforce:4666_CHARSET' if it is set.

	#816591 (Job #51209) **
	    A new streams pathType 'import+' allows for the path to be
	    updated.  Performs in the same way as 'import' except that no
	    warning messages are provided on 'add/edit/delete' and the
	    user is able to submit to the import path.

	#770674 (Job #1648) **
	    Client specs now support an optional 'ChangeView' field that
	    locks certain depot paths to a particular changelist level:

	    ChangeView:
	        //depot/path/...@1000

	    Revisions belonging to files under those paths will not be
	    visible if they were submitted after the given changelist.
	    Files mapped in the ChangeView may not be submitted.

Minor new functionality in 2014.2

	#907715 * **
	    The default value for 'net.tcpsize' has been raised from 64K
	    to 512K.  This tunable increases the network buffer size,
	    which will provide better performance over high latency
	    network connections.

	#898025 (Job #60850) **
	    'p4 unshelve -S' now accepts a '-P' option to specify an
	    arbitrary effective parent stream.

	#897437 (Job #73443) **
	    'p4 shelve -d -f' will now delete shelved files that are the
	    source of pending resolves.  If this happens, the resolving
	    user will not be able to merge content from the shelf; they
	    must either 'ignore' the missing shelf or revert.

	#895042 (Job #73409) **
	    An operator user is now allowed to run 'p4 depots'.

	#891931 (Job #70751,#73910) **
	    The new configurable 'dm.shelve.promote' (default 0) can be
	    enabled to make edge servers always promote shelved files to
	    the commit server (rather than use the -p flag). Generally
	    enabling this configurable is a really bad idea, it will cause
	    a lot of unnecessary file transfers for shelve commands that
	    are not intended for sharing.

	#891014 (Job #73744) **
	    The new configurable 'lbr.autocompress' (default 0) changes the
	    default storage method to compressed text (ctext) rather than
	    rcs format (text). To the user the filetype will still show
	    type 'text'. Its a good idea to set this variable when using
	    the commit/edge configurations or sharing archive files between
	    servers.

	#884941 (Job #73346) **
	    A new trigger variable "argsQuoted" is available that contains
	    the command arguments as a percent-encoded comma-separated list.

	#872401 (Job #73246) **
	    'p4 obliterate' when used with peeking enabled will now
	    be more concurrent with other commands such as 'submit'.

	#848368 (Job #64910, #72509, #25260 ) **
	    The new configurable 'submit.noretransfer' tells submit to
	    avoid re-transferring files when retrying a failed submit.
	    'p4 submit -c <change> --noretransfer <1|0> allows a user to
	    override the configured behavior.

	#842946 (Job #72103) **
	    The new 'p4 prune' command allows the owner of a stream to
	    remove unmodified files from it, as if with 'obliterate -b'.

	#846127 (Job #28808,#42312,#62352,#72096) ** *
	    The submit and shelve commands, if run from an updated client,
	    now perform additional checks to avoid running the server out of
	    disk space midway through the file transfer phase.

	#841159 **
	    'p4 reconcile' will now detect files that are open for edit but
	    missing from the client, and reopen them for delete.

	#839758 (Job #70330,#69700) **
	    The new command 'p4d [-z] -jv <checkpoint-or-journal>' can be used
	    to verify the basic structural integrity of the checkpoint or
	    journal file, including its MD5 digest.

	#832025 (Job #58201,#65733) **
	    The new configurable 'rpl.forward.login' may be useful in certain
	    replica configurations, particularly those in which multiple
	    replicas are deployed in the same data center as the master.

	#835174 **
	    'p4 reconcile' will now process multiple file arguments as a
	    single batch so that renamed files can be detected when they're
	    split across different arguments.

	#832294 **
	    An optimization to the client/server protocol for the 'p4 sync'
	    command should result in better throughput when syncing many
	    small files over a high latency network.

	#827569 **
	    'p4 verify' has been added to the list of files that can
	    run in lockless mode.

	#827124 **
	    'p4 describe' has been added to the list of files that can
	    run in lockless mode.

	#803860 **
	    The 'p4 pull' command now accepts the -L flag. It is designed
	    for use with standby replica servers.

	#801569 (Job #71136) **
	    A replica with rpl.pull.position specified will now include
	    notes of type 23 in the replica journal with information about
	    replica statefile and timestamp processing. This is useful for
	    monitoring replication lag.

	#801171 **
	    The new command 'p4 journalcopy' is available. It is designed
	    for use with standby replica servers.

	#893342 ** (Job #52885)
	    By default when the journal is rotated any structured logs are
	    also rotated.  When the new dm.rotatelogwithjnl configurable
	    is set to zero, log rotation is not performed at journal rotation.

	#796127 ** (Job #52885)
	    By default logs are rotated at the same time journals are.  The
	    new dm.rotatelogwithjnl configurable can be set to zero to disable
	    that.

	#795814 ** (Job #21830)
	    The server daemon will write its PID to a file when supplied
	    the --pid-file option.

	#794236 ** (Job #71514)
	    'p4 interchanges' now has a '-u' flag that filters results
	    to a particular user.

	#793292 **
	    The 'p4 server' spec now includes a User: field, which can be
	    used to specify the service user that is expected to be used by
	    that server. Also, when the value of the security configurable
	    is 4 or higher, the server now applies several additional checks
	    when accepting replication requests from a remote server. These
	    checks validate the serverid and service user being used by the
	    remote replica server.

	#790595 (Job #53510, #68485) **
	    A structured server log may now be associated with a rotation
	    counter by defining the serverlog.counter.N configurable, in
	    which case the counter will be used to generate the file name
	    for the rotated server log. The current value of the counter is
	    also returned in the output of 'p4 logtail -l <log>'.

	#786582 **
	    'p4 pull -l -s' now includes an additional line of output,
	    identifying the oldest changelist number which has at least
	    one pending transfer.

	#785614 (Job #47379) **
	    The configurable 'lbr.verify.script.out' can be set to 0 to
	    indicate that files with the +X filetype should not have their
	    digest checked when transmitted from the server to the client.

	#780804 **
	    The 'p4 reload -p' argument can now be specified either as the
	    P4PORT of the remote server, or the serverid of the remote server.
	    If a serverid is specified, the server spec for that server must
	    contain the correct P4PORT value in its Address: field.

	#777628 **
	    When using 'p4 reload -c <client> -p <port>' to migrate your
	    unlocked workspace from one Edge Server to another, it is no
	    longer necessary to first issue the 'p4 unload -c <client>'
	    command to the remote Edge Server. The reload command will
	    automatically issue the 'p4 unload' command for you, and will
	    wait for it to complete, prior to reloading your workspace into
	    the new Edge Server.

	#775711 **
	    If the 'monitor' configurable is set to a value of 5 or higher,
	    the server will track certain information about database table
	    locks in the db.monitor table, and will make it available via
	    the new '-L' flag to 'p4 monitor show'. This feature has a
	    non-trivial performance impact, so (on platforms where it is
	    available), the 'monitor.lsof' feature of change 771259 is
	    preferable.

	#771259 (Job #71647) **
	    On a Linux server, the new configurable 'monitor.lsof' may be
	    set as follows: 'monitor.lsof=/usr/bin/lsof -F pln', varying the
	    executable path as necessary for your system. Once set, this
	    configurable enables the new '-L' flag to 'p4 monitor show',
	    which will include information about locked files as part of
	    the monitoring output.

Bugs fixed in 2014.2

	#1455848 (Job #88980) **
	    In replica chaining configurations, replicas which were not
	    directly connected to the master server were not processing
	    archive deletion operations arising from operations such as
	    submission of a binary+S file, deletion of a shelf, obliteration,
	    archive depot operations or retype +l commands.

	#1410626 (Job #87181) **
	    Correct the digest used to ensure that content is transferred
	    correctly to commands within triggers (such as a 'change-content'
	    trigger) when submitting a shelf. A shelf is implicitly submitted
	    to the commit server when a submit is run on an edge server.

	#1376860 (Job #71853, #75135, #75136) **
	    Parallel sync commands will not fail when net.parallel.max
	    is unset or the requested number of parallel threads exceeds
	    net.parallel.max. Instead the command will proceed without
	    using parallel threads, or will use the max number of allowed
	    threads. In these cases an informational message will also
	    be written to the log.

	#1373097 (Job #85991) **
	    Report to stderr (except on Windows), and syslog or
	    the event log (as supported by the platform), any errors
	    encountered when writing to the server log or a structured log.

	#1362027 (Job #85371) **
	    'p4 sync --parallel=..' using multiple file arguments could
	    fail to transfer some files if any of the file paths did not
	    contain enough data to use parallel threads. This has been fixed.

	#1361919 (Job #85376) **
	    Fix for false database corruption error when long descriptions
	    are updated concurrent to readers reading the same
	    description.

 	#1357677 (Job #85346) **
 	    Fixed a memory leak in 'p4 verify'.

	#1352542 (Job #85157) *
	    The MacOSX command line client could fail to complete a parallel
	    sync if two or more parallel transfers attempted to create the
	    same directory in the filesystem at the same time; the failing
	    file transfer would print: "mkdir: /path/to/dir: File exists".

	#1341013 (Job #84992) **
	    If an archive file for a local shelf on an Edge Server should
	    become damaged or missing, deleting the shelf, or deleting or
	    replacing that file in the shelf, will now cancel any pending
	    file transfer for that file which was listed in 'pull -l'.

	#1337988 (Job #84848) ** *
	    'p4 -Zproxyverbose sync --parallel=...' now correctly displays the
	    diagnostic information about which files were delivered from the
	    proxy's cache.

	#1312519 (Job #76913) **
	    'p4 files <filespec>' when using a revision specifier
	    other than #head (e.g. @label), or a revision range ending
	    with a revision specifier other than #head, will now access
	    the rev table in lockless mode. 'p4 files <filespec>@label'
	    will now also access the label table in lockless mode.
	    'p4 files <filespec>@change,@change' will now also access
	    the revcx table in lockless mode. And at 'db.peeking=3',
	    'p4 files <filespec>' will now access the rev table in
	    lockless mode, even if not using a revision specifier
	    or a revision range.

	#1242773 (Job #81040) **
	    The server.locks.archive configurable introduced by #898102 now
	    also applies to the 'p4 restore' command.

	#1239015 (Job #80722) **
	    A file which was integrated from a streams depot to a local
	    depot, or vice versa, would be placed into the wrong location in
	    the proxy cache if it was accessed via the proxy by a command
	    such as 'p4 sync' or 'p4 print'. Note that the symptom of this
	    bug is in the proxy cache, but the fix is in the server.

	#1225187 (Job #74936) **
	    A 'sync --parallel' command issued via a forwarding replica would
	    complete immediately, but would sync no files.

	#1213529 (Job #79647) **
	    p4d -jr would mis-handle the revStatus field if replaying db.rev
	    journal records written by a 2005.2 or older server.

	#1028814,#1204292 (Job #56707) **
	    The presence of a client spec with the same name as the TCP/IP
	    address of a replica machine no longer causes that replica to
	    issue the error: "Don't know how to translate paths for OS ''".

	#1172454 (Job #79504) **
	    A submit initiated on an Edge Server which failed due to a
	    problem detected after the edge-content trigger had been checked
	    could leave the changelist incorrectly marked as "shelved", and
	    possibly also as "promoted", on the Commit Server, although the
	    changelist was correctly recorded on the Edge Server itself.

	#1127279 (Job #79353) **
	    A 'sync --parallel' command which sync'd any files of type 'binary'
	    would write an incorrect value for the 'type' field of the db.have
	    record for the binary file(s). This could cause problems later
	    when integrating changes into these files from other branches.
	    Any workspaces potentially affected by this bug should be sync'd
	    to revision #0 and then re-sync'd for all files of type binary at
	    their convenience in order to rewrite the db.have records.

	#1070355 (Job #77551) **
	    'p4d -i' when run under inetd on unix no longer shows 'unknown'
	    for all addresses.

	#1065376 (Job #77360) **
	    In a distributed configuration, the 'edit -n' and 'delete -n'
	    commands for a file of type +l might incorrectly report that
	    the file was opened by another user, though it was not.

	#770787 (Job #76809) **
	    'p4 describe' could print an internal error message if describing
	    a change on a stream with an import statement using a changelist
	    specifier.

	#1061247 (Job #78830,#78915) **
	    A replica with rpl.checksum.change set to 2 or higher might
	    incorrectly write its own journal file under conditions of high
	    concurrency on the master, resulting in incorrect behavior and
	    problems with replicas of this replica.

	#1059769 (Job #78855) * **
	    'p4 sync --parallel' now works with certain custom licenses.

	#1058411 (Job #78785) **
	    If a replica with rpl.checksum.change set to 2 or higher
	    encountered an internal error processing a changelist checksum
	    note, it would halt replication. Now, it logs the error but
	    resumes replication.

	#1050954 (Job #78647) **
	    On an Edge Server with submit.unlocklocked=1, a submit which fails
	    with "Out of date files must be resolved or reverted" could
	    incorrectly alter the resolve state of the open files if the
	    conflicting change was submitted simultaneously.

	#1047418 (Job #78444) **
	    The replica-specific table db.user.rp is now journaled. This means
	    that the table data will appear in checkpoints, journals and
	    dumps. The replica pull thread automatically filters out all
	    db.user.rp records from its P4TARGET server, which is normally the
	    desired behavior, since records in this table are unique to each
	    replica's activity. However, for maintaining warm standby replicas
	    of other replicas, you can set rpl.replay.userrp=1 for the standby
	    replica to disable the filtering and replicate db.user.rp data.

	#1046060 (Job #73967) **
	    'p4 -ztag servers' could report incorrect values for the 'User'
	    field for server specs upgraded from an older release.

	#1045565 (Job #78497) **
	    Promoting a shelf, then subsequently deleting it, using the same
	    network connection to the Edge Server could fail to properly
	    delete the shelf.

	#1042783 (Job #78427) *
	    'p4 -P <ticket> sync --parallel' will no longer give authentication
	    errors for the file transfer sub-processes.

	#1039831 (Job #73075, #74961) **
	    The revision specifier @client was not working properly for
	    clients bound to a build-server.

	#1039277 (Job #78383) **
	    A 'p4 describe' command which accesses a remote promoted shelf now
	    properly reports any communications-related error conditions which
	    occur when retrieving the remote shelf.

	#1038934 (Job #78164) **
	    In a distributed environment, the change-failed trigger now
	    runs on the commit server rather than on the edge server.

	#1037755 (Job #76982) *
	    If a 'p4 sync --parallel' child process encounters an error
	    writing files to the local machine, the parent 'p4 sync' command
	    now returns a non-zero exit status to the operating system.

	#1036596 (Job #77433) **
	    In a distributed configuration, 'p4 unshelve' no longer takes
	    the global exclusive file lock for a file of type +l which is
	    unshelved for add.

	#1036485 (Job #77069) **
	    A 'p4 describe -S' command on an Edge Server which specified more
	    than 1 promoted shelf which was created on a different Edge Server
	    would fail with an 'Unknown changelist' message.

Bugs fixed in 2014.2 PATCH6

	#1032010 (Job #74056) **
	    'p4 sync --parallel' would fail to expand RCS keywords properly.

	#1031176 (Job #76013) **
	    'p4d -xx db.working db.have' could create spurious delete records
	    for db.working if a file opened for move or delete is subsequently
	    moved and submitted by another client and the opened file is
	    then synced to the head revision.

	#1030313 (Job #77559) **
	    A build-server replica would incorrectly process the View: field
	    for labels, causing the wrong set of revisions to be specified
	    by the label.

	#1029766 (Job #76626) **
	    Promoting a shelf could fail erroneously with a message:
	    "Files newly opened or reverted during submission."

	#1028372,#1028461 (Job #77558) **
	    A replica with lbr.replication=cache was not able to access
	    labels using the autoreload option.

	#1027668 (Job #77595) **
	    'p4 export -f' now formats the domain type column correctly for
	    unloaded clients, unloaded labels, and unloaded task streams.

	#1026707 (Job #77504) ** *
	    'p4 -Zproxyload sync --parallel=...' now correctly updates the
	    proxy's archive cache without sending files to the client.

	#1026534 (Job #77280) **
	    If a change submitted via an Edge Server was rejected by a
	    change-submit or change-content trigger on the Commit Server,
	    the change's files were modified to read-only mode on the client
	    machine rather than being left in writable mode.

	#1026233 (Job #77435) **
	    A 'p4 integ' or 'p4 unshelve' command on an Edge Server which
	    failed to open a +l file due to a client-side file transfer error
	    would leave an orphaned lock record in db.excl.

	#1013324 (Job #77580) **
	    When the configurable 'auth.default.method' is set to 'ldap', new
	    users may only be created by super users or by automatic user creation
	    following a successful authentication against an LDAP server via
	    'p4 login'.

	#1010386 (Job #77471) **
	    The 'reload -p' command, used to migrate a workspace from one
	    Edge Server to another, or between an Edge Server and the Commit
	    Server, failed in certain specialized licensing scenarios.

	#1008489 (Job #77390) **
	    In a distributed installation, a pending change can be viewed on
	    a server other than the server where the change was created. In
	    such a situation, the pending change will not display a list of
	    open files (the open files are shown only on the owning server).
	    The 'change -d' command would incorrectly allow the pending change
	    to be deleted if the command was issued on a server other than the
	    owning server; this behavior is fixed and the command is now
	    rejected with an appropriate error message.

	#1007724 (Job #76835) **
	    Promoting a shelf that has a job attached and then subsequently
	    removing the job from the change could result in an orphaned
	    fix record if the change is later renumbered during a submit.

Bugs fixed in 2014.2 PATCH5

	#1004762 (Job #77358) **
	    Fixed a crash that could occur when unshelving moved files to
	    a different branch.

	#1003295 (Job #77269) **
	    On a forwarding replica with server.depot.root set, a submit which
	    added new files to a depot with a relative mapping would cache
	    copies of those files in the default location under P4ROOT, instead
	    of in the directory named by server.depot.root

	#999906 (Job #76686) **
	    Parallel sync could under some high concurrency scenarios scan
	    too many rows from db.sendq. This has been fixed.

	#999214 (Job #77223) **
	    Replication threads (pull or journalcopy) using "long poll"
	    (-i 0) could sometimes report a failure to open the wrong
	    journal file.  Fixed.

	#998938 (Job #73278) **
	    A replica with rpl.checksum.change set to 2 or higher might
	    incorrectly report that a changelist checksum differed if the
	    changelist was submitted by a workspace with SubmitOptions =
	    revertunchanged and at least one unchanged file was reverted
	    during the submission of that changelist.

	#979987 (Job #76552) **
	    Standby or edge-servers targeting a standby server did not
	    replicate correctly.  Fixed.

	#979987 (Job #76553) **
	    'p4 servers -J' against a non-depot standby server reported 0
	    for the current journal offset rather than the current journal
	    size.  Fixed.

Bugs fixed in 2014.2 PATCH4

	#975016 (Job #76277) *
	    In some cases p4 set -S Perforce may not display the setting
	    for P4PORT.  This has been corrected.

	#974381 (Job #72457) **
	    Running out of space in the shared memory db.monitor table
	    could cause server crashs.  Fixed.

	#973892 (Job #76360) **
	    'p4 integ -Rdb -Or' through an edge server could leave a db.excl
	    (+l) orphaned lock if the resolved action is to branch.

	#972359 (Job #76323) **
	    'p4 delete' through an edge server could leave a db.excl (+l)
	    orphaned lock if the delete failed due to a 'clobber' failure.

	#970590 (Job #76365) **
	    A replica running on a case insensitive filesystem could hang
	    during journal recovery in the rare event that a client name
	    was changed (by case only).

	#967709 (Job #72432) **
	    False database errors on db.resolve should no longer
	    occur.

	#967708 (Job #75382) **
	    The maximum size of shared memory for monitor table use was
	    too small (4096 8K pages).  Now it's 32768 pages for all
	    platforms except Windows 32bit where memory address space
	    is severely limited.

	#965284 (Job #61632) **
	    The pull and pull -u threads of replica servers no longer retain
	    an open file handle to the journal file on the master server
	    when they are otherwise idle.

Bugs fixed in 2014.2 PATCH3

	#960002 (Job #73909) **
	    When a workspace on an Edge Server was used to merge new files into
	    a task stream, the workspace's have records were not properly
	    updated at the completion of the submit.

	#954124 (Job #75844) **
	    In certain chained replica configurations, updates to 'p4 server'
	    specs on the master server were not propagated beyond the first
	    replica on the chain.

	#954068 (Job #75800) **
	    'p4 filelog file[revRange]' where the revRange is really high
	    compared to following revisions can excessively scan.

	#951087 (Job #75772) **
	    The default value for the 'net.tcpsize' configurable was
	    documented incorrectly as 256K (instead of 512K) in
	    'p4 help configurables'.

	#950290 (Job #75738) **
	    P4IGNORE is no longer applied to files being opened for add from
	    an existing depot revision.

	#949570 (Job #75718) **
	    On an Edge Server, 'p4 print -o' of a remote shelf mishandles the
	    name of the output file.

	#949003 (Job #75687) **
	    Labels, clients, or branches with very large descriptions
	    could cause internal errors when peeking.  Fixed.

	#944004 (Job #74754) **
	    Now we allow the Zookeeper servers to lag behind the boot
	    of the rest of the cluster servers.  Default timeout is 5 minutes
	    but it can be changed via the configurable zk.connect.timeout.
	    We do not let this value be <= 0 if so, then the configurable
	    will be changed to its default value of 300 seconds.

	#943720 (Job #60630) **
	    'p4 client -S stream@change name' might use the wrong stream
	    parent had the stream been reparented after change.  This has
	    been fixed.

	#941953 (Job #75160) **
	    When running 'p4 change -f' from a task stream workspace for a
	    non task stream changelist, a database lock error could be
	    observed: 'dbscan db.revtx: no read lock'.

	#941449 (Job #75141) **
	    When migrating client workspaces from commit servers to edge
	    servers, promoted shelves are no longer accessible on the
	    edge server they are bound to.  This change allows 'submit -e'
	    to automatically pull metadata and content to the server with
	    the correct ownership.

	#941282 (Job #75373) *
	    Failed P4CHARSET detection would cause subsequent commands
	    to return a failed error code even if they succeed.

	#940387 (Job #75336) **
	    The server spec form and 'p4 help server' both now describe the
	    'workspace-router' services type as well as grouping the service
	    types according to which server type allows them.

	#938145 (Job #75235) **
	    'p4 servers -J' for a standby server now reports the length of
	    the current journal rather than that of the (length 0) live journal.

	#938004 (Job #74998) **
	    'p4 reload -p <port> -f' now works correctly even if the workspace
	    isn't currently unloaded.

	#937672 (Job #74698) **
	    The replica will now drop and reconnect its TCP connection to
	    the P4TARGET server when an error results in the replica's pull
	    thread performing a "backoff" sleep.

	#937623 (Job #70919) **
	    The filesys.*.min configurables now default to 250MB. Change 846319
	    was incomplete.

	#937421 (Job #75144) **
	    'p4 help configurables' was missing entries for 'rpl.journal.ack'
	    and 'rpl.journal.ack.min'.

	#935793 (Job #74137) **
	    Added master generation number check so that an old master
	    will not be able to join a cluster after it has failed
	    over to a new master.  This change requires that any existing
	    users of 2014.2 prior to PATCH 2 of the Perforce cluster
	    feature must remove their Zookeeper data cache on each server.
	        * stop the cluster
	        * stop zookeepers
	        * remove the existing data caches (see zoo.cfg for
	          location)
	        * restart zookeepers
	        * restart cluster

	#935654 (Job #41230) **
	    'p4 duplicate' would sometimes fail reporting corruption
	    of the db.integed table.  Fixed.

Bugs fixed in 2014.2 PATCH2

	#958074 (Job #75933) **
	    LDAP-based authentication against some Active Directory servers
	    would incorrectly authenticate successfully when an empty
	    password was provided (non-empty passwords would validate only
	    if they were correct).  Authentication attempts against an LDAP
	    server now fail if the password is empty.  This means that you
	    can't use the ldap AuthMethod if you don't set passwords for
	    your users.  If you want to use LDAP authentication for users
	    without passwords then you should use an external authentication
	    trigger.  Note that this is an insecure configuration.

Bugs fixed in 2014.2 PATCH1

	#941282 (Job #75373) *
	    Failed P4CHARSET detection would cause subsequent commands
	    to return a failed error code even if they succeed.

Bugs fixed in 2014.2

	#931334 (Job #74855) **
	    'p4 interchanges' will now exclude changes that have been integrated
	    individually between files that do not share a single common base.

	#926940 (Job #74435) **
	    Operations transferring many files via a proxy with most
	    transfers not cached by the proxy could hang.  Most likely
	    to happen with a broker between the proxy and a server.
	    Fixed.

	#926889 (Job #74020) **
	    When migrating client workspaces from commit servers to edge
	    servers, promoted shelves are no longer accessible on the
	    edge server they are bound to.  This change allows 'describe -S'
	    to automatically pull metadata and content to the server with
	    the correct ownership.

	#907803 (Job #74832) **
	    Under high concurrency, BTree is corrupt errors might appear
	    along with BTCursor::find status 0 messages but the table
	    is not actually corrupt.  Fixed.

	#895719 (Job #71795) **
	    A better error message is issued when accidentally attempting to
	    use a Commit Server-bound workspace on an Edge Server. Also, the
	    'p4 clients -s NNN' and 'p4 labels -s NNN' commands now print the
	    complete list of clients/labels when NNN is the Commit Server's
	    serverid.

	#895107 (Job #73953) **
	    If a replica fails to take a checkpoint, an error message about
	    the failure is now written to the replica's log file.

	#893234 (Job #73768) **
	    'p4 clean' will no longer attempt to take exclusive depot file
	    locks in a distributed environment.

	#892218 (Job #72136) **
	    Unloading many clients could cause large db.have tables ( > 100MB )
	    to loop allocating pages.

	#887850 (Job #71527) **
	    Perforce servers with 'peeking' enabled would still have processes
	    killed by MaxLockTime when not holding blocking locks.

	#886584 (Job #73402) **
	    'p4 renameuser' would fail to completely rename the user.

	#886135 (Job #34561,#73503) **
	    'p4 resolve' using options to ignore whitespace or line endings
	    (ie -dw, -db, -dl) could cause the target of the integration to
	    be erroneously recorded as a 'copy' when whitespace differences
	    exist and are not copied to the target. This has been fixed by
	    recording this condition correctly as a 'merge'. Before this was
	    fixed, files that had been shelved in this situation could not
	    be unshelved easily.

	#883281 (Job #73071) **
	    'p4 client [-o] -S <stream> name' without the -s "switch" now
	    reports an error should the target 'name' client exist with either
	    a different stream, or without a stream defined.  Former behavior
	    was to ignore the -S <stream>.

	#879410 (Job #73373) **
	    'p4 reconcile' elapsed time performance has been significantly
	    improved when detecting files to open for add.

	#877872 (Job #73313) **
	    An 'annotate', 'diff', 'diff2', 'describe', or 'resolve' command
	    which used the '-db' or '-dw' flags could crash if one of the file
	    revisions processed by the command was exactly 65,536 bytes in size.

	#877282 (Job #73316) **
	    Spec depot entries now generate corresponding server.locks files
	    only if that spec depot entry is stored in RCS format.

	#876857 (Job #73314) * ** ***
	    TCP keepalive variables can now be set on Windows with these
	    restrictions, due to limitations in the Windows API:
	    - net.keepalive.count can not be set.
	    - both net.keepalive.idle and net.keepalive.interval must be set
	      if either one is set; neither should be set to 0.

	#874560 (Job #71729) **
	    Unshelving +l files in a distributed environment could result
	    in inconsistent error messages if the user had other files
	    opened in his workspace. This has been fixed.

	#871169 (Job #72759) *
	    Filetype detection with P4CHARSET=utf8 now detects non-UTF8 files
	    as either text or binary in a manner more consistent with other
	    charset settings.

	#850073 (Job #72842) **
	    'p4 submit' will no longer record revisions with invalid archive
	    paths after unshelving an integrated file through a branch view.

	#849717 (Job #42041) **
	    The Server will now report the correct Windows error when the
	    posix library file descriptor table is depleted.

	#849566 (Job #72816) **
	    The Edge Server algorithm for handling the replication of a large
	    'p4 obliterate' command is now more efficient.

	#846643 (Job #72162) **
	    Commands which must find lazy copies, i.e. obliterate, retype,
	    and fstat -Oz, could cause stack overflows when there
	    are many branches against the same file.  Fixed.

	#846319 (Job #70919) **
	    The filesys.*.min configurables now default to 250MB.

	#844511 (Job #71329) **
	    p4 -ztag changes on a Unicode server would report a partial
	    unicode character if there were 31 characters and only the
	    last one was a utf8 multibyte character.  Fixed to truncate.

	#840450 (Job #72691) **
	    The "Connection from <network partner> broken" error message is now
	    correctly logged to the server's structured error log, if defined.

	#839295 (Job #72676) **
	    'p4 submit -e' of a promoted shelved change from an edge server
	    will not copy the files to the commit server since the change
	    lives on the commit server and the files are already there.

	#836790 (Job #72535) **
	    A replica might fail to perform an on-demand file transfer from
	    its master server for a revision with no stored file size or
	    digest information.

	#835387 (Job #72437) **
	    Repeated updates to shelved files in a short period will no
	    longer cause replica servers to stall waiting for the archive
	    transfers of the shelved files to complete.

	#835083 (Job #72129 ) **
	    The combination of converting a task stream to a non-task
	    stream while 'db.peeking' is set would fail due to lock-ordering.
	    This has been fixed.

	#834034 (Job #71960,#72441) **
	    In general, you should never need to set the ServerID field in a
	    'p4 client' form, but if you do set the field, the server now
	    validates it more carefully.

	#833834 (Job #72158) **
	    If external authentication is enabled, the 'p4 admin resetpassword'
	    command is now refused with an error message. Please use the
	    mechanisms of your external authentication system to enforce the
	    password reset policy.

	#831471 (Job #72307) **
	    Case insensitive servers were matching client roots with
	    client paths with a case sensitive match.  Fixed.

	#821026 (Job #72180) **
	    Triggers now set %serverip% to IP address rather than to hostname.

	#819489 (Job #72151) **
	    'p4 annotate -I' now works correctly with the '-dw' flag.

	#817214 (Job #72119) **
	    A readonly replica now allows the command 'p4 clean' to run.

	#814054 (Job #71394) **
	    Previously if 'p4 shelve -r' should have resulted in all files
	    being removed from an existing shelved change, the command would
	    report "No files to shelve" and do nothing. Now the command
	    removes all shelved files and deletes the shelved change.

	#813973 (Job #71087) **
	    'p4 fstat //...@=change' will no longer scan the db.revsx
	    (spec depot) table, since spec depot files do not have changelists.

	#813774 (Job #68895) **
	    'p4 diff -du' will now skip deleted files, similar to other
	    'p4 diff' options.

	#812768 (Job #71782) **
	    Multiple resolves performed sequentially could produce false
	    "tampered" errors on submit.  This has been fixed.

	#811430 (Job #71922) **
	    A Windows replica server would fail to transfer an unloaded
	    client, label, or task stream created by 'unload -z'.

	#809156 (Job #68666) **
	    Replica servers now treat the '-n' form of the following commands
	    as read-only: add, edit, open, delete, move, rename, unshelve,
	    archive, and restore.

	#808573 (Job #71835) **
	    The Windows server using an SSL port can crash during
	    'p4 admin restart'.

	#808325 (Job #71961) **
	    'p4 sync --parallel' would fail with the message "Can't clobber
	    writable file" if the file was changed from filetype binary+w to
	    filetype binary (or text+w to text) by the revision being sync'd.

	#806284 (Job #71893) **
	    A replica with lbr.replication=shared would incorrectly attempt to
	    fetch a missing archive file from its master server. Also, it was
	    incorrectly using the rpl.verify.cache setting if it was enabled;
	    now a shared-archive replica does not validate its archives except
	    when told to via 'p4 verify'.

	#804390,#834897 (Job #71847,#72545) **
	    'p4 renameuser' was incorrectly processing group entries,
	    protection table entries, and properties if there existed a group
	    by the same name as the user being renamed.

	#802639 (Job #71592) **
	    In a distributed environment, force deleting an edge server
	    client directly from a commit server could leave orphaned
	    exclusive locks from that client that could not be deleted.

	#801991 (Job #71750) **
	    On Windows, a protects table entry that uses an IPv4 address with
	    CIDR notation may not match the correct addresses if it has an octet
	    that begins with a 0 digit and has a following octet whose value
	    is greater than 7.

	#795201 (Job #68844) **
	    'p4 help describe' regarding restricted changelists was confusing.
	    This has been fixed.

	#794744 (Job #71525) **
	    The 'unload -a' command, in a distributed installation, now
	    restricts its scope to clients and/or labels that are owned by
	    the Edge Server where the command was run.

	#886610 (Job #63251) **
	    The forwarding replica and edge server configurations now accept
	    the optional username argument on the 'p4 login' and 'p4 logout'
	    commands.

	#780053 (Job #69512) **
	    'p4 populate' no longer accepts multiple toFile arguments.

	#773380 (Job #70808) **
	    A multi-link chain of forwarding replicas could incorrectly
	    re-process certain journal records during a journal rotation.

	#771609 (Job #21726) **
	    'p4 filelog' and 'p4 integrated' now filter out integration
	    records for which the user does not have 'list' access to both
	    the source and target.

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

Major new functionality in 2014.1

	#767722 (Job #70103) **
	    Distributed commit/edge servers have been further optimized to
	    work in a data center environment. Edge servers (first introduced
	    in 2013.2) are a great way to offload work from the main server.
	    The following three improvements make it easier to configure
	    multiple edge servers that can be added to (scale out) as usage
	    increases.

	    Shared Archive

	    - When the edge server and commit server have access to the
	      same storage device for the file content (archive), setting
	      lbr.replication=shared has been optimized to reduce network
	      content transfer.

	    Distributed Shelves

	    - Shelving now functions between edge servers. In the shared
	      archive configuration (as above) shelves are automatically
	      promoted to the commit server and are available on any edge
	      server. Edge servers not sharing the archive with the commit
	      server need to 'promote' shelves using the new 'shelve -p'
	      command. If this is the first time the server has been
	      configured as a commit server, all existing shelves will be
	      marked promoted. If this installation is already distributed,
	      then you must run 'p4d -xf 71917' on the commit server to
	      promote the shelves.

	    Distributed Changes

	    - New to this release, change descriptions and status is available
	      to all edge servers participating in a distributed configuration.

	    NOTE: A server configured as a 'commit' server cannot disable
	    'server.locks.dir' that is because these locks are required for
	    shelve consistency.  If you are a customer who has disabled this
	    in the past due to problems with syncs,  you can turn-off the
	    longer duration lock by setting server.locks.sync=0.

	#693837 (Job #62657) **
	    Stream 'import' paths may now include a changelist specifier:

		import import/... //depot/import/...@1000

	    Clients of this stream will use this changelist to limit their
	    view of those files, such that revisions from later changelists
	    will be automatically hidden from most commands.  The changelist
	    limits that are in effect for a given client are displayed in a
	    new read-only client spec field called 'ChangeView'.

	#650821 (Job #31840) **
	    The new 'p4 clean' command (equivalent to the new '-w' flag
	    for 'p4 reconcile') can be used to restore workspace files to
	    match the state of the corresponding depot files.  Files that
	    have been added to the workspace but not opened for add will
	    be removed from the workspace, and files that have been
	    modified or removed without being opened for edit or delete
	    will be refreshed to match the version that was last synced.

	#708510 (Job #522, #2121, #2170, #18255, #21302, #24025, #25080,
	         #25715, #32821, #55643, #60662, #65728) **
	    It is now possible to specify pre/post triggers on most commands.
	    A new trigger type of 'command' exists that executes when a command
	    matching the specified regular expression (regex) is run.  E.g.

	    banner command  pre-user-login      "figlet Hello, %user%"
	    nooblt command  pre-user-obliterate "fail command disallowed"
	    ide_fn command post-user-(add|edit) "integration_with_ide.exe"

	#726410 (Job #18330) **
	    Triggers can now be run directly from the depot. Plain or stream
	    depot files with an optional revision number can now be specified
	    when placed within percent signs.  E.g. %//depot/trigger.pl%.
	    When a depot path variable is present in the trigger command,
	    the contents of the variable are filled with the path to a temporary
	    file with the contents of the depot file.  E.g.:

	       chk_path form-in client "perl %quote%%//admin/trigger.pl%%quote%"

	    Becomes

	       perl "/tmp dir/some_tmp_named_file"

	#711144 **
	    The monitor information, the table db.monitor, will now be
	    maintained in shared memory by default.  Enabling monitor
	    information will require a server restart.  The tunable
	    db.monitor.shared can be set to 0 to disable shared memory
	    or set to a number of pages of shared memory should the
	    default (1Mbyte) be too small.  All changes to this
	    require a server restart.

Minor new functionality in 2014.1

	#893342 ** (Job #52885)
	    By default when the journal is rotated any structured logs are
	    also rotated.  When the new dm.rotatelogwithjnl configurable
	    is set to zero, log rotation is not performed at journal rotation.

	#793339 (Job #68848, #71375) **
	    The new trigger type 'change-failed' can be used to detect submit
	    or populate failure as it only fires upon commit failure and
	    returns the change number of the failed submit or populate.

	#790634 (Job #71355) **
	    Delete resolves are now ordered after other resolves.

	#784208 (Job #68928) **
	    p4d db file use changed which may improve operation on
	    Windows platforms with some anti-virus scanners.

	#784278 (Job #64900) * **
	    'p4 shelve -a leaveunchanged' shelves only changed files.

	#774149 (Job #70076) **
	    'p4 copy' now supports a '-f' flag to force the creation of extra
	    revisions for integration bookkeeping purposes.

	#770301 (Job #60662, #69042) **
	    The following new variables are available to triggers:

	    argc - command argument count
	    args - command argument string
	    command - command name
	    clientcwd - the client's current working directory
	    groups - space-separated list of groups the user is in
	    intermediateService - presence of a Broker/Proxy
	    maxErrorSeverity - empty/error/warning
	    maxErrorText - error number and text of error
	    maxLockTime - user-specified value
	    maxResults - user-specified value
	    maxScanRows - user-specified value
	    serverpid - the OS PID of the calling server process
	    serverServices - 'Services:' field of 'p4 server -o'.
	    serverVersion - version string for the server
	    submitserverid - id of server where submit originated
	    terminated - if the command exited early
	    termType - reason for the early termination
	    triggerMeta_action - command to execute by trigger
	    triggerMeta_depotFile - third field in trigger definition
	    triggerMeta_name - name from trigger definition
	    triggerMeta_trigger - second field in trigger definition

	    The %serverport% trigger variable now includes a transport prefix
	    (eg, "ssl:", "tcp6:", or "ssl6:").  Thus "p4 -p %serverport%"
	    can be used to connect to the server whether or not the server
	    listens on IPv4 or IPv6, with or without SSL.

	    See 'p4 help triggers' for all available variables.

	#766844 (Job #70121) **
	    The '-T' flag for 'p4 streams' now forces tagged output.

	#766646 (Job #70579) **
	    The 'files -A', 'print -A', and 'sizes -A' commands now process
	    revision specifiers correctly when accessing the archive depot.

	#763331 (Job #70458) **
	    'p4 describe' now diffs text+k files with the keywords collapsed
	    so that the diff output is more consistent with 'p4 diff2'.

	#758482 (Job #65107) **
	    The metadata pull thread on a replica server may now choose to
	    specify '-i 0'. This will reduce the replica lag on that replica
	    at the cost of slightly higher resource usage on the master server.

	#752276 (Job #70027) **
	    'p4 populate' now uses the command line arguments as the
	    changelist description if no description is provided.

	#738116 (Job #39274) * **
	    'p4 sync' 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 order to run a parallel sync, the configurable
	    net.parallel.max must be set to a value greater than 1.

	#728727 (Job #68822, #59107) **
	    When a replica server replicates a large changelist containing
	    new integration history, the table locking is optimized to lock
	    revision data in the replica for a shorter period.

	#728562 (Job #67686) **
	    Multiple counters may be updated in a single command.
	    Please see 'p4 help counter' for details.

	#724073 (Job #30052, #58946) **
	    Triggers typically get their parameters via command line variables
	    like %formfile% or %client%.  Now when the new triggers.io
	    configurable is set to 1, triggers will receive a dictionary of
	    key/value pairs sent to their STDIN and can send their dictionary
	    response back to the server via STDOUT, similar to how the Broker
	    does it.  This new configurable defaults to a value of 0, which is
	    13.3 behavior. A future release will change the default to 1.

	#723545 (Job #69286, #69288) **
	    An update command submitted via a forwarding replica which is
	    interrupted while it is waiting for replication processing to
	    complete will no longer cause unnecessary system resource usage
	    in the forwarding replica. New system configurables are available
	    for fine-tuning these behaviors: see 'p4 help configurables'.

	#720626 **
	    'p4 unload' now accepts the '-o outputFile' flag. 'p4 unload -o'
	    writes the current state of the specified client, label, or
	    task stream to the specified file on the client workstation,
	    instead of unloading the object from the server to the unload depot.
	    The client, label, or task stream remains fully loaded after the
	    command is run.

	#719619 **
	    An administrator may use 'p4 print -U' to display the data from
	    an unloaded client, label, or task stream.

	#717327 (Job #40148) **
	    'p4 client -d -f -Fs' will delete a client even when it has changes
	    with shelved files.  In this case, the shelved changes are
	    left intact.

	#711631 (Job #67673) * **
	    'p4 reconcile -m' reduces costly digest computation on the
	    client when detecting if files are changed outside of Perforce.
	    This option can only be used if the files had been synced
	    with the +m filetype, or using a client with "modtime" option set.

	#710472 (Job #66978) **
	    'p4 fstat' now returns the 'isMapped' field for files that are
	    open for add and mapped in the current client view.

	#710347 (Job #68682) **
	    Resolve records are now only considered to be 'pending integrations'
	    for the purposes of 'revert -a' and 'revertunchanged' if they are of
	    the type that will be written as permanent integration records on
	    submit, i.e. originating from a different file from the target.

	#709340 (Job #65698) **
	    Super users can now run 'p4 logout -a USER' to invalidate another
	    user's login ticket.

	#705255 (Job #36551) **
	    Server command options may now be specified using an alternative
	    long-form syntax. For example, instead of

		p4 reopen -c 1602 -t text+F //depot/my/file

	    you may now instead use

		p4 reopen --change 1602 --filetype text+F //depot/my/file

	    To display the long-form options syntax for a particular command,
	    use the '--explain' facility:

		p4 sync --explain

	    Or to explain the syntax for just a single option of a command:

		p4 revert --explain -k

	    In this release, nearly all options have both a short-form and a
	    long-form syntax. The option behaves identically using either
	    syntax. Some rarely used options have only a short-form syntax.

	#704128 (Job #65154) **
	    Expose the in-use %P4PORT% to SSO scripts so they can distinguish
	    between the port used to talk to a broker/proxy and the real
	    serverAddress.

	#703887 (Job #62279) **
	    Populate now fires change-submit triggers. As with change-content
	    triggers, a temporary pending change record is created so that the
	    description can be accessed, but be aware that populate does not
	    have open files associated with it.

	#696966 (Job #57909) **
	    'p4d -jd -z' now adds the '.gz' extension to the dump file if the
	    filename doesn't already end with .gz.

	#693803 (Job #67684) **
	    'p4 list' now takes the -d flag to delete a no-longer-needed
	    temporary label.

	#685967 (Job #65732) **
	    The new 'p4 cachepurge' command can be used by an administrator
	    to help manage replica servers which must be deployed on machines
	    with limited disk space resources.

	#679524 (Job #26192,#52493) **
	    'p4 sizes' now takes the -h flag to request the output be
	    formatted in human-readable form.

	#676312 (Job #64123) **
	    In a distributed configuration, changes which are pending or
	    shelved on an Edge Server are now visible in the 'p4 changes'
	    command on other servers in the installation.

	#673961 (Job #67442) **
	    'p4 copy' will now give warning messages when source files have
	    been moved but the target is not correctly disposed to open them
	    for move.  In addition to a warning for each problematic file,
	    there is a summary at the end suggesting a course of action to
	    correct the problem (e.g. first copying from an earlier change
	    that will provide a better basis for copying the move).

	#664438 **
	    'p4 merge' will now output scheduled resolves by default.  This
	    was previously enabled by the '-Or' flag.

	#657309 (Job #3270) **
	    The new 'p4 renameuser' command renames an existing user to a
	    new name, updating all the changes, specs, and other objects owned
	    by that user. For more information, and some issues to consider
	    prior to running the command, see 'p4 help renameuser'.

	#656580 (Job #65730) **
	    The configurables template.client and template.label can be set to
	    provide a server-wide default client and/or label to be used as a
	    template when the new client or label does not already exist and the
	    -t argument is omitted from the 'p4 client' or 'p4 label' command.

	#656151 (Job #42211,#44034) **
	    The server.depot.root configurable can be set to modify the
	    interpretation of a relative Map: field in all depot specs. Without
	    the configurable set, relative maps are interpreted as relative to
	    P4ROOT; with the configurable set, relative maps are interpreted
	    as relative to the value of server.depot.root.

	#654585 (Job #19368,#51693,#56354,#68105,#70602) **
	    The server now records checkpoint/journal history entries in the
	    db.ckphist table. This new table is not part of the main server
	    database; it need not be backed up and can be deleted at any time.
	    The 'p4 journals' command can be used to diplay information from
	    the db.ckphist table.

	#644426 (Job #64836) **
	    More keywords are now available with ktext files:

	        $DateUTC$ - date of file submission, in UTC.
	        $DateTimeUTC$ - date and time of file submission, in UTC.
	        $DateTimeTZ$ - date and time of file submission, in the
	                       server's timezone, with the timezone information
	                       included in the keyword expansion.

	#618344 (Job #64824) **
	    'p4 unlock' supports the '-x' flag in a distributed installation to
	    enable clearing of orphaned exclusively locked files.

	#616600 (Job #64822) **
	    'p4 opened' supports the '-x' flag in a distributed installation to
	    display files which are opened exclusively across the entire
	    installation.

Bugs fixed in 2014.1

	#1455848 (Job #88980) **
	    In replica chaining configurations, replicas which were not
	    directly connected to the master server were not processing
	    archive deletion operations arising from operations such as
	    submission of a binary+S file, deletion of a shelf, obliteration,
	    archive depot operations or retype +l commands.

	#1352542 (Job #85157) *
	    The MacOSX command line client could fail to complete a parallel
	    sync if two or more parallel transfers attempted to create the
	    same directory in the filesystem at the same time; the failing
	    file transfer would print: "mkdir: /path/to/dir: File exists".

	#1341013 (Job #84992) **
	    If an archive file for a local shelf on an Edge Server should
	    become damaged or missing, deleting the shelf, or deleting or
	    replacing that file in the shelf, will now cancel any pending
	    file transfer for that file which was listed in 'pull -l'.

	#1337988 (Job #84848) ** *
	    'p4 -Zproxyverbose sync --parallel=...' now correctly displays the
	    diagnostic information about which files were delivered from the
	    proxy's cache.

	#1335334 (Job #84810) **
	    'p4d -c <command>' uses classic lock order not the new
	    lockless lock order.  Fixed.

	#1242773 (Job #81040) **
	    The server.locks.archive configurable introduced by #898102 now
	    also applies to the 'p4 restore' command.

	#1239015 (Job #80722) **
	    A file which was integrated from a streams depot to a local
	    depot, or vice versa, would be placed into the wrong location in
	    the proxy cache if it was accessed via the proxy by a command
	    such as 'p4 sync' or 'p4 print'. Note that the symptom of this
	    bug is in the proxy cache, but the fix is in the server.

	#1225187 (Job #74936) **
	    A 'sync --parallel' command issued via a forwarding replica would
	    complete immediately, but would sync no files.

	#1213529 (Job #79647) **
	    p4d -jr would mis-handle the revStatus field if replaying db.rev
	    journal records written by a 2005.2 or older server.

	#1028809,#1204292 (Job #56707) **
	    The presence of a client spec with the same name as the TCP/IP
	    address of a replica machine no longer causes that replica to
	    issue the error: "Don't know how to translate paths for OS ''".

	#1172454 (Job #79504) **
	    A submit initiated on an Edge Server which failed due to a
	    problem detected after the edge-content trigger had been checked
	    could leave the changelist incorrectly marked as "shelved", and
	    possibly also as "promoted", on the Commit Server, although the
	    changelist was correctly recorded on the Edge Server itself.

	#1127279 (Job #79353) **
	    A 'sync --parallel' command which sync'd any files of type 'binary'
	    would write an incorrect value for the 'type' field of the db.have
	    record for the binary file(s). This could cause problems later
	    when integrating changes into these files from other branches.
	    Any workspaces potentially affected by this bug should be sync'd
	    to revision #0 and then re-sync'd for all files of type binary at
	    their convenience in order to rewrite the db.have records.

	#1065376 (Job #77360) **
	    In a distributed configuration, the 'edit -n' and 'delete -n'
	    commands for a file of type +l might incorrectly report that
	    the file was opened by another user, though it was not.

	#1061247 (Job #78830,#78915) **
	    A replica with rpl.checksum.change set to 2 or higher might
	    incorrectly write its own journal file under conditions of high
	    concurrency on the master, resulting in incorrect behavior and
	    problems with replicas of this replica.

	#1059769 (Job #78855) * **
	    'p4 sync --parallel' now works with certain custom licenses.

	#1058411 (Job #78785) **
	    If a replica with rpl.checksum.change set to 2 or higher
	    encountered an internal error processing a changelist checksum
	    note, it would halt replication. Now, it logs the error but
	    resumes replication.

	#1047418 (Job #78444) **
	    The replica-specific table db.user.rp is now journaled. This means
	    that the table data will appear in checkpoints, journals and
	    dumps. The replica pull thread automatically filters out all
	    db.user.rp records from its P4TARGET server, which is normally the
	    desired behavior, since records in this table are unique to each
	    replica's activity. However, for maintaining warm standby replicas
	    of other replicas, you can set rpl.replay.userrp=1 for the standby
	    replica to disable the filtering and replicate db.user.rp data.

	#1045565 (Job #78497)
	    Promoting a shelf, then subsequently deleting it, using the same
	    network connection to the Edge Server could fail to properly
	    delete the shelf.

	#1042783 (Job #78427) *
	    'p4 -P <ticket> sync --parallel' will no longer give authentication
	    errors for the file transfer sub-processes.

	#1039831 (Job #73075, #74961) **
	    The revision specifier @client was not working properly for
	    clients bound to a build-server.

	#1039277 (Job #78383) **
	    A 'p4 describe' command which accesses a remote promoted shelf now
	    properly reports any communications-related error conditions which
	    occur when retrieving the remote shelf.

	#1038837 (Job #78164) **
	    In a distributed environment, the change-failed trigger now
	    runs on the commit server rather than on the edge server.

	#1037755 (Job #76982) *
	    If a 'p4 sync --parallel' child process encounters an error
	    writing files to the local machine, the parent 'p4 sync' command
	    now returns a non-zero exit status to the operating system.

	#1036596 (Job #77433) **
	    In a distributed configuration, 'p4 unshelve' no longer takes
	    the global exclusive file lock for a file of type +l which is
	    unshelved for add.

	#1035769 (Job #78256) **
	    A replica running 2014.2 or later which is connected to an earlier
	    master server no longer displays 'Unknown command' when the
	    'p4 pull -lj' command is run.

	#1032010 (Job #74056,#71961) **
	    'p4 sync --parallel' would fail to expand RCS keywords properly.
	    And 'p4 sync --parallel' would fail with the message "Can't clobber
	    writable file" if the file was changed from filetype binary+w to
	    filetype binary (or text+w to text) by the revision being sync'd.

	#1031176 (Job #76013) **
	    'p4d -xx db.working db.have' could create spurious delete records
	    for db.working if a file opened for move or delete is subsequently
	    moved and submitted by another client and the opened file is
	    then synced to the head revision.

	#1030313 (Job #77559) **
	    A build-server replica would incorrectly process the View: field
	    for labels, causing the wrong set of revisions to be specified
	    by the label.

	#1028372,#1028461 (Job #77558) **
	    A replica with lbr.replication=cache was not able to access
	    labels using the autoreload option.

	#1027668 (Job #77595) **
	    'p4 export -f' now formats the domain type column correctly for
	    unloaded clients, unloaded labels, and unloaded task streams.

	#1026707 (Job #77504) ** *
	    'p4 -Zproxyload sync --parallel=...' now correctly updates the
	    proxy's archive cache without sending files to the client.

	#1026534 (Job #77280) **
	    If a change submitted via an Edge Server was rejected by a
	    change-submit or change-content trigger on the Commit Server,
	    the change's files were modified to read-only mode on the client
	    machine rather than being left in writable mode.

	#1026233 (Job #77435) **
	    A 'p4 integ' or 'p4 unshelve' command on an Edge Server which
	    failed to open a +l file due to a client-side file transfer error
	    would leave an orphaned lock record in db.excl.

	#1010386 (Job #77471) **
	    The 'reload -p' command, used to migrate a workspace from one
	    Edge Server to another, or between an Edge Server and the Commit
	    Server, failed in certain specialized licensing scenarios.

	#1008489 (Job #77390) **
	    In a distributed installation, a pending change can be viewed on
	    a server other than the server where the change was created. In
	    such a situation, the pending change will not display a list of
	    open files (the open files are shown only on the owning server).
	    The 'change -d' command would incorrectly allow the pending change
	    to be deleted if the command was issued on a server other than the
	    owning server; this behavior is fixed and the command is now
	    rejected with an appropriate error message.

	#1004762 (Job #77358) **
	    Fixed a crash that could occur when unshelving moved files to
	    a different branch.

Bugs fixed in 2014.1 PATCH13

	#1003287 (Job #77269) **
	    On a forwarding replica with server.depot.root set, a submit which
	    added new files to a depot with a relative mapping would cache
	    copies of those files in the default location under P4ROOT, instead
	    of in the directory named by server.depot.root

	#999862 (Job #76686) **
	    Parallel sync could under some high concurrency scenarios scan
	    too many rows from db.sendq. This has been fixed.

	#998869 (Job #73278) **
	    A replica with rpl.checksum.change set to 2 or higher might
	    incorrectly report that a changelist checksum differed if the
	    changelist was submitted by a workspace with SubmitOptions =
	    revertunchanged and at least one unchanged file was reverted
	    during the submission of that changelist.

	#965257 (Job #61632) **
	    The pull and pull -u threads of replica servers no longer retain
	    an open file handle to the journal file on the master server
	    when they are otherwise idle.

	#954124 (Job #75844) **
	    In certain chained replica configurations, updates to 'p4 server'
	    specs on the master server were not propagated beyond the first
	    replica on the chain.

	#949563 (Job #75718) **
	    On an Edge Server, 'p4 print -o' of a remote shelf mishandles the
	    name of the output file.

	#932013 (Job #71795) **
	    A better error message is issued when accidentally attempting to
	    use a Commit Server-bound workspace on an Edge Server. Also, the
	    'p4 clients -s NNN' and 'p4 labels -s NNN' commands now print the
	    complete list of clients/labels when NNN is the Commit Server's
	    serverid.

Bugs fixed in 2014.1 PATCH8

	#902281 (Job #70245) **
	    This change improves performance of 'p4 archive' against large
	    datasets.  Multiple scans have now been reduced to a single scan
	    of pending integration data.

	#901816 (Job #74020) **
	    When migrating client workspaces from commit servers to edge
	    servers, promoted shelves are no longer accessible on the
	    edge server they are bound to.  This change allows unshelve
	    to automatically pull metadata and content to the server with
	    the correct ownership.

Bugs fixed in 2014.1 PATCH7

	#898102 (Job #74160) **
	    Heavy use of the 'p4 archive' command can block other commands
	    due to server locks.  With 'peeking' enabled server.locks.dir
	    cannot be disabled.  To turn-off this long duration lock for
	    archive set server.locks.archive=0.

Bugs fixed in 2014.1 PATCH6

	#893234 (Job #73768) **
	    'p4 clean' will no longer attempt to take exclusive depot file
	    locks in a distributed environment.

	#889286 (Job #72677) **
	    'p4 copy' will no longer attempt to exclude source revisions that
	    have previously been marked as ignored.

	#886610 (Job #63251) **
	    The forwarding replica and edge server configurations now accept
	    the optional username argument on the 'p4 login' and 'p4 logout'
	    commands.

	#886584 (Job #73402) **
	    'p4 renameuser' would fail to completely rename the user.

Bugs fixed in 2014.1 PATCH5

	#882067 (Job #73412) **
	    Replication can be halted due to lock-order issues when the
	    configurable rpl.checksum.change is set to a value of 2 or
	    more. This problem can only happen if the master server and
	    the replica server are both running in lockless mode and
	    if two concurrent submits (one with integration history)
	    interleave transactions.

	#880506 (Job #71725) **
	    The istat.mimic.ichanges configurable controls the reporting
	    of revisions between stream and parent.  If set, istat will
	    not report cherry-picked revisions already present in the target.
	    The default behavior will report any changes not credited, even
	    when the content may already be in the target.

	#877872 (Job #73313) **
	    An 'annotate', 'diff', 'diff2', 'describe', or 'resolve' command
	    which used the '-db' or '-dw' flags could crash if one of the file
	    revisions processed by the command was exactly 65,536 bytes in size.

Bugs fixed in 2014.1 PATCH4

	#875393 (Job #72649) **
	    'p4d -xf 71917' could promote unpromoted shelved changes from
	    a 2014.1 edge server. This has been fixed.

	#874978 (Job #73263) **
	    When using streams the dynamic view generator could crash on
	    parsing a very long stream path.

	        (Job #73265) **
	    This version addresses the SSL/TLS MITM CVE-2014-0224 vulnerability
	    in OpenSSL by linking in version 1.0.1h

Bugs fixed in 2014.1 PATCH3

	#870919 (Job #73199) **
	    'p4 verify' has been added to the list of files that can
	    run in lockless mode

	#870334 (Job #72151) **
	    'p4 annotate -I' now works correctly with the '-dw' flag.

	#870199 (Job #73184) **
	    Highly concurrent server submit operation could cause
	    corruption of tables db.integed and db.resolve.  Fixed.

Bugs fixed in 2014.1 PATCH2

	#853209 (Job #72629) **
	    'p4 fstat @=<promoted shelf>' from an edge server would not
	    automatically fetch meta-data for a remote shelf unless the -Rs
	    option was specified.

	#850073 (Job #72842) **
	    'p4 submit' will no longer record revisions with invalid archive
	    paths after unshelving an integrated file through a branch view.

	#849654 (Job #72162) **
	    Commands which must find lazy copies, i.e. obliterate, retype,
	    and fstat -Oz, could cause stack overflows when there
	    are many branches against the same file.  Fixed.

	#849566 (Job #72816) **
	    The Edge Server algorithm for handling the replication of a large
	    'p4 obliterate' command is now more efficient.

	#844664 (Job #72542) **
	    'p4 fstat' will no longer return 'isMapped' twice on files that
	    are open for move/add.

	#844110 (Job #72726) **
	    A replica with rpl.checksum.change set to 2 or higher might
	    incorrectly report that a changelist checksum differed if the
	    changelist contained moved files which had previously been moved
	    by an earlier changelist (and both moves were lazy copies)

	#844029 (Job #72471) **
	    'p4 renameuser' no longer corrupts the user's stored password.

	#843871 (Job #72411) **
	    'p4 admin journal' and 'p4d -jj' could incorrectly rotate the
	    server's journal on a heavily loaded Linux server, resulting in
	    some journal records which were generated after the journal
	    rotation being written to the end of the already-rotated journal.

Bugs fixed in 2014.1 PATCH1

	#840418 (Job #72690) **
	    'p4 diff2 //file#head //file@=<shelved changelist>' where the
	    shelved changelist was 'promoted' in a commit/edge server
	    configuration could crash the server.

	#834556 (Job #72533) **
	    'p4 fstat' in a distributed environment (commit/edge) was not
	    reporting other server exclusive lock opens.

	#827741 (Job #72275) **
	    The maximum line length for an RCS keyword file is now configurable,
	    set via lbr.rcs.maxlen.  The default has been increaed to 10M.

	#827683 (Job #72399) **
	    The server could crash if it failed to open the journal.

	#826998 (Job #71750) **
	    On Windows, a protects table entry that uses an IPv4 address with
	    CIDR notation may not match the correct addresses if it has an octet
	    that begins with a 0 digit and has a following octet whose value
	    is greater than 7.

	#826594 (Job #72180) **
	    Triggers now set %serverip% to IP address rather than to hostname.

	#826586 (Job #72298) **
	    The mode of the lbr.replication configurable is now reported in
	    the tagged output for 'p4 info' when the value is set.

	#825277 (Job #72301) **
	    Tagged output for 'p4 shelve -a leaveunchanged' now reports
	    the files that have not been shelved due to being unchanged.

	#824742 (Job #71917) **
	    Upgrade from a pre-2014.1 commit server will not automatically
	    cause promotion of the shelved changes on the commit server.
	    'p4d -xf 71917' can be used to promote all shelved changes on
	    a commit server.

	#824528 (Job #72062) **
	    'p4 shelve -r -a leaveunchanged' resulting in a shelved change
	    being deleted could leave an empty shelved change with no
	    files. This has been fixed.

	#817279 (Job #71661) **
	    'p4 reconcile -n' will no longer take an exclusive lock. In a
	    distributed environment this could cause orphaned exclusive
	    locks. This has been fixed.

	#816430 (Job #72113) **
	    A file that has been moved into the place of a previously
	    moved file, and then moved back to its original name, can now
	    be merged at the same time as the file whose place it was moved
	    into, provided that the current filenames do not conflict.

	#816057 (Job #71614) **
	    A streams command may not return all streams when running in a
	    long-running connection and a new stream depot and stream are
	    created in a more recent connection.  This has been fixed.

	#815663 (Job #72028) **
	    Merges into a task stream will now correctly track repeated renames
	    in the parent.

Bugs fixed in 2014.1

	#834175 (Job #72533) **
	    'p4 fstat' in a distributed environment (commit/edge) was not
	    reporting other server exclusive lock opens.

	#827741 (Job #72275) **
	    The maximum line length for an RCS keyword file is now configurable,
	    set via lbr.rcs.maxlen.  The default has been increaed to 10M.

	#827683 (Job #72399) **
	    The server could crash if it failed to open the journal.

	#826586 (Job #72298) **
	    The mode of the lbr.replication configurable is now reported in
	    the tagged output for 'p4 info' when the value is set.

	#825277 (Job #72301) **
	    Tagged output for 'p4 shelve -a leaveunchanged' now reports
	    the files that have not been shelved due to being unchanged.

	#824742 (Job #71917) **
	    Upgrade from a pre-2014.1 commit server will not automatically
	    cause promotion of the shelved changes on the commit server.
	    'p4d -xf 71917' can be used to promote all shelved changes on
	    a commit server.

	#824528 (Job #72062) **
	    'p4 shelve -r -a leaveunchanged' resulting in a shelved change
	    being deleted could leave an empty shelved change with no
	    files. This has been fixed.

	#817279 (Job #71661) **
	    'p4 reconcile -n' will no longer take an exclusive lock. In a
	    distributed environment this could cause orphaned exclusive
	    locks. This has been fixed.

	#816430 (Job #72113) **
	    A file that has been moved into the place of a previously
	    moved file, and then moved back to its original name, can now
	    be merged at the same time as the file whose place it was moved
	    into, provided that the current filenames do not conflict.

	#816057 (Job #71614) **
	    A streams command may not return all streams when running in a
	    long-running connection and a new stream depot and stream are
	    created in a more recent connection.  This has been fixed.

	#815663 (Job #72028) **
	    Merges into a task stream will now correctly track repeated renames
	    in the parent.

	#803197 (Job #70703,71826) **
	    The tagged form of the 'p4 submit' command against an Edge Server
	    was returning messages from the Commit Server in non-tagged form.

	#797554 (Job #71642) **
	    Renames that occurred prior to a file being re-added will no longer
	    be considered when integrating from that file unless an 'add from'
	    record bridges the deletion.

	#794583 (Job #45366, #71436) **
	    'p4 -Ztag groups -m' could return less than the -m number of group
	    data. This has been fixed.

	#792056 (Job #71418) **
	    'p4d -jr -s j1 j2 j3 ...' only re-journaled the database updates
	    for the first journal named on the command line.

	#790488 (Job #71314) **
	    'p4 unshelve -s <arg> -c <arg2>' would fail to report if the
	    shelved change was already committed, but instead would report
	    "No such file(s)". This has been fixed.

	#784547 (Job #71137) **
	    It was possible to delete a shelf with pending resolves scheduled
	    against a different depot file (via unshelve -b).  This has been
	    fixed so that the shelf deletion is now blocked.

	#783372 (Job #69572) **
	    Stream and StreamAtChange fields of a client specification were
	    not being validated during the editor session, which could cause
	    other spec data updated during the session to be lost.  This has
	    been fixed.

	#782990 (Job #64713) **
	    Prevent a file which is already opened in a numbered change
	    from being reopened by another user who does not own the change
	    but who is sharing the workspace of the owner of the change.  This
	    could have occurred when the '-c' was absent on the reopen command.

	#777730 (Job #70950) **
	    A 'p4 revert' command which ran concurrently while a 'p4 shelve'
	    command was underway using the same workspace and changelist
	    could cause that shelve command to crash, if the shelve command
	    included certain undocumented arguments.

	#777200 (Job #70696,#70962)
	    With 'db.peeking' enabled in 2013.3, long running (overlapping)
	    'p4 sync' operations would block 'p4 obliterate' from running.
	    A 'sync -s' or client with the 'allwrite' option during a sync
	    can cause a Server fault if max results is hit.  This has been
	    corrected.

	#775130, #774830 (Job #70845, #70906) **
	    Some merge cases involving files being moved, deleted, and readded
	    in unusual ways are now handled better.

	#772218 (Job #70760) **
	    A situation in which 'p4 integrate' could give a mapping error
	    with a blank path has been fixed to give the correct error.

	#771811 **
	    The undocumented tunable rpc.deliver.duplex now defaults to 1.
	    This means that the behavior described in change 671142 is now
	    opt-in, rather than opt-out; you must explicitly set
	    rpc.deliver.duplex=0 to enable the change 671142 behavior.

	#769878 (Job #66184) **
	    Merges made into a task stream from a stream other than its parent
	    will now be 'promoted' and publicly visible.  Note that task streams
	    become less lightweight as more files are promoted, so it is recommended
	    that task streams only merge/copy to and from their parent streams.

	#769770 (Job #68423) **
	    The 'p4 logrotate' command was not correctly rotating structured
	    server logs with names that didn't include a file extension (.csv).

	#769683 (Job #34428) **
	    The 'p4 logtail' command now reports the file offset correctly
	    when run against a Windows server.

	#769476 (Job #64593) **
	    The 'p4 pull' command now defaults to '-P serverid' if the replica
	    has a serverid and no -P flag has already been specified.

	#768121 (Job #70627) **
	    'p4 interchanges' could report extra changes in cases where
	    a file had multiple sequential delete revs.  This has been fixed.

	#768000 (Job #70626) * **
	    Allow zero line context and unified diff output.

	#767850 (Job #69355) **
	    'p4 reconcile -n' and all of its aliases now only require 'read'
	    permission on the files in its path to show what needs to
	    be reconciled.

	#767206 (Job #70620) **
	    It was possible for 'p4 integrate' of a file that was moved in two
	    different branches to be matched up with the wrong variant of the
	    file if it had been deleted and re-added in one of the branches
	    prior to being moved.  This has been fixed.

	#767009 (Job #70548) **
	    'p4 shelve -c' now gives a 'files not opened in that change' error
	    rather than 'no such files' when there are no files to shelve.

	#765126 (Job #69975) **
	    The dm.proxy.protects configurable may be used to control the
	    behavior of the protections table for connections made via proxies,
	    brokers, forwarding replicas, or Edge Servers. For more
	    information, please see 'p4 help protect'.

	#764636 (Job #70559) **
	    'p4 list -M' on a forwarding replica or Edge Server was forwarding
	    the list command to the central server, but was also incorrectly
	    creating an empty list on the forwarding replica or Edge Server.

	#763622 (Job #42297) *
	    A failed 'p4 revert' on Windows will no longer make the workspace
	    file read-only.

	#745928 **
	    Command arguments in structured logs can now be up to 4096
	    characters before they are elided (previously it was 80.)

	#758833 (Job #70224) **
	    'p4 submit' from an edge server could hang if the server.locks.dir
	    configurable was set to the same absolute path on both the
	    edge and commit servers. This has been fixed.

	#753081 (Job #69991,#69986) * ** ***
	    Under some unusual circumstances a client network error could
	    cause the broker to hang and use 100% of a cpu core. Also, some
	    network requests that experienced a transient error were not
	    automatically retried.

	#752957 (Job #70168) **
	    A performance problem in 'p4 archive' introduced by change 696998
	    is addressed. The performance of 'p4 archive' now correctly depends
	    on the number of revisions being archived, not on the total number
	    of revisions examined by the 'p4 archive' command.

	#750787 (Job #70120) *
	    On Mac OS X (and the Darwin build also) syncing a file might fail
	    with Operation not permitted because of the user immutable flag
	    on files.  We now remove this flag to complete the file transfer.

	#749425 (Job #69604) **
	    'p4 istat' in a merge direction did not indicate all outstanding
	    changes reported by 'p4 merge'.  Regardless if the the content in
	    the target stream was correct, 'p4 istat' did not report identical
	    change information reported by 'p4 merge'.

	#749946 (Job #29923, #70101) *
	    UTF16 file detection changed to help block audio files
	    from being detected as UTF16.  Files which start with a
	    UTF16 BOM (Byte order mark) but which are not valid UTF16
	    or do not meet some textual tests will be considered binary.

	#744802 (Job #69776) **
	    A server with security=3 which uses a P4AUTH server that has an
	    auth-check trigger defined will no longer perform password strength
	    checking, since the external authentication system is responsible
	    for enforcing password strength requirements.

	#740482 (Job #69603) *
	    Conversions between the different Unicode UTF formats allow
	    the code positions U+FFFE and U+FFFF now.  These are
	    'sentinels' not characters and do not have printable
	    forms, but are translatable.

	#740373 (Job #69859) **
	    An Edge Server with lbr.replication=cache or lbr.replication=shared
	    would incorrectly schedule archive transfer requests in the rdb.lbr
	    table.

	#738762 (Job #69824) **
	    For the 'p4 describe', 'p4 diff', and 'p4 diff2' commands,
	    specifying a value of N for the -dc[N] and -du[N] flags that is
	    greater than 2147483647 is now quietly ignored.

	#730272 (Job #69436) **
	    'p4 status' would prefix bad characters on output lines if
	    the file argument had leading '.' or '..' characters. This has
	    been fixed.

	#728082 (Job #69043) **
	    'p4 reviews -C <client>' with an all-numeric field for <client>
	    would fail in a distributed environment. This has been fixed.

	#727757 (Job #69257) **
	    'p4 submit' will now fail if attempting to submit a branch or copy
	    of a revision that has since been obliterated or purged.

	#727035 (Job #69492) **
	    The 'p4 servers' command would incorrectly display servers of
	    type 'broker' as 'invalid'.

	#718736 (Job #69194) **
	    'p4 export -f' against an Edge Server could crash the Edge Server
	    if it encountered journal records for Edge Server-initiated submits.

	#714378 (Job #68988) **
	    Files that were shelved for 'add'like operations were retaining
	    their resolve records (add, branch, or move) when unshelved over
	    existing depot files as 'edit' operations.  Since those resolve
	    record types do not make sense for 'edit' revisions, they are now
	    dropped when those actions are converted to 'edit'.

	#709281 (Job #68824) **
	    Updating an autoreload label would write the updated label contents
	    to a new unload file rather than rewriting the original unload file
	    if spec.hashbuckets had been changed since the label was first
	    created.

	#707928 (Job #52982) **
	    'p4 obliterate' will now clear the cache used by 'p4 istat' when
	    deleting revision records within a stream.  Previously it was
	    possible for 'p4 istat' to return stale results after an obliterate.

	#707664 (Job #68752) **
	    'p4 counters -m' might display more counters than the -m limit if
	    one or more of the system configurables 'monitor', 'security',
	    'unicode', 'minClient', or 'minClientMessage' were set.

	#704245 (Job #67904) **
	    'p4 fstat -e <shelvedChange> -Rs -Ol" now reports the file size
	    and digest of files shelved at the specified change. Previously
	    it reported the size and digest of files at the head revision.

	#699932 (Job #19001) *
	    The modtime client setting and +m file type modifier now only
	    set the file modification time.  Previous versions would also
	    set the file access time to the same value as the modificiation
	    time.

	#698965 (Job #68292) **
	    The diff '-dw' and '-db' flags would fail to ignore whitespace at
	    the end of a file that did not end with a newline.

	#697571 (Job #68302) **
	    A 'p4 restore' command with multiple filespec arguments will no
	    longer halt at the first filespec argument for which no revisions
	    can be restored.

	#696453 (Job #65901) **
	   'p4 changes -s restricted' and 'p4 changes -s invalid' used to
	   return bogus data. Now these commands return an error message.

	#687657 (Job #67951) **
	    A rare case where ignore credit could be lost in the process of
	    overwriting a change via copy has been corrected.

	#685799 (Job #67698) **
	    Integrating and resolving a moved file would sometimes suggest
	    ignoring the move when it had been copied over by another file.
	    This has been corrected.

	#672366 (Job #70860) **
	    When a 'copy' content resolve is combined with an 'ignore' filetype
	    resolve it will now be recorded as a 'merge' to ensure that the
	    copy does not override the outstanding filetype difference.

	#659164 **
	    'p4 reconcile' will now detect files that have been added to
	    the workspace in locations that map to existing (unsynced) depot
	    files.

	#644128 (Job #66194) **
	    'p4 logstat -l journal' now works as documented.

	#642804 (Job #66179) **
	    For some types of file damage, 'p4 verify' will now print "BAD!"
	    where formerly it printed "MISSING!".

--------------------------------------------------------------------------
Important note:

	Please refer to:
	http://www.perforce.com/perforce/r13.3/user/relnotes.txt
	to get up to date GA and post-GA information about this release.
--------------------------------------------------------------------------

Important changes to perforce database tables 2013.3 **

	NEW DATABASE FORMAT **

	    This release contains major changes to the perforce database
	    implementation (BTREE). These changes are not compatible with
	    the previous version (i.e. this is NOT a drop-in upgrade) and
	    requires a restore from a checkpoint (note the journal format
	    has not changed).

	    This release is functionally the same as 2013.2 apart from the
	    new btree format and the improved concurrency that can be enabled
	    with these database changes.

	    Before checkpointing your existing database, please read the
	    release note for Job #68870 carefully to see if it applies to you.

Major new functionality in 2013.3

	#616010 (Job #64576, #64577) **
	    Improved concurrency through lockless reads.  This release
	    benefits from a new type of perforce lock known as 'peeking'.
	    When 'peeking' is enabled many common commands no longer
	    block other commands attempting to update tables. Consistency
	    is applied through a new counter 'maxCommitChange' obtained
	    at the beginning of each command and through client entity
	    locks, which are fine-grain unique client locks that prevent
	    concurrent read/write access to an individual client.

	    A slightly different table lock-order is used with 'peeking'
	    enabled, this is due to requirements when multiple tables
	    are accessed with a mixture of read and peek.  Also, submit
	    is broken into 2 transactions,  the first is the update to
	    key tables (i.e. the bulk of the submit) the second is an
	    update to the submitters client data, this reduces the overall
	    update lock time for a submit.

	    Lockless reads are enabled when starting the server with the
	    command line option '-vdb.peeking=2' or by the configurable
	    'db.peeking' followed by a server restart.

	    e.g.  'p4 configure set db.peeking=2'  (needs server restart).

	    value
	      0   disabled   (default)
	      1   new lock-order / entity locks       (diagnostic only)
	      2   peeking enabled               (hx/dx optimization on)
	      3   peeking enabled               (hx/dx optimization off)

	    A typically installation would run with peeking set to 2, the
	    value 3 is only intended for certain repositories as it carries
	    a trade-off between concurrency and command completion speed.
	    If your repository has many revisions per file then setting a
	    value of 3 may cause some commands to complete slower but will
	    not require read locks on the db.revhx/db.revdx tables.

	    List of commands that run lockless (peeking enabled):

	    annotate, branches, changes, clients, counters, depots, diff,
	    diff2, dirs, filelog, files (-a) fixes, fstat (peeking=3), have,
	    interchanges, integ, integed, istat, jobs, keys, labels, merge,
	    print (-a), resolved, streams, sizes (-a), sync (peeking=3), users

	    List of commands that run partial lockless (peeking enabled):

	    copy, cstat, fstat, interchanges (copy), istat (copy), opened,
	    sync

	    NOTE: With 'peeking' server.locks.dir can no longer be disabled,
	    that is because these locks are required for client consistency.
	    If you are a customer who has disabled this in the past due to
	    problems with syncs,  you can turn-off the longer duration lock
	    by setting server.locks.sync=0.

Minor new functionality in 2013.3

	#685514 **
	    This release has made changes to the way that 'p4 sync' manages
	    its memory consumption.  For all cases memory usage has been
	    reduced (up to 50% for initial syncs and forced refresh).

	#662490 **
	    Due to the heavy reliance on server.locks for better concurrency
	    the default value for spec.hashbuckets has been changed to 99.
	    Typically this value has already been increased from its previous
	    default of zero.

Bugs fixed in 2013.3

	#1239015 (Job #80722) **
	    A file which was integrated from a streams depot to a local
	    depot, or vice versa, would be placed into the wrong location in
	    the proxy cache if it was accessed via the proxy by a command
	    such as 'p4 sync' or 'p4 print'. Note that the symptom of this
	    bug is in the proxy cache, but the fix is in the server.

	#1213529 (Job #79647) **
	    p4d -jr would mis-handle the revStatus field if replaying db.rev
	    journal records written by a 2005.2 or older server.

	#1061247 (Job #78830,#78915) **
	    A replica with rpl.checksum.change set to 2 or higher might
	    incorrectly write its own journal file under conditions of high
	    concurrency on the master, resulting in incorrect behavior and
	    problems with replicas of this replica.

	#1058411 (Job #78785) **
	    If a replica with rpl.checksum.change set to 2 or higher
	    encountered an internal error processing a changelist checksum
	    note, it would halt replication. Now, it logs the error but
	    resumes replication.

	#1047418 (Job #78444) **
	    The replica-specific table db.user.rp is now journaled. This means
	    that the table data will appear in checkpoints, journals and
	    dumps. The replica pull thread automatically filters out all
	    db.user.rp records from its P4TARGET server, which is normally the
	    desired behavior, since records in this table are unique to each
	    replica's activity. However, for maintaining warm standby replicas
	    of other replicas, you can set rpl.replay.userrp=1 for the standby
	    replica to disable the filtering and replicate db.user.rp data.

	#1039831 (Job #73075, #74961) **
	    The revision specifier @client was not working properly for
	    clients bound to a build-server.

	#1036596 (Job #77433) **
	    In a distributed configuration, 'p4 unshelve' no longer takes
	    the global exclusive file lock for a file of type +l which is
	    unshelved for add.

	#1035769 (Job #78256) **
	    A replica running 2014.2 or later which is connected to a 2013.2
	    master server no longer displays 'Unknown command' when the
	    'p4 pull -lj' command is run.

	#1031176 (Job #76013) **
	    'p4d -xx db.working db.have' could create spurious delete records
	    for db.working if a file opened for move or delete is subsequently
	    moved and submitted by another client and the opened file is
	    then synced to the head revision.

	#1030313 (Job #77559) **
	    A build-server replica would incorrectly process the View: field
	    for labels, causing the wrong set of revisions to be specified
	    by the label.

	#1028751 (Job #56707) **
	    The presence of a client spec with the same name as the TCP/IP
	    address of a replica machine no longer causes that replica to
	    issue the error: "Don't know how to translate paths for OS ''".

	#1028372,#1028461 (Job #77558) **
	    A replica with lbr.replication=cache was not able to access
	    labels using the autoreload option.

	#1027668 (Job #77595) **
	    'p4 export -f' now formats the domain type column correctly for
	    unloaded clients, unloaded labels, and unloaded task streams.

	#1010386 (Job #77471) **
	    The 'reload -p' command, used to migrate a workspace from one
	    Edge Server to another, or between an Edge Server and the Commit
	    Server, failed in certain specialized licensing scenarios.

	#811622 (Job #71819) **
	    'p4d -xf 71819' may now be used to clear invalid or unnecessary
	    charset values from the database.  Note that this will scan the
	    entire revision table.

	#811455 (Job #71765) **
	    'p4 reopen' will no longer set a charset on a non-Unicode file.

	#799439 (Job #71686) **
	    'Accept theirs' charset resolves from revisions with corrupt
	    charset values will no longer cause a crash.

	#798198 (Job #71648) **
	    A case in which a file with multiple sequential deleted revisions
	    could require integration unnecessarily has been fixed.

	#782068 (Job #71155) **
	    'p4d -xx db.working db.have' could create spurious delete records
	    for db.working if a file opened for edit is subsequently moved
	    and submitted by another client and the opened file is then synced
	    to the head revision.

	#781820 (Job #70845, #70906) **
	    Some merge cases involving files being moved, deleted, and readded
	    in unusual ways are now handled better.

Bugs fixed in 2013.3 PATCH2

	#778881 (Job #70696) **
	    With 'db.peeking' enabled in 2013.3, long running (overlapping)
	    'p4 sync' operations would block 'p4 obliterate' from running.

	#778845 (Job #70908) **
	    Disabling the db.peeking level and then running 'p4 admin restart'
	    would not change the lock order back correctly, resulting in lock
	    order errors.

	#778057 (Job #70962) **
	    A 'sync -s' or client with the 'allwrite' option during a sync
	    can cause a Server fault if max results is hit.  This has been
	    corrected.

	#777796 (Job #70950) **
	    A 'p4 revert' command which ran concurrently while a 'p4 shelve'
	    command was underway using the same workspace and changelist
	    could cause that shelve command to crash, if the shelve command
	    included certain undocumented arguments.

	#774784 (Job #69991) ***
	    Under some unusual circumstances a client network error could
	    cause the broker to hang and use 100% of a cpu core.

	#773134 (Job #70702) **
	    With 'peeking' enabled and a very high submit concurrency rate, the
	    maxCommitChange counter may get updated in the wrong order. This
	    bug might cause some transient inconsistency (most likely with
	    aggressive automation that tracks submits).

	#772545 (Job #70700) **
	    A long running connection that switches between task and non-task
	    streams could run into lock order issues when issuing a submit.
	    The error "Locking failure: db.revtx locked after db.revdx!"
	    would be observed on submit.  A subsequent attempt to submit
	    the change would result in success.

Bugs fixed in 2013.3 PATCH1

	#768990 (Job #70620) **
	    It was possible for 'p4 integrate' of a file that was moved in two
	    different branches to be matched up with the wrong variant of the
	    file if it had been deleted and re-added in one of the branches
	    prior to being moved.  This has been fixed.

	#768126 (Job #70627) **
	    'p4 interchanges' could report extra changes in cases where
	    a file had multiple sequential delete revs.  This has been fixed.

	#760537 (Job #70422) **
	    With 'peeking' enabled on a forwarding-replica, the entity locks
	    used to maintain client consistency were not being correctly
	    released.

	#755431 (Job #70230) **
	    With 'peeking' enabled, remote depot files with a change number
	    greater than the maxCommitChange value would be ignored.

	#753191 (Job #70144) **
	    A case involving integration of files with a tricky combination
	    of prior ignore and copy records is now handled better.

	#752970 (Job #70168) **
	    A performance problem in 'p4 archive' introduced by change 696998
	    is addressed. The performance of 'p4 archive' now correctly depends
	    on the number of revisions being archived, not on the total number
	    of revisions examined by the 'p4 archive' command.

	#749884 (Job #69604) **
	    'p4 istat' in a merge direction did not indicate all outstanding
	    changes reported by 'p4 merge'.  Regardless if the the content in
	    the target stream was correct, 'p4 istat' did not report identical
	    change information reported by 'p4 merge'.

	#748216 (Job #70041) **
	    Resolve will no longer give a false "already opened" error when
	    resolving an edited depot file against a moved depot file.

	#745284 (Job #69946) **
	    Integrate will now consider all reverse integration records
	    between the source and target when trying to determine whether
	    the files share a close enough connection that scanning for
	    renamed variants is not necessary.

	#744839 (Job #69776) **
	    A server with security=3 which uses a P4AUTH server that has an
	    auth-check trigger defined will no longer perform password strength
	    checking, since the external authentication system is responsible
	    for enforcing password strength requirements.

Bugs fixed in 2013.3

	#736593 (Job #69548) **
	    p4 resolve' no longer crashes when attempting to handle database
	    records with invalid file charset values.

	#723545 (Job #69286, #69288) **
	    An update command submitted via a forwarding replica which is
	    interrupted while it is waiting for replication processing to
	    complete will no longer cause unnecessary system resource usage
	    in the forwarding replica.

	#716980 (Job #68870) **
	    On a case-insensitive server, the 'p4 server' command was
	    incorrectly allowing the creation of two separate server specs
	    with ServerIDs that differed only in case. Additionally, the
	    'p4 servers' command was displaying the list of server specs
	    in case-sensitive sorting order on a case-insensitive server, and
	    the 'p4 configure show <serverid>' command was only showing
	    configuration variables for the server which matched exactly
	    in case. Starting with this change, case-insensitive servers
	    will process the ServerID value using case-insensitive matching.

	    Due to the new database format introduced with this release,
	    a restore from checkpoint is required. On a case-insensitive
	    server, this restore will have the following effects on the
	    existing server specs:
	    1) If there are multiple server specs with ServerIDs that differ
	       only in case, all but one of those server specs will be deleted;
	       only the last server spec will be retained.
	    2) The sort order of the existing server specs will be repaired,
	       so that the 'p4 servers' command now displays them in
	       case-insensitive sort order.
	    If you are operating a server in case-insensitive mode, then
	    prior to upgrading to this release, you should run 'p4 servers'
	    and see if you have multiple server specs for the same
	    case-insensitive ServerID. If you do, use 'p4 server -d' to
	    delete the unwanted server specs before checkpointing and restoring
	    your database, to ensure that the correct server spec is retained.

--------------------------------------------------------------------------
Important note:

	Please refer to:
	http://www.perforce.com/perforce/r13.2/user/relnotes.txt
	to get up to date GA and post-GA information about this release.
--------------------------------------------------------------------------

Major new functionality in 2013.2

	#616528 **
	    The new 'p4 integrate' engine made available in 2011.1 and
	    refined in subsequent releases is now the default.  Sites
	    which are using streams, or which have set the dm.integ.engine
	    configurable to an explicit value, will not see any difference
	    in behavior.  Sites which wish to continue using the old
	    (2006.1) integration logic must set the dm.integ.engine
	    configurable to '2'.  Sites switching to the new engine should
	    expect the following changes:
		1) New types of resolve scheduled for differences other
		   than content: filename, filetype, attribute, etc.
		   Note that in order to resolve differences in filename,
		   move/add and move/delete revisions must be integrated
		   together in pairs; attempting to integrate only half
		   of a moved file pair will by default result in an error.
		2) Many situations which used to cause integrate to fail
		   with an error and prompt for a flag in order to verify
		   the user's intent will now instead result in a resolve.
		   For example, files which have been deleted in the source
		   and edited in the target may now be resolved such that the
		   user can choose to accept or ignore the deletion.
		3) Base selection now considers the individual edits made to
		   each file in order to more accurately propagate changes.

	#575959 (Job #58134, #59015, #60774) **
	    The 'p4 server' spec now allows the definition of two new types
	    of Perforce server nodes: Commit Server, and Edge Server. An
	    installation with exactly one Commit Server, one or more Edge
	    Servers, and (optionally) other replicas, proxies, and brokers,
	    supports Federated Server functionality. An Edge Server is a
	    Forwarding Replica which independently supports local work in
	    progress. A Commit Server is a master Perforce server which
	    cooperates with each Edge Server to support submitting that work
	    via the Edge Server. Most work which requires a client workspace
	    is performed directly on the Edge Server, and is fully offloaded
	    from the Commit Server. Most administrative work, including the
	    commands which edit most spec objects, is performed on the
	    Commit Server, and is automatically forwarded when a spec
	    command ('p4 protect', 'p4 group', 'p4 stream', etc.) is issued
	    against an Edge Server. Since Edge Servers support distinct sets
	    of work in progress, they must be adequately provisioned,
	    securely administered, and reliably backed up; please contact
	    Perforce Technical Support if you need assistance in planning or
	    deploying Edge Server instances in your environment.

Minor new functionality in 2013.2

	#716174 (Job #68945) **
	    A Windows Commit Server might crash under heavy load.

	#681927 (Job #65134) **
	    'p4 list' now accepts the '-C client' flag.  This option
	    limits the files to those mapped through the users client
	    workspace.

	#671247 (Job #67318) **
	    'p4 reviews' now accepts the '-C client' flag.  This option
	    limits the files to those opened in the specified clients
	    workspace (can be used with -c).

	#668192 (Job #60133) **
	    The 'p4d -jd' and 'p4d -jr' commands now support '-k/-K' flags
	    for table-level filtering. These flags are uncommon, and are
	    generally used only by Perforce technical support.

	#647654 (Job #66372) **
	    The lbr.replication configurable for a replica now accepts the
	    new setting 'cache'; see 'p4 help replication' for details. Also,
	    the rpl.verify.cache configurable can be specified to instruct the
	    replica to verify archive digests on every reference (this can be
	    expensive). Some variants of 'shelve -r' and 'shelve -f' now write
	    additional @dl@ journal records describing the archive files that
	    are being replaced in the shelf.

	#639050 (Job #66099) **
	    'p4 sizes' now accepts the '-A' flag to display file size
	    information for files in the Archive depot.

	#625219 (Job #64412) **
	    'p4 property -l -A' now includes the property sequence number in
	    its output.

	#623802 (Job #2054, #65142) **
	    'p4 diff' and 'p4 diff2' now support a '-Od' flag to limit their
	    output to differing files only.

	#623464 (Job #64868) **
	    Set security=4 to specify that authenticated service users must
	    be used for all replica server and remote depot connections
	    to this server.

	#618347 (Job #61231,#40707) **
	    'p4 unshelve' will now schedule a branch resolve when unshelving
	    an edit to a file that has been deleted or that does not exist.

	#618344 (Job #64824) **
	    'p4 unlock' supports the '-x' flag in a distributed installation to
	    enable clearing of orphaned exclusively locked files.

	#616600 (Job #64822) **
	    'p4 opened' supports the '-x' flag in a distributed installation to
	    display files which are opened exclusively across the entire
	    installation.

	#616051 (Job #52759) **
	    'p4 sync' now defaults to the '-s' behavior for clients with
	    'allwrite' and 'noclobber' set.

	#615297 (Job #63617) **
	    'p4 submit' will now record 'branch' and 'copy' resolve records
	    that come from earlier revisions of the same file as permanent
	    integration records.  This makes it possible to record that an
	    earlier revision was copied over a later one to roll it back.

	#612073 (Job #64526) * **
	    'p4 reconcile' and 'p4 status' will now attempt to convert
	    'add' and 'delete' actions into paired 'move/add' and 'move/delete'
	    actions by comparing the added client files to the depot versions
	    of their missing counterparts.

	#605110 (Job #63955,#66716) **
	    'p4 revert' now accepts a '-w' flag to indicate that files which
	    are open for add should be deleted (wiped) from the workspace.

	#604353 (Job #60118,#62068) **
	    The server spec for a replica server now contains a new optional
	    field, named ArchiveDataFilter. This field can be used to specify
	    the files which are to be immediately scheduled for transfer to
	    the replica upon submit. Other files in the repository are still
	    available to the replica users, but since they were not fetched
	    immediately by the pull -u threads, there will be a delay when they
	    are first referenced while they are transferred from the master.

	#603759 (Job #64097, #64098) **
	    'p4 -ztag info' now reports on the status of the client workspace
	    lock, if called with a valid client. Also, administrators may set
	    server.locks.sync=0 to specify that the sync command should not
	    take the client workspace lock at all; at the default setting of 1,
	    the client workspace lock is taken in shared mode as before.

	#602564 (Job #56252) **
	    'p4 verify' now accepts the '-s' flag to indicate that, in addition
	    to verifying the file's digest, the file's size should also be
	    verified. 'p4 verify -t' no longer implies the '-s' flag; specify
	    '-s' explicitly to cause 'verify -t' to verify the size.

	#601710 (Job #59275) **
	    Files that have been moved and are open for edit at an older
	    revision may now be scheduled for a filename resolve by syncing
	    to the move/delete revision.  Accepting the new filename will
	    move the open file, similar to 'p4 move -f', allowing the edit
	    to be submitted under the new filename.

	#599833 (Job #59476) **
	    The 'p4 clients' and 'p4 labels' commands now take the -a and -s
	    flags, which are useful when running in replicated configurations.

	#597710 (Job #21852) **
	    The configurable server.commandlimits can be set to a non-zero
	    value to disable the use of command-line overrides for the
	    MaxResults, MaxScanRows, and MaxLockTime limits defined in the
	    group specs. Set server.commandlimits=1 to allow per-command flags
	    to specify lower, but not higher, resource limits, and set it to
	    the value 2 to quietly ignore command-line resource limits entirely.

	#591780 (Job #61585) **
	    Various improvements have been made to the 'p4 journaldbchecksums'
	    command and to related tools for monitoring the integrity of
	    replica servers in a multi-server installation. Administrators
	    who have one or more replica servers deployed should:
	    a) ensure they have an 'integrity.csv' log defined for all servers
	    b) configure the new rpl.checksum.* configurables for the
	       appropriate level of integrity checking
	    c) routinely monitor the integrity.csv file for issues
	    d) use the new features of the 'journaldbchecksums' command to
	       investigate and resolve server integrity problems that arise.

	#589668 (Job #41143) * **
	    When connecting to unicode-enabled servers, a default value for
	    the client's P4CHARSET will now be chosen based on the platform
	    and code page if P4CHARSET is not set explicitly.

	#588464 **
	    A server which has a non-empty serverid, but does not have a
	    P4NAME specified, will now use the serverid as the P4NAME. We
	    recommend that all servers should be configured with a serverid,
	    and you should use the serverid in your 'p4 configure' commands
	    to specify the configuration for that server. Specifying the
	    P4NAME or -In value when starting the server is then no longer
	    necessary.

	#586875,#677508 (Job #67550) **
	    Trigger definitions can now request the expansion of three new
	    trigger variables: %servername% is set to the value of the
	    server's P4NAME; %serverid% is set to the value of the
	    server's server.id. In a distributed installation, %submitserverid%
	    is set to the server.id of the Commit Server or Edge Server where
	    the submit command was run.

	#569772 (Job #62259) *
	    On Windows, 'p4 set -S <service>' will now issue an error message
	    if there is no corresponding sub-key in the Windows registry.

Bugs fixed in 2013.2

	#1239015 (Job #80722) **
	    A file which was integrated from a streams depot to a local
	    depot, or vice versa, would be placed into the wrong location in
	    the proxy cache if it was accessed via the proxy by a command
	    such as 'p4 sync' or 'p4 print'. Note that the symptom of this
	    bug is in the proxy cache, but the fix is in the server.

	#1213529 (Job #79647) **
	    p4d -jr would mis-handle the revStatus field if replaying db.rev
	    journal records written by a 2005.2 or older server.

	#1061247 (Job #78830,#78915) **
	    A replica with rpl.checksum.change set to 2 or higher might
	    incorrectly write its own journal file under conditions of high
	    concurrency on the master, resulting in incorrect behavior and
	    problems with replicas of this replica.

	#1058411 (Job #78785) **
	    If a replica with rpl.checksum.change set to 2 or higher
	    encountered an internal error processing a changelist checksum
	    note, it would halt replication. Now, it logs the error but
	    resumes replication.

	#1047418 (Job #78444) **
	    The replica-specific table db.user.rp is now journaled. This means
	    that the table data will appear in checkpoints, journals and
	    dumps. The replica pull thread automatically filters out all
	    db.user.rp records from its P4TARGET server, which is normally the
	    desired behavior, since records in this table are unique to each
	    replica's activity. However, for maintaining warm standby replicas
	    of other replicas, you can set rpl.replay.userrp=1 for the standby
	    replica to disable the filtering and replicate db.user.rp data.

	#1039831 (Job #73075, #74961) **
	    The revision specifier @client was not working properly for
	    clients bound to a build-server.

	#1036596 (Job #77433) **
	    In a distributed configuration, 'p4 unshelve' no longer takes
	    the global exclusive file lock for a file of type +l which is
	    unshelved for add.

	#1035769 (Job #78256) **
	    A replica running 2014.2 or later which is connected to a 2013.2
	    master server no longer displays 'Unknown command' when the
	    'p4 pull -lj' command is run.

	#1031176 (Job #76013) **
	    'p4d -xx db.working db.have' could create spurious delete records
	    for db.working if a file opened for move or delete is subsequently
	    moved and submitted by another client and the opened file is
	    then synced to the head revision.

	#1030313 (Job #77559) **
	    A build-server replica would incorrectly process the View: field
	    for labels, causing the wrong set of revisions to be specified
	    by the label.

	#1028751 (Job #56707) **
	    The presence of a client spec with the same name as the TCP/IP
	    address of a replica machine no longer causes that replica to
	    issue the error: "Don't know how to translate paths for OS ''".

	#1028372,#1028461 (Job #77558) **
	    A replica with lbr.replication=cache was not able to access
	    labels using the autoreload option.

	#1027668 (Job #77595) **
	    'p4 export -f' now formats the domain type column correctly for
	    unloaded clients, unloaded labels, and unloaded task streams.

	#1010386 (Job #77471) **
	    The 'reload -p' command, used to migrate a workspace from one
	    Edge Server to another, or between an Edge Server and the Commit
	    Server, failed in certain specialized licensing scenarios.

	#960002 (Job #73909) **
	    When a workspace on an Edge Server was used to merge new files into
	    a task stream, the workspace's have records were not properly
	    updated at the completion of the submit.

	#870882 (Job #72411) **
	    'p4 admin journal' and 'p4d -jj' could incorrectly rotate the
	    server's journal on a heavily loaded Linux server, resulting in
	    some journal records which were generated after the journal
	    rotation being written to the end of the already-rotated journal.

	#777730 (Job #70950) **
	    A 'p4 revert' command which ran concurrently while a 'p4 shelve'
	    command was underway using the same workspace and changelist
	    could cause that shelve command to crash, if the shelve command
	    included certain undocumented arguments.

	#753181 (Job #70144) **
	    A case involving integration of files with a tricky combination
	    of prior ignore and copy records is now handled better.

	#748166 (Job #70041) **
	    Resolve will no longer give a false "already opened" error when
	    resolving an edited depot file against a moved depot file.

	#744138 (Job #69946) **
	    Integrate will now consider all reverse integration records
	    between the source and target when trying to determine whether
	    the files share a close enough connection that scanning for
	    renamed variants is not necessary.

	#739254 (Job #69832) **
	    Integrate will no longer attempt to remap the source to earlier
	    (later readded) variants of the target file that have more
	    direct connections with it than the current head revision.

	#736559 (Job #69654) **
	    Resolving an open file that has been moved at the head depot
	    rev will no longer produce a false "not in client view" error
	    when a filename argument is given to the resolve command.

	#735760 (Job #69656) **
	    When integrating moved files, the search for earlier filename
	    variants will stop if the earlier variant is not mapped in the
	    current branch/stream view provided that a target file matching
	    a later filename has already been found.

	#735695 (Job #69698) **
	    Files that have been re-added in the source branch will no longer
	    be remapped into moved counterparts in the target branch when
	    there is no connecting history with the re-added variant.

	#732377 (Job #45535) **
	    Certain 'p4 integrate', 'p4 interchanges', and 'p4 copy' commands
	    would incorrectly display the message "Database scan error on
	    db.integed!" if the command was terminated due to MaxResults,
	    MaxScanRows, or MaxLockTime.

Bugs fixed in 2013.2 PATCH1

	#723755 (Job #69429) **
	    Journal replay into the new server type 'edge-server' was
	    acquiring unnecessary locks when propagating a submit from a
	    commit server.

	#723545 (Job #69286, #69288) **
	    An update command submitted via a forwarding replica which is
	    interrupted while it is waiting for replication processing to
	    complete will no longer cause unnecessary system resource usage
	    in the forwarding replica.

	#721940 (Job #69315) **
	    A failure from a change-commit trigger during a submit
	    from an edge server could cause the edge server submit to
	    leave the submitted change status as pending on the edge server.
	    This has been fixed.

	#721669 (Job #65583) **
	    Change #589668 (charset detection) introduced a regression by
	    setting a charset before acknowledging whether the server was
	    unicode or not.  This problem could happen against a unicode
	    enabled server and if P4CHARSET was not set.  The following is
	    an example of the kind of error observed:

	    p4 add <filepath in local charset>
	    //depot/path/????txt#1 - opened for add
	    No Translation for parameter 'path' value...

	    The (charset detection) feature has been disabled until this
	    problem can be resolved.

Bugs fixed in 2013.2

	#708462 (Job #68808) **
	    Changing the spec.hashbuckets configurable no longer causes all
	    existing autoreload labels to be empty.

	#705600 (Job #66770) **
	    A replica which used the ClientDataFilter or RevisionDataFilter
	    options would stop replicating after the completion of a large
	    'p4 sync' command on the master server.

	#700621 (Job #68446) **
	    'p4 unshelve -b' could previously carry resolve records from older
	    revisions on the originating branch over to the destination branch,
	    which in turn would create permanent integration history on submit.
	    These records are now discarded during the unshelve.

	#700115 (Job #68342) **
	    'p4 unshelve' was not permitting an ignored branch to be unshelved
	    on top of a previously deleted depot file.  This has been fixed.

	#698342 (Job #66972) **
	    'p4 interchanges' on a virtual stream no longer requires the
	     force (-F) flag to ignore the stream's expected flow.

	#696998 (Job #67954) **
	    'p4 archive' will now refuse to archive a revision which is used
	    as the source of a pending or shelved integration.

	#694657 (Job #68200) **
	    A rare case where 'p4 merge' could loop indefinitely when trying
	    to track a renamed target file has been fixed.

	#693514 (Job #67698) **
	    Integrating and resolving a moved file would sometimes suggest
	    ignoring the move when it had been copied over by another file.
	    This has been corrected.

	#693503 (Job #67951) **
	    A rare case where ignore credit could be lost in the process of
	    overwriting a change via copy has been corrected.

	#693346 (Job #68018) **
	    Change numbers recorded in the db.template index are based on
	    the previous change committed +1.  To reduce the chance of
	    missing pending changes at time a stream spec is modified, the
	    template index will now reflect the greater value between
	    'commmitted change +1' and 'change counter'.

	#691799 (Job #67611) * **
	    Reconcile mangled paths when called from a root directory (ie.
	    '/' or 'C:\') This has been fixed.

	#869231 (Job #66849) **
	    Police maximum date range for SSL Certificate creation so that
	    the date does not exceed the precision of the underlying int.
	    Issue error indicating maximum number of days that can be specified.

	#688624, 690969 (Job #67981, 68100) **
	    A file that was overwritten by a copy and then moved was previously
	    not joined with its parent/child file when merged back.  This has
	    been fixed.

	#688064 (Job #67680) **
	    'p4 user' will not fail when noautocreate is set to 1 and the
	    security level of the server is > 0 due to the password not
	    being set.

	#686560 (Job #66854) **
	    The server consistency checker 'p4d -xx' would report depot
	    inconsistencies during the 'db.integed vs db.rev' check should a
	    file within a task stream be integrated to a target within the
	    same task stream.  This has been fixed.

	#682378 (Job #66785) **
	    The error message raised when a server connects to a remote
	    depot server via an SSL connection and the trust check fails
	    has changed to ServiceNoTrust which requires an administrator
	    to correct the trust problem.  The previous error messages
	    wrongly implied that the end client user could correct the
	    problem.

	#680865 (Job #67203) **
	    P4TRUST value was not honored for Windows Service settings
	    ie. p4 set -S <service>  Fixed.  Also can be set via p4 configure.

	#671142 (Job #53464) **
	    The network-related performance of a 'p4 sync -f', 'p4 sync -p',
	    or 'p4 print' command issued via a proxy over a long-haul network
	    is improved by performing fewer network duplex flush operations.
	    The new behavior, if problematic, may be disabled using the
	    undocumented tunable 'rpc.deliver.duplex=1'.

	#670223 (Job #52464,#54911,#66981) **
	    The server no longer allows a Build Farm workspace to be edited
	    on the master server. Build Farm workspace definitions should be
	    created and edited by issuing the 'p4 client' command directly
	    to the Build Farm replica, not to the master server. It is still
	    possible to delete a Build Farm workspace directly from the master
	    server, but this requires the -f flag to be passed on the
	    'p4 client -d' command by an administrator; it is preferable to
	    delete Build Farm workspaces by issuing the 'p4 client -d' command
	    directly to the Build Farm replica.

	#668938 (Job #34426,#65796) **
	    Accessing a file of type +X could cause the server to crash.

	#668764 (Job #67156) **
	    A Build Farm replica now refuses the 'client -d' command if it
	    specifies a workspace not bound to that Build Farm replica.

	#666659 (Job #67081,#67375) **
	    A 'p4 sync' command issued via a forwarding replica which accesses
	    a file that is not in the replica's cache and for which the replica
	    fails to retrieve the file from the master server would incorrectly
	    be recorded as sync'd in the client's have list. This also caused
	    incorrect file delivery when the forwarding replica was accessed
	    via a proxy.

	#661948 (Job #66666) **
	    On Windows if the Server log file is made busy by another
	    application, an error is placed in the Windows Application
	    Event log.

	#658282 (Job #66768) **
	    'p4 annotate -i' will no longer attempt to follow history from
	    remote depots.

	#656862 **
	    'p4 copy' could fail to propagate a change in filetype or
	    attribute when the target revision was already recorded as
	    a direct copy of the source.  This has been fixed.

	#652978 (Job #66630) **
	    It is no longer necessary to restart a Unix server following a
	    'p4 configure unset' of a configurable value.

	#652052 (Job #66384) **
	    A Windows replica server will now dynamically recognize when a
	    'p4 configure unset' command is replicated.

	#651403 (Job #66597) **
	    'p4 interchanges' with a revision range could produce different
	    results from the equivalent 'p4 integrate' command in some cases.
	    This has been fixed.

	#651019 (Job #65773) **
	    If the client is terminated or the network is disrupted during
	    the execution of a 'p4 sync' command, the server now notices the
	    disruption more quickly and cleans up its own state (including
	    the client workspace lock) more rapidly, thus avoiding situations
	    in which the client workspace lock remained held by a 'p4 sync'
	    that was no longer actively connected to its client.

	#649135 (Job #66256) **
	    Labels using the 'autoreload' option were being incorrectly updated
	    by a 'labelsync' command which specified filespec argument(s) but
	    did not specify the -a or -d flags. Files present in the label
	    which did not match the filespec argument were lost from the label.

	#648350 (Job #66349) **
	    Certain server-to-server network messages (e.g., 'rmt-Journal')
	    specify the workspace name as a string of length zero. The server
	    log, monitor table, audit log, and structured server logs will now
	    log these network messages with a workspace name of: "unknown".

	#648013 (Job #66251) **
	    'p4 diff #head' will now correctly pair up files that are open
	    for move.

	#644053 (Job #66309) **
	    'p4 unload' will now refuse to unload a client which has one or
	    more files of type +l opened. Such files must be explicitly
	    reverted prior to unloading the client.

	#643157 (Job #63668) **
	    'p4 integrate' now has more sophisticated logic in place to select
	    a target from among multiple renamed variants of a file that all
	    share common history with the source.

	#641784 (Job #66176) **
	    When 'p4 verify -t' on a replica server reported a BAD! file and
	    scheduled the file to be re-transferred from the master server,
	    the re-transfer request was quietly ignored by the 'pull -u' thread.

	#638593 (Job #66011) **
	    'p4 shelve' will no longer fail with a 'missing from rev table'
	    error when shelving a file that is open for branch and has a
	    scheduled resolve from a remote depot.

	#638364 (Job #66081) **
	    Replica servers now treat 'logger -c N -t X' as an update command,
	    instead of executing it locally on the replica server.

	#635226 (Job #65955) **
	    Replica servers now treat 'obliterate' as a read-only command if
	    it does not specify the '-y' flag, thus executing the read-only
	    obliterate command on the replica.

	#634123 (Job #65912) **
	    'p4 integrate' will now recognize when a previously deleted change
	    has been explicitly reinstated in the source, and permit it to
	    override a deletion in the target when that is the case.

	#630677 (Job #65579) **
	    'p4 submit -e' is now supported for use with task streams.

	#621164 (Job #65121, #65124) **
	    Fixed a memory leak in 'p4 attribute' in replica servers.

	#619878 (Job #64650) **
	    The server no longer maintains the 'last access time' for
	    service users.

	#617921 (Job #64944) **
	    Trying to connect a replica to a server which has journaling
	    disabled now results in an error message, not a server crash.

	#616323 (Job #61797) **
	    'p4 diff2 -q' would sometimes not give the "no differing files"
	    message when all files were identical.  Fixed.

	#614102 (Job #64703) **
	    Partial information about an unloaded task stream can now be
	    displayed using the command 'p4 -ztag stream -o <task-stream>'.

	#614086 (Job #64744) **
	    On a replica server, 'p4 verify -t' now allows the '-z' option.

	#613774 (Job #64781) **
	    The server now refuses to allow a client's ServerID field to be
	    set to a non-existent server identifier.

	#608529 (Job #60612) **
	    'p4 fstat -mN -Ru' now correctly limits the results based on
	    the number of unresolved files, not the number of open files.

	#607046 (Job #64413) **
	    'p4 property' now detects out-of-range values for the -s flag.

	#605852 (Job #64354) **
	    The replica server's journal pull thread was keeping the rdb.lbr
	    file open even when it wasn't actively using it.

	#603339 (Job #64177) **
	    'p4 fstat' was omitting the otherOpen tags for a deleted revision.

	#598622 (Job #63963) **
	    'p4 resolve -at' of a file opened for edit will no longer produce
	    'corrupted during transfer' errors when keyword expansion differs
	    between the depot and client files.

	#598401 (Job #63986) **
	    When an autoreload label is deleted, its server.locks lock file
	    is now deleted as well.

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

	#596612 (Job #63873) **
	    'p4d -jd /dev/null' was issuing a confusing message about being
	    unable to write to /dev/null.md5.

	#591150 (Job #63488) **
	    It is no longer possible to submit a move/add revision without
	    a corresponding 'moved from' integration record.

	#587922 (Job #52464, #56428) **
	    When a client workspace is created on a Build Farm replica, the
	    client name is also now created on the central server, resolving a
	    race condition in which a client by that same name might be
	    simultaneously created on another Build Farm server, or on the
	    central server itself.

	#587664 (Job #60715) **
	    A replica configuration which accidentally specifies multiple
	    metadata pull threads no longer causes multiple threads to run.
	    The extra metadata pull threads now block on a lock and are idle.

	#585006 (Job #62994) **
	    The 'submit -e' command now deletes the shelf database records
	    using a single database transaction.

	#577771 (Job #62637) **
	    The 'p4 merge' command was not correctly checking that move
	    operations were propagated atomically (per change 465399). This
	    has been fixed.

--------------------------------------------------------------------------
Important note:

	Please refer to:
	http://www.perforce.com/perforce/r13.1/user/relnotes.txt
	to get up to date GA and post-GA information about this release.
--------------------------------------------------------------------------

Major new functionality in 2013.1

	#555450 (Job #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 (Job #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 (Job #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 (Job #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 new functionality in 2013.1

	#573464 (Job #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 (Job #62343) **
	    'p4 unlock -s <shelvedChange>' will unlock files left locked
	    by an aborted 'p4 submit -e' command.

	#557509 (Job #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 (Job #61641) **
	    'p4 counters' and 'p4 keys' now support the '-m max' option
	    to limit the output to the first 'max' counters/keys.

	#549890 (Job #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 (Job #51831) **
	    'p4 pull -l -j' now includes information about the replica's
	    current time and time zone.

	#549223 (Job #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 (Job #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 (Job #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 (Job #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 (Job #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 (Job #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 (Job #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 (Job #55700) **
	    A replica server may specify 'lbr.replication=ondemand' to
	    indicate that file content transfers should not be scheduled.

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

	#530488 (Job #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 (Job #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 (Job #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 (Job #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 (Job #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 (Job #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 (Job #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 (Job #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.

Bugs fixed in 2013.1

	#1213529 (Job #79647) **
	    p4d -jr would mis-handle the revStatus field if replaying db.rev
	    journal records written by a 2005.2 or older server.

	#749425 (Job #69604) **
	    'p4 istat' in a merge direction did not indicate all outstanding
	    changes reported by 'p4 merge'.  Regardless if the the content in
	    the target stream was correct, 'p4 istat' did not report identical
	    change information reported by 'p4 merge'.

	#723545 (Job #69286, #69288) **
	    An update command submitted via a forwarding replica which is
	    interrupted while it is waiting for replication processing to
	    complete will no longer cause unnecessary system resource usage
	    in the forwarding replica.

	#708462 (Job #68808) **
	    Changing the spec.hashbuckets configurable no longer causes all
	    existing autoreload labels to be empty.

	#705600 (Job #66770) **
	    A replica which used the ClientDataFilter or RevisionDataFilter
	    options would stop replicating after the completion of a large
	    'p4 sync' command on the master server.

	#696998 (Job #67954) **
	    'p4 archive' will now refuse to archive a revision which is used
	    as the source of a pending or shelved integration.

Bugs fixed in 2013.1 PATCH3

	#677117 (Job #67554) **
	    After upgrading a user could experience a 10 second delay logging
	    in for the first time.

	#675716 (Job #66603) **
	    On Server shutdown, client commands which do not terminate
	    in time will no longer cause a Windows Service stop error.

	#673894 (Job #67259, #67285) **
	    Old stream path entries recorded in db.template are not always
	    deleted from the stream when the stream is saved.  This regression
	    was caused by change #655696 and has been fixed.  This change
	    also uses the last committed change number, rather than the
	    current change number for template indexing.

	#672185 (Job #67318) **
	    Using 'p4 reviews' with many file arguments (>1000) can lock
	    out the db.user and db.review tables for long periods.

	#664350 (Job #66853) **
	    The server consistency checker 'p4d -xx' would report missing
	    depot entries during the 'db.rev vs db.have' check should an
	    unpromoted task stream be populated and sync'd to a client.  If
	    one or more of the files in that sync'd client also be open for
	    edit, there would be errors reported during the check of tables
	    'db.working vs db.rev'.  This has been fixed.

	#659745 (Job #66721) **
	    'p4 copy' could fail to propagate a change in filetype or
	    attribute when the target revision was already recorded as
	    a direct copy of the source.  This has been fixed.

Bugs fixed in 2013.1 PATCH2

	#655696 (Job #66132) **
	    When switching a stream-client between versioned (ie.
	    StreamAtChange) and default, the new client was not always
	    referencing the whole map.  This was cause of 'sync' and
	    'have' commands with no parameters to not always reflect the
	    correct haveMap entries.  This has been fixed.

	#655694 (Job #66266) **
	    Change numbers recorded in the db.template stream table
	    reflect the previous change submitted, rather than the next
	    change to be submitted.  This has been deemed to reflect
	    incorrect results when using the StreamAtChange field of a
	    stream client.  This fix requires an additional administrative
	    run of a bugfix to correct existing rows.

	    With the system quiet, and this new P4D in place, run the
	    command 'p4d -xf 66266', which will update all previously
	    existing records in the db.template with change-counter + 1.
	    This bugfix should be run only one time.

	    When the installation is brought back up, subsequent stream
	    specification modifications will correctly store the new
	    change-counter + 1 to the db.template.

	#653833 (Job #66666) **
	    On Windows if the Server log file is made busy by another
	    application, an error is placed in the Windows Application
	    Event log.

	#651019 (Job #65773) **
	    If the client is terminated or the network is disrupted during
	    the execution of a 'p4 sync' command, the server now notices the
	    disruption more quickly and cleans up its own state (including
	    the client workspace lock) more rapidly, thus avoiding situations
	    in which the client workspace lock remained held by a 'p4 sync'
	    that was no longer actively connected to its client.

	#647594 (Job #65830) **
	    Its possible under certain race conditions or sequence of
	    commands to circumvent the (+l) exclusive locked file type.

	#630820 (Job #65680) **
	    Integrations into task streams will now correctly handle files
	    that have been moved in the parent stream.

	#630442 (Job #65539) * **
	    The diff option '-dl' (ignore line endings) will correctly
	    match the last line of a file with no line ending.

Bugs fixed in 2013.1 PATCH1

	#628176 (Job #65599, #65611, #65612) **
	    Using the 'revertunchanged' flag when submitting to a task
	    stream could result in the error:

	    Operation 'user-submit' failed.
	    //filepath/file is missing from the rev table!

	    Further problems may also happen to files that were partially
	    submitted when this error occurs.  To clear the error this
	    task stream should be deleted.

	#625965 (Job #60612) **
	    'p4 fstat -mN -Ru' now correctly limits the results based on
	    the number of unresolved files, not the number of open files.

	#625432 (Job #65155) **
	    In some cases unpromoted task stream files were not being seen
	    by certain commands.  This problem could also manifest itself
	    by causing an unnecessary sync replace operation when switching
	    between stream clients.  The commands affected are sync, diff,
	    edit, reconcile, fstat, files, filelog, annotate and delete.

	#624649 (Job #65272) **
	    'p4 copy -b branch @label' did not work correctly if the label did
	    not include the target files.  This has been fixed.

Bugs fixed in 2013.1 (GA)

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

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

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

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

	#597848 (Job #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 (Job #63713) ** ***
	    Broker and proxy fail client authentication when net.mimcheck=5
	    and IPv6 literal addresses are used.

	#596288 (Job #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 (Job #63812) **
	    On a unicode-enabled server configured to use another unicode
	    server as its P4AUTH server, 'p4 review' was failing.

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

	#589943 (Job #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 (Job #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 (Job #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 (Job #62823) **
	    Using a client or label as a template now updates its access time.

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

	#582893 (Job #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 (Job #62819) **
	    Previous edits made to deleted files that have been ignored are now
	    considered ignored by future integrations.

	#581888 (Job #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 (Job #62787) **
	    'p4 integrate' will now schedule move resolves correctly for files
	    that were previously opened for integrate.

	#581376 (Job #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 (Job #62734) **
	    A corrupted RCS archive which was missing the deltatext for the
	    head revision could cause the server to crash.

	#580188 (Job #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 (Job #62686,#62922) *
	    Fixed 'p4 delete symbolic-link-to-directory', which was broken
	    by change 492002.

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

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

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

	#569569 (Job #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 (Job #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 (Job #57370) **
	    Leading wild-cards of Stream path definitions are not always
	    flagged as errors when the stream is saved.  Job fix #484326
	    was not stringent enough for certain surreptitious mappings,
	    which this change corrects.

	#568019 (Job #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 (Job #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 (Job #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 (Job #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 (Job #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 (Job #61646) **
	    'p4 verify -q //pattern...' now prints an appropriate message if
	    there are no such files matching the pattern.

	#554167 (Job #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 (Job #51589) **
	    shelve-delete triggers would not fire unless there were files
	    opened at that change in a workspace. This has been fixed.

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

	#549497 (Job #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 (Job #57794,#41323,#42956) **
	    A workspace with a name which contains a backslash (\) character
	    no longer creates an invalid spec depot entry on a Windows server.

	#548246 (Job #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 (Job #61235) *
	    'p4 reconcile' no longer crashes on Windows8 X64.

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

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

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

	#542396 (Job #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 (Job #53165,#60056) ** ***
	    A Windows virus scanner will no longer block access to the
	    logfile and cause multiple concurrent threads to hang.

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

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

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

	#532397 (Job #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 (Job #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 (Job #58857) **
	    Interrupting a checkpoint 'p4d -jc' or journal rotation 'p4d -jr'
	    could leave the counters table in a corrupt state.  Fixed.

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

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

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

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

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

	#503100,526227 (Job #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 (Job #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 (Job #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 (Job #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 (Job #59192,#51548) **
	    A memory leak in the client workspace lock feature is fixed.

	#514839 (Job #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 (Job #59197) **
	    A 'p4 diff2' command issued against a replica server might have
	    reported librarian errors if the files were of type ktext.

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

	#513549 (Job #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 (Job #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 (Job #59085) **
	    'p4 protects //pattern/...' will no longer crash if the protections
	    table contains a single line with hundreds of wildcards.

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

	#504133 (Job #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 (Job #58257) *
	    A user whose name contained a colon was unable to login.

	#491284 (Job #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.

--------------------------------------------------------------------------
Important note:

	Please refer to:
	http://www.perforce.com/perforce/r12.2/user/relnotes.txt
	to get up to date GA and post-GA information about this release.
--------------------------------------------------------------------------

Important update for integration engines 2012.2 **

	    Two integration engines are supported in the 2012.2 release.

	    The new integration engine (v3) was introduced in the 2011.1
	    release and provides improved base selection semantics and
	    expanded resolve capability.  The default integration engine
	    is still the (v2) engine which has been around since its first
	    release in 2006.

	    For new installations of Perforce, it is advisable to select
	    the new integration engine as the default.  Admins can set the
	    global configuration parameter like so:

	    'p4 configure set dm.integ.engine=3'

	    The simplified integrate command 'merge' always uses the new (v3)
	    engine.  By using streams for your branching strategy, you will
	    automatically be using the new engine.

	    We recommend that customers who upgrade should try this new engine
	    by using the 'merge' command instead of 'integrate'.  You can also
	    use 'p4 integrate -3' flag to specify the new engine.  After you
	    have tested the new engine's behavior as it relates to your branch
	    history, you can set the dm.integ.engine configurable to '3' to
	    make the change apply to all users at your site.

	    We anticipate that the (v3) engine will likely become the default
	    in a 2013 release.

	    For more details on enabling the new engine, and further information
	    see the following link:

	    http://kb.perforce.com/article/1631/generation-3-integration-engine

Major new functionality in 2012.2

	#408756 **
	    A new depot of type 'unload' can be configured so that old or
	    infrequently used clients and labels can now be unloaded.
	    Unloading removes database records from the live database tables
	    and writes them to files in the unload depot. Routine use of the
	    new 'p4 unload' and 'p4 reload' commands frees up space in the
	    db.have and db.label tables for active clients and labels.
	    Clients and labels can be reloaded as necessary.  A label with
	    the autoreload option set in its spec is always unloaded, and
	    does not need to be explicitly reloaded prior to use. Note that
	    unloaded labels and autoreload labels, like automatic labels, are
	    always omitted from the results of 'p4 labels <filespec>'.

Minor new functionality in 2012.2

	#485057 (Job #43361) **
	    'p4d -xf 43361' can be used to create new db.have records from
	    existing db.working records.

	#483800 (Job #57375, #53798) **
	    A new command 'p4 key' allows users with review permission to set,
	    delete, and access key value pairs.  These values can be viewed
	    and searched with a complementary command 'p4 keys'. For more
	    information see 'p4 help key/keys'.

	#479199 (Job #56618) **
	    On Windows, 'p4s -V' can be issued at the command line to view
	    the version information of the p4s executable.

	#471920 (Job #16588, #15260) **
	    A new configurable, 'submit.unlocklocked', causes 'p4 submit'
	    to unlock files from a failed submit.

	#469562 (Job #56270) **
	    'p4 print' now accepts a '-k' flag to suppress keyword expansion.

	#462379 (Job #39317) **
	    New command 'p4 admin resetpassword' allows a super user to
	    force user(s) with passwords to reset their passwords
	    before issuing another command. In addition, a new configurable
	    'dm.user.resetpassword' allows forcing password resets for all
	    newly created users with passwords. See 'p4 help admin' for
	    more information.

	#460143 *
	    'p4 -I submit' displays a progress indicator as files are being
	    sent to the server during a change submit.

	#452158 **
	    'p4 fstat -Or' now displays all resolves associated with each open
	    file, along with the type of resolve (content/branch/delete/etc),
	    similar to "p4 resolved" and "p4 resolve -n".

	#451955 **
	    'p4 integrate' and 'p4 merge' now accept a -O flag that enables
	    more verbose output.  '-Ob' causes the base to be displayed, and
	    '-Or' causes each scheduled resolve to be displayed.  The old '-o'
	    flag on 'p4 integrate' continues to function as a synonym for '-Ob',
	    but is considered deprecated.

	#448526 (Job #25974) **
	    Automatic labels can now be used as 'pure' aliases for a single
	    revision specifier (e.g. @change) by clearing (leaving blank) the
	    view specification.  When used in this way labels will perform
	    better and behave exactly as the revision specifier rather than
	    computing a label on-the-fly.  See 'p4 help label' for more
	    information.

	#443861 (Job #14936) **
	    'p4d -jj' and 'p4d -jc' can now run a user supplied command
	    as part of their operation while the locks are held on the
	    database.  Example usage: 'p4d -c "snapshot /depot" -jj
	    The command is run after the journal rotate and before locks
	    are released.

	#438803 (Job #44867, #45119, #47718, #54043) **
	    'p4 configure set defaultChangeType=restricted' can now be used to
	    specify that new changelists should default to Type: restricted.

	#436459 (Job #53622) **
	    'p4 list' now supports the '-M' flag, for use in forwarding replica
	    scenarios. 'p4 list' by default is executed on the replica; if the
	    '-M' flag is specified, 'p4 list' is forwarded to the master.

	#436300 (Job #53349) **
	    Audit logs on forwarding replicas now include user and client
	    information when a 'p4 sync' command issued via the forwarding
	    replica causes file content to be delivered by the replica.

	#389844 **
	    'p4 lockstat' now accepts the flags '-c client' and '-C' to
	    specify reporting on the client workspace locks added in 2011.1.

	#384638 *** ** *
	    The net.maxwait configurable can be used to specify a hard limit
	    (in seconds) on the maximum time that a connection will wait for
	    any single network send or receive to complete. The 'p4 sync'
	    command now supports a '-r' global flag to specify that the sync
	    command should be retried if a network error occurs.

Bugs fixed in 2012.2

	#752957 (Job #70168) **
	    A performance problem in 'p4 archive' introduced by change 696998
	    is addressed. The performance of 'p4 archive' now correctly depends
	    on the number of revisions being archived, not on the total number
	    of revisions examined by the 'p4 archive' command.

	#708462 (Job #68808) **
	    Changing the spec.hashbuckets configurable no longer causes all
	    existing autoreload labels to be empty.

	#696998 (Job #67954) **
	    'p4 archive' will now refuse to archive a revision which is used
	    as the source of a pending or shelved integration.

	#608133 (Job #64478) **
	    Replica servers failed in certain specialized licensing scenarios.

	#606617 (Job #64384) **
	    Customers with large domain tables (million+ records) can
	    experience performance problems if the data is continuously
	    scanned for domain information.  This change improves performance
	    when querying with the name filter '-e|-E' and has support for a
	    secondary index to allow fast access when using the '-u username'
	    option. The index is created by using 'p4d -xf index.domain.owner'.

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

	#603012 (Job #62738) **
	    Concurrent 'p4 shelve -d -c <filename' could cause a server
	    crash if the 'server.locks.dir' configuration setting had been
	    disabled.

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

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

	#592561 (Job #63437) **
	    Fixed license check failure on AIX 5.3, 6.1 on PPC; error was
	        Perforce server error:
	            Licensing error -- invalid server IP address.
	            socket: create: Protocol not supported

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

	#579523 (Job #62712) **
	    Fixed a problem introduced by change #571446 where 'integrate'
	    could return inconsistent results.

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

	#576317 (Job #62589) **
	    Fixed a server crash in 'p4 interchanges' and 'p4 merge'
	    when files had been added, ignored, and then re-added,
	    introduced by change #571446.

	#574827 (Job #62500) **
	    Corrected memory free pool management issue on Windows.

	#572555 (Job #62418) **
	    Fixed case where 'p4 copy' could report nothing to do if
	    the latest source rev was a copy of an older target rev.

	#571446 (Job #57211, 62338) **
	    'p4 merge' will now recognize when previously ignored changes
	    have been forcibly re-integrated, and propagate those changes
	    in future merges.

	#567824 (Job #62247) **
	    Fixed a server crash involving integrate of ignored changes
	    between independently added files.

	#565785 (Job #62127) **
	    Fixed a rare server crash involving complex combinations of
	    exclusions in protections, branch view, and client view in
	    integrate.

	#561051 (Job #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.

	#550724 (Job #61278) **
	    Fixed crash and "cyclic dependency" warning when integrating
	    into a file with a resolve scheduled from its own head revision.

	#547239 (Job #61205) **
	    Fixed a timing problem impacting forwarding replica reliability
	    on Windows servers.

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

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

	#542667 (Job #60854) **
	    'p4d -jr' and 'p4d -jc' were mistakenly printing error messages
	    to the log defined by P4LOG or by the -L flag, rather than to
	    stderr. That behavior is reverted, and these commands once again
	    print any error messages to stderr.

	#541593 (Job #59534) **
	    When an unloaded client or label was deleted from the master
	    server, the replica server would fail to delete the unload file
	    from the replica's unload depot filesystem.

	#541534 (Job #59746) **
	    A 'p4 obliterate' would be unnecessarily delayed by a 'p4 submit'
	    which was waiting for the client workspace lock held by a
	    long-running 'p4 sync' command on the same client workspace.
	    'p4 lockstat -c|-C' now also reports on the server 'meta' lock,
	    which is used to synchronize depot-wide commands such as
	    'p4 obliterate' and 'p4 retype -l'.

	#532763 (Job #60277) **
	    Server crash caused by malicious connection. Fixed.

	#531495 (Job #59407, #60228) **
	    'p4 resolve' should now run faster with very large numbers of
	    files.

	#530355 (Job #60086) **
	    Files of type '+S' that were both copied and moved in the same
	    changelist could have incorrect digests recorded at submit,
	    requiring 'verify -v' to correct.  This has been fixed.

	#519219 (Job #58589) **
	    Unshelved resolved ktext files that are re-shelved or
	    submitted with tamper-checking no longer report bogus
	    'tamper with after resolve' errors.

	#517852 (Job #59338) * ** ***
	    A memory leak of NetSslTransport if SSL Handshake fails.

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

	#511535 (Job #59042) **
	    'p4 unshelve' would fail for files that had been shelved via
	    'p4 merge' if the files had not been resolved prior to shelving.
	    This has been fixed.

	#510327 (Job #34560) **
	    'p4 move' will now correctly handle 'apple' type files on non-Mac
	    clients.

	#509653 (Job #58973) **
	    Files that do not have stored digests will no longer produce
	    spurious 'tampered' errors on resolve.

	#508345 (Job #58843) **
	    'p4d -m -jr' now processes @dl@ journal records.

	#507162 (Job #56087) **
	    'p4 interchanges' no longer takes a shared lock on the spec
	    database table 'db.revsx'.

	#506974 (Job #52926) **
	    'p4 login -h' now uses the correct host when the auth-check-sso
	    trigger is defined on the server.

	#506481 (Job #53506, #57610) **
	    Certain low-level fatal assertion-failed messages are now captured
	    in the highest-numbered structured server log file which records
	    event log records, if such a server log has been configured.

	#504683,#506265 (Job #51740,#55195) **
	    When an archive file is damaged or missing, the server error
	    message now includes an additional line providing the librarian
	    file name and revision string.

	#503491 (Job #58614,#57495) **
	    'p4 monitor show -s R' was including IDLE threads in its display.

	#502859 (Job #57725) **
	    A replica server might fail to transfer a file with the message:
	    "Wildcards (*, %%x, ...) not allowed in '//path/to/file', if the
	    file contained a certain pattern of embedded wildcards.

	#502560 (Job #58554) **
	    'p4 jobs -e DateField=YYYY/MM/DD' would return a job with a date
	    value of exactly midnight on the next day.

	#496643 (Job #58153) **
	    'p4 logschema' was missing the 'f_' prefix on log field names.

	#495402 (Job #57694) **
	    The command 'p4 jobs -e query' is now restricted by maxScanRows,
	    previously a malformed query could cause a scan of the db.ixtext
	    table.

	#493204 (Job #57484) **
	    When 'p4 populate' invokes a 'change-commit' trigger, it now
	    ensures that the %oldchangelist% and %changeroot% trigger
	    variables are set.

	#493031 (Job #57467) *
	    On Windows, 'p4 set' now issues a warning if asked to set an
	    unknown variable, even if the variable name is in lower case.

	#492542 (Job #52567) **
	    'p4 submit' with the 'revertunchanged' option will no longer
	    revert files that have been resolved.  This behavior now more
	    closely mirrors 'p4 revert -a' with respect to which files are
	    considered 'unchanged'.

	#492002 (Job #57360) *
	    'p4 sync' will no longer issue the confusing message:
	        unlink: //path/to/file: Is a directory
	    in the case where:
	    a) there exist both a (deleted) file and a directory which have
	       the same name,
	    b) the directory is currently sync'd on the client, and
	    c) the sync command was instructed to delete the file.

	#490279 (Job #57672) *
	    The presence of a P4CONFIG file would inadvertently turn off
	    buffered i/o for standard output.

	#483306 (Job #57202) **
	    A Windows server would produce a minidump if it encountered an
	    error opening the server.id file.

	#482308 (Job #58492) **
	    When using a Build Farm replica server, the preferred usage pattern
	    is to define bound clients solely on the replica. In such a case,
	    if a client, branch, depot, label, or stream is later defined to the
	    master server with the same name as the bound client on the Build
	    Farm server, the Build Farm replica server will no longer corrupt
	    the bound client definition during replication of the conflicting
	    change from the master. Instead, the replica will issue a message,
	    halt replication, and wait for the bound client to be explicitly
	    deleted before resuming replication.

	#481402 (Job #57038) **
	    'p4d -jd' now issues an error message if the dumpfile name is
	    a database table name, to avoid accidentally overwriting it.

	#476723 (Job #56552) **
	    'p4 reconcile' with no arguments would fail to find files to
	    add if the server was on windows and the client was not
	    a windows client. This has been fixed.

	#473903 **
	    A forwarding replica on a case-sensitive platform will now cache
	    files submitted via that replica using case sensitive file and
	    directory names in the replica depot directory.

	#469767 (Job #48489) **
	    'p4 print' will now display headers for deleted or otherwise
	    "empty" revisions that previously were omitted entirely.

	#467458 (Job #29995, #44294) **
	    Attempts to open one workspace file with multiple different
	    depot file mappings will now fail with the error message
	    "can't open FILE1 (already opened as FILE2)".

	#465399 (Job #46119, #46330, #46364, #47555, #52561, #53282, #53307,
		     #53810, #54143, #55603, #59884) **
	    A number of bugs have been fixed in the v3 base selection engine
	    that is used by the 'p4 merge' command.  Merge base selection
	    should now be optimal in more cases, and atomicity of move
	    operations is now enforced when opening files for integrate.

	#465201 (Job #59070) **
	    'p4 client -d' now removes the server.locks entry for the client.

	#464243 (Job #56085) **
	    A 'move' type resolve of a file open for 'branch' will now relocate
	    the file with the original action, rather than reopening it for
	    'move/add' (similar to the 'p4 move' command).

	#463703 (Job #56037) **
	    'p4d -s -jr' now respects a P4JOURNAL configuration set via the
	    'p4 configure' command.

	#461647 (Job #52265) **
	    On a replica server, 'p4 admin checkpoint [-z|-Z]' now validates
	    the option flags passed on the command.

	#460619 (Job #51837) **
	    'p4 configure show' now displays the serverid, if it has been set,
	    as well as the Name and Address from the server definition, if set.

	#459963 (Job #55879) **
	    'p4 admin updatespecdepot' would add an extra copy of the typemap
	    spec to the spec depot each time it was run.

	#454277 **
	    An improved message is now issued when a remote depot access fails
	    because the initiating server's service user is not currently
	    logged in to the remote server.

	#453368 (Job #55599) **
	    The 'p4 server' command now validates the 'Type' and 'Services'
	    fields more completely.

	#451742 (Job #55560) **
	    A file that receives a content merge and is moved in the same
	    changelist will now have an "edit into" reverse integration record.

	#449001 (Job #52481) **
	    Replica servers now reload their dynamic configuration only when
	    the persistent configuration is changed, rather than on every
	    configuration timer expiration.

	#448082 (Job #51880) **
	    'p4 protects' will bail with an error if a user issues mutually
	    exclusive -a/-g/-u flags together in the same command.

	#447109 (Job #38933) **
	    'p4 move -f' will no longer try to move a file open for add into
	    an existing file.

	#447020 (Job #42838) **
	    The error message generated when trying to delete a client with
	    shelved changes now includes the change numbers that need to be
	    deleted.

	#446212 (Job #47460) **
	    Group names longer than 128 characters no longer generate an error
	    message about "server.locks filename too long".

	#445617 (Job #54980, #55023) **
	    'p4 configure set' now checks server log file configuration
	    variables more thoroughly.

	#443291 (Job #54898) **
	    'p4 populate' with a local filespec and no provided change
	    description will no longer generate a description that references
	    a top level depot path.

	#442968 (Job #53427) **
	    Specifying an unknown logfile as the '-l' flag to 'p4 logrotate'
	    now produces a "no such logfile" message.

	#438461 (Job #53789) **
	    When integrate schedules a move resolve of a deleted source file
	    it will now also schedule a delete resolve.  If the delete is not
	    conflicting, the move resolve will be set up to ignore, and if
	    another (non-deleted) source file maps to the same target, the
	    delete will be set up to ignore.

	#436823 (Job #52944) **
	    The setting of the net.maxwait tunable now affects the SSL
	    handshake, so users of SSL connections should set net.maxwait to
	    a value which is large enough to accommodate the typical handshake
	    duration.

	#435664 (Job #53671) **
	    Commands issued on a long-lived connection to a forwarding replica
	    now recognize a new depot created earlier on that connection.

	#426299 (Job #47645, #53006) ***
	    Premature client disconnects, such as those caused by a
	    user interrupting a command, on connections that include a broker
	    or forwarding replica, are now detected more quickly by the server.

	#396573 (Job #50941, #50960, #50961) **
	    Client specifications with improperly escaped special characters
	    in the client Root: or AltRoot: fields are now rejected when the
	    client spec is submitted to the server.

--------------------------------------------------------------------------
Important note:

	Please refer to:
	http://www.perforce.com/perforce/r12.1/user/relnotes.txt
	to get up to date GA and post-GA information about this release.
--------------------------------------------------------------------------

Major new functionality in 2012.1

	#383535 **
	    The new 'p4 populate' command performs the initial population
	    of a stream with files as a single-step operation (no submit
	    or client workspace is required).  Note that populate will fire
	    change-content and change-commit triggers, but not change-submit
	    or any form triggers.

	#372184,#373711,#389650 #423427 (Job #2493, #9875) *** ** *
	    The Perforce client/server protocol now supports encrypted
	    communication.  SSL support has been added to perforce clients
	    and server as well as the Perforce proxy and broker. In addition
	    the downloadable client API can be compiled with OpenSSL if
	    encrypted connections are required.

	    A server, proxy or broker accepting SSL client connections
	    must define a P4SSLDIR variable.  This directory holds the
	    server's certificate and public key files.  The files and
	    directory must only be accessible by the effective UID
	    under which the server runs.

	    Two new stand-alone command options can be run on any
	    server, proxy or broker:
	    -Gc generates credentials files in the P4SSLDIR.  It will
	    not overwrite the current contents.
	    -Gf displays the fingerprint of the Public Key contained
	    in the $P4SSLDIR/certificate.txt file.

	    P4PORT settings may now include the 'ssl:' prefix. In addition,
	    the existing but undocumented 'tcp:' prefix is now fully documented
	    and supported; it can be useful for cases where you desire to
	    explicitly indicate that the connection is cleartext.
	    The 'ssl:' prefix may be specified in P4PORT values to cause
	    the client and server to use SSL encryption of network traffic.
	    If this prefix is used, it must be used in both server and
	    and client. An SSL-enabled server will only accept connections
	    from SSL-enabled clients, and a server which does not specify the
	    ssl: prefix will not accept connections from clients that
	    do.

	    Upon first connecting to a new server using ssl the p4 client will
	    fail if the fingerprint of the server's public key has not been
	    accepted before.  A new command "p4 trust" can be used to accept
	    a previously unaccepted fingerprint.

	    NOTE:  The server discovery feature 'zeroconf' which was added
	           in 2008.2 will not work with SSL.  Due to potential security
	           issues (spoofing) when configuring servers with zeroconf this
	           feature is being discontinued,  this is the last release that
	           it can be enabled.

	           The beta clients for the 2012.1 release did not have the
	           client trust check code.  Please make sure you update all
	           beta clients to ensure trust for SSL connections.

	#367753 (Job #68, #889, #989) ** *
	    A new command 'p4 reconcile' allows users to reconcile client
	    with offline work. The command either previews or opens files
	    in a pending changelist that will bring the client up to date
	    with changes made to the workspace outside of Perforce.
	    The new command 'p4 status' is a synonym for 'p4 reconcile -n'.
	    Also for convenience, 'p4 status -A' is a synonym for
	    'p4 reconcile -ade'.

	#331092 **
	    A client of a properly-configured replica server can be specified
	    to perform server-private storage of its db.have data. This
	    separation of db.have data provides improved scalability for
	    build-farm operations.  The new 'p4 server', 'p4 servers', and
	    'p4 serverid' commands are used to specify this configuration.
	    The new 'server.id' file in the server root directory should be
	    backed up as part of routine server backups.

	#325599 (Job #44042) **
	    A replica server which has been configured to forward commands
	    to its master server can be used in place of a traditional proxy
	    server.  This configuration will offload work from the master
	    server and in most cases perform better for its remote users. On
	    such a replica, the 'p4 login' and 'p4 logout' commands will
	    automatically log the user in/out of both servers (replica and
	    master).

	#325315 (Job #3711, #8629, #11502, #12007, #18622, #19696, #19824,
	         #23425, #24496, #29067, #29892, #29909, #33331, #33619, #37080,
	         #37588, #37654, #38189, #41702, #42863, #43704,
	         #45906, #45915) **
	    The server can now be configured to write log files in a structured
	    format which contain more detail and are also easier to parse.
	    The new log files are also easier to administer, with support for
	    log file rotation and retention behaviors. The new commands for
	    working with these logfiles are: logparse, logrotate, logschema,
	    and logappend; the existing logstat and logtail commands are also
	    enhanced.

Minor new functionality in 2012.1

	#454883 ** (Job #53797)
	    'p4 group' now has a new flag, '-A', that allows 'admin' level users
	    to create new groups.

	#423427 *
	    A new (client side only) command 'p4 trust' is required when
	    connecting to secure servers with the P4PORT prefix "ssl:".
	    See 'p4 trust -h' for more details.

	#410530 ** (Job #9028)
	    'p4 annotate' will now refuse to display diffs for binary files
	    unless the new '-t' flag is provided.

	#408858 ** (Job #49801)
	    A new optional field 'StreamAtChange' in the client spec allows
	    the user to create a back-in-time stream client.
	    See 'p4 help client' for more details.

	#397964 ** (Job #43676)
	    New stream type 'virtual' is a stream with no physical files
	    branched to the stream.  Files are pulled from, and submitted
	    to the first, non-virtual parent stream - based on the view of
	    the virtual stream.  This can greatly reduce the number of files
	    branched when working with streams.  See 'p4 help streamintro' and
	    'p4 help stream' for details on streams and the virtual stream type.

	#398705 **
	    'p4 pull -l -j' now includes the last-modified-time of the replica
	    statefile in its output.

	#393549 ** (Job #2165)
	    'p4 files' now supports a new flag '-e',  which limits output to
	    files that exist (i.e. have not been deleted, purged or archived).

	#391471 **
	    Obliterate has three new performance related flags '-abh'. These
	    flags have been present but undocumented since 2009.2.
	    See 'p4 help obliterate' for more information.

	#390676 **
	    'p4 dbverify -U' and 'p4d -xvU' perform a fast validation of
	    the database tables, checking only the table UnlockCount.

	#389341 ** (Job #29848)
	    Using per-revision attributes is now supported. The 'p4 attribute'
	    and various 'p4 fstat' options for setting and retrieving attributes
	    has been present but undocumented since 2004.2.

	#388781, #373493 * ** ***
	    The version information returned by "p4 -V" now includes
	    SSL license and version information if SSL is enabled:

	    Perforce - The Fast Software Configuration Management System.
	    Copyright 1995-2011 Perforce Software. All rights reserved.
	    This product includes software developed by the OpenSSL Project
	    for use in the OpenSSL Toolkit (http://www.openssl.org/)
	    Version of OpenSSL Libraries: OpenSSL 1.0.0e 6 Sep 2011
	    Rev. P4/DARWIN100X86_64/2012.1.main/318424 (2011/05/19)

	#385958 (Job #35709) * **
	    The new variable P4IGNORE names a file containing a list of
	    expressions which can be used to match certain file patterns
	    and exclude them from the repository.  This mechanism is used
	    by 'p4 add' and the new 'p4 reconcile' command.

	#385719 (Job #48795) **
	    'p4 merge' will now schedule resolves for all added and deleted
	    files, similar to 'p4 integrate -Rbd'.

	#385458 (Job #156, #14183, #17037) **
	    'p4 integrate' will now automatically schedule baseless merges
	    to be performed with an empty base file (forcing conflicts on
	    any differences).  The '-i' flag is still accepted but has been
	    deprecated.

	#385004 (Job #50613) *
	    'p4 add' will now choose 'text+Cx' rather than 'text+x' as the
	    default filetype for an executable text file larger than 10MB.
	    Also, 'unicode+C' will be chosen instead of 'unicode' for a
	    unicode file larger than 10MB, and 'utf16+C' rather than 'utf16'.

	#378661 **
	    'jnl.fix' files emitted by the server now include a @nx@ journal
	    header note at the start to identify the journal file.

	#374311 (Job #41326) **
	    A new command 'p4 list' allows the user to build up a list of
	    files in-memory that can be used in subsequent commands just
	    like a label.  The list is only available during the life of
	    the connected session and therefore cannot be used across
	    multiple calls to the perforce command line program 'p4'.

	#369970 (Job #29164) **
	    Form-in triggers can now be passed the %formname% variable.

	#369400 * **
	    File type detection was only looking at the first 8192 bytes
	    of a file which could be adjusted on the client with the
	    filesys.binaryscan tunable.  Now, this default value is
	    65536 bytes and if this value is changed on the server,
	    it will be sent to client to allow setting a central default.

	#368694 (Job #33723) **
	    'p4 verify' now accepts the '-X' flag to specify that files of
	    filetype +X should not be verified.

	#367359 (Job #3453, #31916) **
	    The 'p4 change' and 'p4 describe' commands now accept the '-O'
	    flag to specify that the changelist number argument is the original
	    number of a changelist that was renumbered on submit.

	#363423 (Job #32055, #41995) **
	    The '-g', '-u', and '-o' flags to 'p4 groups' are now supported.
	    The functionality has been present but undocumented since the
	    2009.2 release.

	#360990 (Job #33080, #25377) **
	    Providing a typemap entry that maps some or all of a spec depot's
	    revisions to filetypes 'text+CS<n>' or 'text+FS<n>' will now cause
	    the server to purge edit revisions of those spec depot files
	    appropriately.

	#359100 (Job #15959, #24457, #31911, #36804) **
	    If the optional SpecMap field of the depot spec for a spec depot
	    contains a mapping, only revisions that match that mapping will
	    be stored in the spec depot.

	#354289 **
	    On a replica server, 'p4 pull -l' will now include information
	    about each pending revision's change number, revision date, and
	    last-modified-time.

	#353194 (Job #3512, #29036) **
	    Server trigger invocation lines may now use the new variables
	    %clientprog% and %clientversion% to access the client's "prog"
	    and "version" information, respectively.

	#353068 (Job #48562) **
	    The 'p4 obliterate' command now ignores archived files by default;
	    to instruct the command to process archived files you must pass
	    the -A flag.

	#353068 (Job #48598) **
	    The 'p4 print' command now accepts the -A flag, to print a file
	    in an archive depot.

	#351058 **
	    The new table db.view.rp stores view mapping lines for clients
	    bound to a single server.

	#350377 (Job #44455) **
	    If the '-e' flag to 'p4 clients', 'p4 branches', or 'p4 labels'
	    specifies a literal string with no wildcards, the server will now
	    use the index in the search and avoid scanning db.domain.

	#345318 **
	    Running 'p4 sync' with no file pattern on a client with no opened
	    files will now automatically remove un-needed havemap entries
	    from the client's view.

	#340478 **
	    'p4 dbverify' and 'p4d -xv' will now specifically report
	    problems with overflow data items, these are metadata records
	    which are too large to fit on a single database page.  Also,
	    spelling corrections to these reports and a new note that
	    some problems are only warnings.

	#340413 (Job #47282) **
	    Replica server re-configurations which affect background pull
	    thread behaviors no longer require a server restart to take effect.

	#338798 (Job #46363) **
	    The 'p4 verify' command on a replica server will no longer attempt
	    to transfer missing or damaged files from the master server itself.

	#336044 **
	    The 'p4 pull' command now supports the '-T' and '-F' flags. These
	    flags have the same syntax and meaning as they do for 'p4 export'.

	#329784 (Job #26031, #42006) **
	    The new command 'p4 dbverify' can be run by a super user or
	    operator to perform low-level verification checks on the
	    database tables. This is the same level of checking as is
	    performed by the 'p4d -xv' command, which is now documented.

	#321637 (Job #23109) **
	    The command 'p4d -jd dump.file db.tablename' can now be used to
	    checkpoint just a single named table into the named dump file.

	#321561 (Job #20259) **
	    'p4d -xv' and 'p4d -xr' will now set the operating system exit code
	    to a non-zero value if problems were found in one or more tables.
	    A summary message with the count of the problem tables will also
	    be printed in this case.

	#320029 (Job #40288) **
	    'p4 groups -v -i <user>' now supports combining both '-v' and '-i'
	    flags to display both indirect group membership and group resource
	    limits in a single command.

Bugs fixed in 2012.1

	#547239 (Job #61205) **
	    Fixed a timing problem impacting forwarding replica reliability
	    on Windows servers.

	#513635 (Job #58700) **
	    'p4 integrate' could open files with an unset haveRev when the
	    client mapping was complex.  This has been fixed.

	#507528 (Job #58819) **
	    'p4 interchanges' now defaults to the '-3' behavior when run with
	    a stream argument, in order to more closely follow 'p4 integrate'.

	#505914 (Job #58769) **
	    'p4 shelve' no longer fails with a 'missing from the rev table'
	    error when shelving files that have been moved by 'p4 resolve'.

	#504825 (Job #58325) **
	    'p4 counter -i monitor' no longer fails with a locking error on
	    the db.config table.

	#502049 (Job #57862, #58199) **
	    'p4 sync -f' could flag a file as 'corrupted during transfer' if
	    the immediately preceding file was deleted from the client due to
	    being not present in the label being sync'd, and if those two
	    files had differing file types (e.g., one was binary, one ktext).

	#499273 (Job #58256) **
	    'p4 filelog -i' will now correctly show branch history when a
	    revision range is specified for the initial file.

	#368980,#498941 (Job #28397, #28753, #29835, #43984, #57961) **
	    'p4 login' would issue tickets without client address restrictions
	    if that command was submitted through a proxy, or a broker or if
	    P4AUTH was in use, this has been fixed.
	    'p4 info' reported the proxy or broker address as the client
	    address if one of those were in use.  Now, 'p4 info' reports both
	    a PeerAddress and a ClientAddress.  The ClientAddress omits the
	    port.  The old 'p4 info' format is avaliable for api <= 70.

	#497791 (Job #58255) **
	    "p4 merge" will now correctly recognize moved source files when
	    they have been deleted and re-added after being moved.

	#496304 (Job #58193) **
	    "p4 copy" and "p4 integrate -t" will now copy all attributes
	    (including those not set to be propagating) when opening files for
	    "branch".

	#486432 (Job #56773) **
	    On Server shutdown client commands are now prevented from
	    running during the final stages of process termination.

	#486047 (Job #55422, #33649) **
	    Non fatal depot repository librarian errors are now reported
	    in the Server logfile.

	#486009 (Job #57488) **
	    It was possible to output the generated branch view of a -S stream
	    with a -P parent when the stream and parent were not of the same
	    depot lineage.  This is now disallowed.

	#484326 (Job #57370) **
	    Validation of a stream specification form failed to reject spec
	    Path fields containing leading wildcards ( *, ... ) causing
	    client and branch views to be incorrectly generated.  Existing
	    streams containing such leading wildcards in Path fields will
	    invoke an error the next time they are attempted to be saved.
	    Correct these errors by removing leading wildcards.

	#482580 (Job #56339) **
	    'p4 copy' with both (-S) stream and (-s) fromFile could falsely
	    report "CopyNeedsMergeFirst" error when no merge exists.  This has
	    been fixed.

	#482438 (Job #18060) **
	    'p4 add' will now fail if the file is slated as exclusive open
	    in the typemap, and the file is already opened by
	    someone else.

	#481968 (Job #56430) **
	    'p4 group -a' was returning an "illegal command usage" error on some
	    platforms.  This has been fixed.

	#479612 (Job #56607) **
	    'p4d -xx' and 'p4d -xv' were mistakenly printing non-error messages
	    to stderr. Those messages are now printed to stdout, and only
	    actual errors are printed to stderr.

	#479503 (Job #54048) **
	    The 'archive' and 'restore' commands now copy compressed binary
	    files between the local depot and the archive depot in their
	    compressed format (i.e., without uncompressing, then recompressing).

	#478740 (Job #55738) **
	    'p4 reconcile' ignored typemap entries. This has been fixed.

	#478690 (Job #56331) *
	    On Windows, the p4 client would mistakenly attempt to create a
	    directory when that directory already existed as a symbolic link
	    created via 'mklink /d'.

	#472861 (Job #56416) **
	    Performance degradation from excessive scans of db.resolve
	    with the 'p4 shelve' command has been fixed.

	#471479 (Job #56347,#56421) **
	    On Windows, 'p4d -jd' would skip tables larger than 4GB, and
	    'p4d -jc' would fail to truncate journals larger than 4GB.

	#471096 (Job #56243) **
	    Added 'p4 help legal' to include the full OpenSSL license text
	    with appropriate acknowledgements.

	#467304 (Job #56226) **
	    Server now detects if broker closes connection as a result
	    of client control-C.

	#462189 (Job #55748) **
	    Resolve records in 'p4 fstat' output will no longer have gaps in
	    their numbering.

	#458325 (Job #44399) *
	    Syncing an apple (resource filetype) file would fail with
	    network transfer errors.  This has been fixed.

	#454430 (Job #54729) **
	    Police that private key is of type RSA.  Prevent loading
	    of DSA private keys.

	#453549 (Job #55540) **
	    'p4 counter -i' race condition removed.

	#445556 (Job #53950) **
	    If a stream and the stream parent have any identical 'Ignored'
	    fields, there is a redundant exclude entry in the generated
	    branch view.  This has been fixed.

	#443907 (Job #54921) ** ***
	    p4d, p4p, p4broker run as service on NT could not see
	    P4SSLDIR value in registry.

	#440231 (Job #54176) **
	    If a form type had a form-save trigger defined, but did not have
	    a form-in trigger defined, the form-save trigger was called with
	    an empty formfile.

	#436410 (Job #53679) **
	    'p4 integrate' could fail if the only depot for the source was
	    a remote depot and a change range was specified.  The error
	    'Relock failed in Position()' would be reported under this
	    scenario.

	#436206 (Job #53742) **
	    A Super user logged in via a ticket trying to login another user
	    through a proxy did not work.  Fixed.  Also applies to Auth
	    server use.

	#435729 (Job #53366) **
	    'p4 move' will now open files at the correct depot revision when
	    the target of the move is an existing (deleted) file.  Previously
	    the file would be opened for move/add at revision #1, which could
	    lead sync to schedule spurious resolves.

	#435626 (Job #53776) *
	    'p4 set P4WEBSERVICEFLAGS=<value>' works again.

	#432300 (Job #53529) **
	    Files that have been opened with 'p4 copy -v' and then synced
	    while open will now be transferred to the workspace when reverted.

	#431728 (Job #53461) **
	    Resolving a move could in rare circumstances result in the file
	    being opened in a workspace location that it was formerly mapped
	    to rather than the currently mapped location.  (When this happened,
	    a subsequent sync would correct the issue.)  This has been fixed.

	#429428 (Job #51965) **
	    When replicating a server which was initially created prior to
	    2008.2, and has not yet been reloaded from a checkpoint to enable
	    the database checksums feature, 'p4 journaldbchecksums' will no
	    longer report 'table checksums DIFFER' in the replica log but
	    will instead report 'table checksums unknown (master)'.

	#427158 (Job #53155) **
	    This change significantly improves performance of <filespec>@label,
	    when filespec contains no wildcards and is not from a remote
	    depot.

	#426213 (Job #53180) **
	    'p4 resolve' could fail with a "can't resolve: (shelved change
	    was deleted) error if the file was shelved in multiple places
	    and the file to be resolved was from an older shelved change. This
	    has been fixed.

	#425360 (Job #47395) **
	    'p4 shelve' could fail with a "missing rev" error if a file to be
	    shelved has resolve records to its head revision and also to a
	    shelved file revision. This has been fixed.

	#424140 (Job #53126) **
	    Attribute resolves now combine correctly with branch resolves.

	#423257 (Job #52484) **
	    'p4 copy' no longer deletes target files in a parent stream when
	    those files are entered in the Ignored: path of the donor stream.

	#422968 (Job #52995) **
	    'p4 populate' will no longer permit target files to be overwritten
	    when a revision specifier is provided on the second file argument.

	#421165 (Job #52959) **
	    Using the deprecated '-d' flag to 'p4 integrate' will now propagate
	    move/delete revisions as plain deletes, rather than skipping them
	    entirely.

	#419958 (Job #52820) **
	    The replica was incorrectly reporting a digest mismatch for a file
	    which was retyped using 'p4 retype -t text+k'.

	#418980 **
	    The 'p4 istat' command is no longer allowed on a read-only replica.

	#417685 (Job #52442) *
	    A client command may now pass up to 256 command-line flags.

	#414070 (Job #52521) **
	    A file that is moved back and forth between the same names in two
	    codelines will now correctly propagate the most recent filename
	    when integrated and resolved automatically.

	#412671 (Job #52372) **
	    Replica server 'p4 pull' commands now use the server disk space
	    configurables and will check for sufficient disk space periodically.

	#412338 (Job #52231) **
	    Replica servers were incorrectly treating 'p4 counter -i' as a
	    read-only command.

	#411861 (Job #51623) **
	    The 'p4 verify -z' command now automatically disables file batching,
	    and it is no longer necessary to specify '-b 0' when running
	    'p4 verify -z' in order to get acceptable performance..

	#410909 (Job #52181) **
	    When using 'p4 copy -S -P' or 'p4 merge -S -P' to copy or merge
	    changes by reparenting on the fly, directional flow and copy/merge
	    rules are no longer enforced.  In the case of 'copy' however, a
	    check for merged down changes is still performed.

	#408930 (Job #52147) **
	    Using 'p4 client -s -S' to switch a non-stream client into a stream
	    client will now issue a warning about destroying the clients static
	    view.

	#405701 (Job #52069) **
	    Files that have been opened for move from an old revision will now
	    produce the correct base file (the origin of the move) when synced.

	#397922 (Job #51656) **
	    'p4 monitor pause' no longer erases the application name, host
	    address, and workspace name fields.

	#393714 (Job #51180) **
	    'p4 users -m N <pattern>' could display fewer than N users matching
	    the pattern, if some service users or operators also matched.

	#393526 (Job #51292) **
	    A Remapped stream path disallowed files starting with a single
	    dot, interpreting the file to be starting with a wildcard.

	#393175 (Job #51183) **
	    It is once again possible to create, edit, and delete a client
	    spec which contains a back-slash (\) character, when the server
	    is on a Windows platform.

	#390961 (Job #17878) **
	    A job name beginning with a hyphen is now disallowed.

	#387667 (Job #50828) **
	    Reverting a file that has been synced after being opened by
	    'p4 delete -v' will now correctly sync the file to the workspace.

	#386216 *
	    In some cases, a Windows client trying to delete a symbolic link
	    to a directory could fail with the error message:
	    "unlink: <symlink-name>: Access is denied.".

	#384441 (Job #50644) *
	    The '-d' flag, which specifies the current directory, is now in
	    effect for the 'p4 set' and 'p4 tickets' commands.

	#379943 (Job #50375) **
	    A replica server with rpl.pull.position set might echo journal
	    state information to the log excessively following a 'p4 monitor
	    resume' command resuming the replica's pull thread.

	#379327 (Job #50311) **
	    'p4 verify -t' will now schedule an archive transfer of a missing
	    or damaged file which is a lazy copy.

	#369361 (Job #26775) **
	    'p4 admin updatespecdepot -a' now includes protect, triggers,
	    jobspec, and license forms in its list of form types to process.

	#367474 (Job #49092) **
	    It is once again possible to submit a file whose name contains a
	    single double quotation mark character using 'p4 submit -d',
	    although only if the server has neither a form-in trigger of type
	    'change' nor a form-save trigger of type 'change'.

	#366680 (Job #49557) **
	    'p4 -ztag diff -sb' could report invalid data for the 'depotFile'
	    and 'rev' tags for open branched files that had been modified.

	#366184 (Job #42854, #49383) **
	    The MD5 digest file which is created for a compressed checkpoint
	    contains the digest of the uncompressed checkpoint data, so the
	    filename has been changed to omit '.gz'.

	#361586 (Job #48744) **
	    Updating a shelf such that a previously-shelved edit is changed to
	    a lazy copy of a different archived file will no longer result in
	    a revision that the replica server is unable to transfer.

	#352567 (Job #47699) **
	    The '-h' flag on 'p4 login' is no longer restricted to super users.

	#349544 (Job #42492, #46051) **
	    A 'p4 retype' command which finds that no files need retyping will
	    now issue a warning message describing that fact.

	#349470 (Job #43904) **
	    An invalid form type for the 'p4 admin updatespecdepot -s' command
	    will now generate a message warning about the unknown type.

	#348775 (Job #48125) **
	    On a replica server, 'p4 license -i' will no longer update the
	    spec depot entry for the license.

	#348308 (Job #48242) *
	    When the assumed type of a newly-added missing file is modified
	    by a partially-wild typemap spec, the message about the assumed
	    file type now reflects the typemap information.

	#345397 (Job #48150) **
	    A 'p4 cstat' command which retrieves no records due to exceeding
	    map.joinmax1 will now display an appropriate message.

	#341691 (Job #33799) **
	    A typemap entry which defines an invalid filetype for spec depot
	    data is quietly ignored, and the spec depot files are stored in
	    the default (text+C) type.

	#340854 (Job #34226) **
	    A 'p4 obliterate' command which obliterates both local-depot files
	    and spec-depot files with a single filename pattern will no longer
	    leave a single extra row in either db.revdx or db.revhx.

	#338261 (Job #47013) *
	    A 'p4 sync' operation which fails due to P4CLIENTPATH will no
	    longer issue the message: "Fatal client error; disconnecting!"

	#337986 (Job #47021) * **
	    Specifying an out-of-range port number now results in an error
	    message, rather than interpreting the port number modulo 65536.

	#337170 (Job #21657) **
	    Attempting to open a spec depot file for edit or delete no longer
	    produces the message "File isn't in revisions table!"

	#324724 (Job #46254) **
	    'p4 fstat -F' filter expressions are now evaluated properly when
	    the arguments are larger than 2^32-1.

	#321510 (Job #36807) **
	    The standard trigger variables (%client%, %user%, etc.) are now
	    available to archive triggers.

	#321281 (Job #33612) **
	    Submitting a file of type +X via the proxy no longer crashes
	    the proxy.

	#320613 (Job #16997, #18719, #29781, #32950) **
	    Triggers of type "fix-*", "form-*", and "auth-*" now validate their
	    path value more thoroughly.

	#320243 (Job #14434) **
	    An improved error message is now issued for a 'p4 add' command of
	    a file name containing the ellipsis wildcard (...)

	#320100 (Job #42051) **
	    Invalid regular expression patterns in a 'p4 fstat' command now
	    issue a syntax error message instead of quietly failing to match.

	#319627 (Job #45848) **
	    Normal termination of a Unix server will now once again display a
	    log message for each child connection that was running at the time
	    of the shutdown.

	#318993 (Job #24639) **
	    'p4 opened' now displays '*exclusive*' for opened files of type +l.

--------------------------------------------------------------------------
Important note:

	Please refer to:
	http://www.perforce.com/perforce/r11.1/user/relnotes.txt
	to get up to date GA and post-GA information about this release.
--------------------------------------------------------------------------

Important changes to default integration behavior for 2011.1 **

	#427338 ** (Job #53249)
	    Two integration engines are supported with the 2011.1 server.
	    The new integration engine (v3) includes improved base selection
	    semantics and expanded resolve capability (see below).

	    The GA release of 2011.1 moved to the v3 integration engine as
	    its default engine across all commands (integrate, copy, merge).
	    Given that the new engine will schedule new types of resolve and
	    therefore can return unfamiliar results the default behavior has
	    been changed.

	    Starting with this patch, the server uses the v2 (2010.2) engine
	    for 'p4 integrate'. The new commands 'p4 merge' and 'p4 copy'
	    continue to use the new v3 engine.

	    For more details on enabling the new engine, and further information
	    see the following link:

	    http://kb.perforce.com/article/1631/generation-3-integration-engine

Major new functionality in 2011.1

	#386481 **
	    The unlicensed (free) server version user/client limit (2/5)
	    has been raised to 20/20. Unlimited users and workspaces for
	    repositories with less than 1000 files has not changed.

	#268731 ** *
	    This release provides support for streams. This functionality
	    provides a way to create and maintain customized branches, known
	    as streams, and regulate the flow of control of changes for
	    clients using those streams. A stream spec is used to detail
	    the relationship between a parent codeline and the branched
	    files on the workspaces of clients using the stream. Besides
	    using 'p4 integrate', 'p4 interchanges', 'p4 copy', and
	    'p4 merge' to handle integration of changes using streams,
	    a few new commands have been implemented for streams support:

		istat   - Check for integrations needed for a stream
		stream  - Create or edit a stream specification
		streams - Display list of streams

	    Additionally, 'p4 branch', 'p4 client', 'p4 clients',
	    'p4 diff2', and 'p4 dirs' have command options that relate
	    to streams.

	    To find out more about streams, see 'p4 help stream', or
	    see help for any of the other supporting commands.

	#265906, #274187, #278007, #300647
	(Job #36, #835, #2360, #4834, #21342, #21415, #22187, #22281,
	 #24144, #25840, #29694, #34416, #37508, #39465 ) ** *
	    With the v3 integrate engine enabled, 'p4 integrate' provides
	    improved base selection semantics and expanded resolve
	    functionality, including:

		1) Files that have previously been "moved" within the source
		   and/or target branch will be paired up if there was common
		   integration history prior to the move.  When the range of
		   source changes to be merged includes "move" actions, a
		   special resolve will be scheduled to accept, ignore, or
		   merge the move action.

		2) When files have been edited in one branch and deleted in
		   another, a special resolve will be scheduled to accept or
		   ignore the branch or delete action.  (This replaces the
		   old "can't branch/delete without -d flag" warning.)  The
		   -Rb and -Rd flags to "p4 integrate" will force all branch
		   and delete actions to be resolved, permitting them to be
		   ignored even when they are not in conflict.

		3) When the range of source changes to be merged includes
		   filetype changes, a special resolve will be scheduled to
		   accept, ignore, or merge the filetype change.  (This
		   eliminates the need to use the -t flag to ensure that
		   filetype changes are propagated.)

		4) The new -Rs flag forces multiple resolves to be scheduled
		   per source file when there is a non-contiguous set of
		   unintegrated changes.  This prevents previously "cherry-
		   picked" changes from being re-integrated, at the cost of
		   requiring additional merge steps during "p4 resolve".

	    A new client is required to perform new (non-content) resolves
	    interactively (with prompts), although old clients may still
	    perform these resolves with "p4 resolve -a".  The "p4 integrate"
	    command will not schedule the new types of resolve if the client
	    application indicates that it does not support them.

Minor new functionality in 2011.1

	#342289 **
	    'p4 fstat' will now return a 'reresolvable' field if the file
	    has been resolved and may be re-resolved with 'resolve -f'.

	#335746 * **
	    The auth-check-sso ( auth type trigger ) is now supported.
	    This simple single sign-on trigger has been present but
	    undocumented since 2007.2.  Due to the requirement of the
	    client-side script component, the trigger will only function
	    with clients at or above release 2007.2.  See 'p4 help triggers'
	    for more information.

	#333847 (Job #39308, #46830) **
	    When a copy of a form is saved in the spec depot, the formname
	    is stripped of any leading slashes ('/')  prior to file creation.

	#332191 (Job #46870) **
	    The 'dbschema' command is now available to service users.

	#331093 (Job #46259) **
	    'p4 shelve' now performs tamper checking on lazy-copied files,
	    similar to 'p4 submit -t', by default.

	#323005 (Job #17757) **
	    'p4 interchanges', which lists changes that have not been
	    integrated from a set of source files to a set of target files,
	    is now supported.  The command has long been present but has
	    been undocumented.

	#321120 (Job #32218) *
	    'p4 resolve' will now suggest 'ae' after an editor or merge
	    tool has been invoked to produce a result identical to the
	    'yours' file.  The resulting 'edit from' record will be a
	    candidate for integration in the reverse direction.  (The user
	    may still enter 'ay' to produce an 'ignored'.)

	#319257 (Job #39693) **
	    'p4 fstat -Or -e <change> -Rs <file>' now shows pending
	    integration records for shelved files.

	#314657 (Job #45291) **
	    Compress checkpoint but not journal files.  A new flag '-Z' when
	    used with 'p4 admin checkpoint' and 'p4d -jc' requests that the
	    checkpoint be compressed but that the journal remain plain text.
	    Note that the existing '-z' option compresses both the checkpoint
	    and the journal; '-Z' is useful to allow a replica to read the
	    uncompressed journal, while allowing the master to save disk space
	    by compressing the checkpoint.  See 'p4d -h' and 'p4 help admin'
	    for details.

	#312885 (Job #43878) * **
	    MD5 routines are somewhat faster now for some platforms.

	#312551 (Job #44398, #44626, #40974, #42629 ) **
	    Replica servers now implement the 'p4 login' command locally,
	    rather than forwarding it to the master server. Each user may
	    separately log in and out of the replica server independently
	    from their login to the master server. Replica-server-specific
	    login information is tracked in the db.user.rp table. The new
	    flags '-r' and '-c' to the 'p4 users' command can be used on a
	    replica server to observe replica-specific or central-server
	    login information, respectively. A 'p4 logout -a' or 'p4 passwd'
	    command issued on the central server will also log the user out
	    of the replica server, and deleting the user on the central server
	    deletes them from the replica as well.

	#310768 (Job #1415, #2087, #16395, #37612) *
	    P4CONFIG files now validate variable names more carefully. They
	    also are more tolerant of line ending differences. 'p4 set' now
	    reports the name of the actual P4CONFIG file that was used, and
	    also includes any tunables that were set in the config file.

	#309049, #309070, #324902 (Job #43718) **
	    Create a new 'operator' user type.  There are now three types of
	    users:

	        standard: a normal user (licensed)
	        service: a service user (not licensed)
	        operator: an operator user (not licensed)

	    The purpose of an operator user is similar to that of a restricted
	    admin; he or she can perform various administrative tasks:

		stop or restart the server
		monitor and confirm its correct and timely operation
		return a server to proper operation
		assure the safety and integrity of the data and metadata

	    However, the operator user cannot access or modify any metadata
	    or file contents.  Operators are intended to be used to manage the
	    operational aspects of a Perforce server (as opposed to an admin
	    user, who can also change configuration, etc).  We expect that
	    large companies might separate functional roles by creating
	    operators to run the day-to-day management of a Perforce server,
	    admins to perform tasks that have access to metadata or file
	    contents, and superusers to handle everything else.

	    We expect that the main use of operator users will be to manage a
	    replica; as these users will almost by definition not be co-located
	    with the people responsible for a server, it is desirable that they
	    can handle the day-to-day operation of a replica without being able
	    to access or to modify metadata or confidential data.  Like service
	    users, operators are severely limited in what they can do.
	    Operators can run only the following commands:

		    p4 admin stop
		    p4 admin restart
		    p4 admin checkpoint
		    p4 admin journal
		    p4 dbstat
		    p4 diskspace
		    p4 configure
		    p4 counter (including -f)
		    p4 counters
		    p4 jobs (including -R)
		    p4 journaldbchecksums
		    p4 login
		    p4 logout
		    p4 logtail
		    p4 logstat
		    p4 lockstat
		    p4 monitor
		    p4 passwd
		    p4 ping
		    p4 verify

	    Note that the only one of these commands that takes a file path
	    argument is 'p4 verify'.  Operators require LIST access to verify
	    a file, but are not limited by their client spec (they don't even
	    need one).

	    Note also that operators can't run 'p4 client', so they can't
	    create or edit their client spec.  A superuser could create one
	    for them, but it would be pointless: none of the commands they can
	    run use the client spec.

	    Multiple operators can be created, with any desired user names.
	    As is usual, however, the type of a user can't be changed after
	    he or she is created.  Once an operator, always an operator.

	    Finally, note that if a password is set for an operator then they
	    must login (as usual) before running any commands.

	#308967 **
	    'p4 clients' and 'p4 branches' now accept a '-t' argument to
	    output both the date and time of the last update of the client
	    or branch.

	#308775 (Job #1928) **
	    'p4 resolve' now accepts a '-c' option to limit itself to files
	    open in a particular pending changelist.

	#308703 (Job #36850, #39046, #40348, #41933) **
	    'p4 clients', 'p4 branches', and 'p4 labels' now accept a '-E'
	    argument to perform case-insensitive name filtering.

	#308611 (Job #10863) **
	    'p4 filelog' now allows a revision range to be specified.

	#307793 **
	    'p4 rename' is now a synonym for 'p4 move'.

	#306575 (Job #42888) **
	    'p4 archive' can now operate on RCS files via the '-t' flag.

	#306446, #307153 (Job #7756, #18886, #20385, #24183, #25261,
	              #28208, #30281, #34859, #38949, #39587, #40804,
	              #40834, #41685, #41746, #42691, #44200, #44685,
	              #45078) **
	    Concurrent operations using the same client workspace over
	    separate network connections are now coordinated using locks
	    in the server; this also applies to concurrent 'obliterate',
	    'snap', and 'retype' commands. The locking behavior may be
	    disabled using the 'server.locks.dir' configurable. By default,
	    a new directory "server.locks" is created in P4ROOT to hold lock
	    files for workspace locks; the contents of this directory are
	    transient and do not need to be backed up.

	#304688 (Job #44656) **
	    Long running integrate commands will no longer block submits
	    if they do not need to add integration history.

	#302035 **
	    A new option '-b <batchsize>' for the command line client allows
	    the user to specify how many arguments should be sent to the
	    server.  This option is for use in conjunction with the '-x'
	    option,  which by default sends arguments to the server in
	    batches of 128.

	#302002 **
	    'p4 fstat' and 'p4 sync' now take a new '-L' flag.  When this
	    flag is used all file arguments supplied must be in full depot
	    syntax and contain a valid (numeric) file revision.  The '-L'
	    flag causes file arguments to be processed together by building
	    an internal table similar to a label. This file list processing
	    is faster and more efficient than computing the results for each
	    individual argument.  Error handling is subtly different (non-
	    existent files, for example, are ignored) but the performance
	    gain can be significant.

	#301617 **
	    'p4 pull -l' now takes a new '-j' flag. 'p4 pull -l -j' displays
	    a short summary report of the metadata replication state.

	#301506 **
	    The 'p4 copy' command will now translate moved source files
	    into paired move/add and move/delete actions in the target.

	#301255 (Job #44740) **
	    The server can now detect a database table which was not closed
	    properly due to a power failure or system crash. Each time such
	    an event occurs, a counter is incremented in the table's header.
	    The counter value, if non-zero, is displayed by 'p4 dbstat'.

	#300930 **
	    The 'p4 admin checkpoint' command can now be issued against a
	    replica server; the checkpoint is not taken immediately, but
	    rather is performed by the "pull" thread at the next journal
	    rotation that it replicates from the master server.

	#300870 (Job #3824) **
	    The "-t" option of "p4 edit" allows the string "auto" to mean
	    that the files being opened for edit should have their file types
	    redetected and looked up again via the typemap.  Other commands
	    with similar "-t" options do not support this.

	#299614 (Job #38221, #39099) **
	    Unshelving a file opened for edit over a file already opened
	    for edit in the workspace is now allowed. A resolve record is
	    created when unshelving, and the user must then run 'p4 resolve'
	    to resolve the workspace files with the shelved files.

	#298266 (Job #16321)
	    When a copy of a form is saved in the spec depot, the form text
	    will now include a comment at the top identifying the user who
	    supplied that revision of the form data.

	#298099
	    'p4 pull -u' commands in a replica server with monitoring enabled
	    will now display which file is currently being pulled from the
	    master server in the output of 'p4 monitor show -a'.

	#295632 (Job #23544, #11545, #4383, #14431, #27386, #38044) ** *
	    Provided all server and client components are at 2011.1 or
	    higher release levels, Perforce no longer truncates passwords to
	    16 bytes. Users with existing passwords that were truncated
	    should reset their password once all components have been upgraded;
	    otherwise they must enter only the first 16 bytes of their password
	    when prompted by a new client. Users who must use a mix of new
	    and older clients should avoid using passwords longer than 16
	    bytes as the behavior can be confusing. The new password length
	    limit is 1024 bytes.

	#293927
	    "p4 copy" will now report "file(s) up to date" when attempting
	    to copy between files that are already identical, rather than
	    "all revisions already integrated".

	#291190 **
	    'p4 pull -l' now takes a new '-s' flag. 'p4 pull -l -s' displays
	    a one-line summary report of pending archive transfers.

	#291139 (Job #38674) **
	    The default value for server command logging is now 'server=1'.
	    Sites which were previously not specifying server log levels
	    should direct server log output to a file by setting P4LOG and
	    should periodically rotate the log and clean up old copies to
	    ensure that disk space usage is managed.

	#290500 (Job #19806, #40554) **
	    On Mac OS X and FreeBSD platforms, SO_REUSEPORT is no longer set
	    by default on the server's listening socket. To specify that
	    SO_REUSEPORT should be set, configure net.reuseport=1.

	#289313 **
	    'p4 integ' and 'p4 copy' now support the '-m max'
	    option to limit the output to the first 'max' files.

	#289299 (Job #39394, #43519) **
	    Added "-k" option to delete to keep the local file on the client.
	    This option (keep) leaves the local file on the client; the file
	    will still be deleted in the repository when the change is
	    submitted.

	    After running the "delete -k" command, the specified files will be
	    marked for deletion in the repository, but will not be deleted on
	    the client.  After this change is submitted, the files will be
	    deleted in the repository, but will not be deleted on the client.

	    Without "-k", p4 delete operates as it did previously.

	#288318 (Job #43504) **
	    The 'p4 copy' command now produces revision ranges more similar
	    to those produced by 'p4 integrate'.

	#286960 (Job #2784) **
	    The new command 'p4 admin restart' can be used to restart a
	    running server using the latest configurable settings.

	#286630 **
	    Checkpoints produced by 'p4d -jd' now include MD5 digest files.

	#286414 (Job #4558) **
	    The following server configurables may be set to control the
	    automatic enforcement of sufficient available disk space on
	    the server: filesys.P4ROOT.min, filesys.P4JOURNAL.min,
	    filesys.P4LOG.min, filesys.TEMP.min, and filesys.depot.min.

	#286303 **
	    A new journal record type @dl@ now appears in journals and
	    checkpoints. @dl@ records contain information about file content
	    which has been deleted from the server's repository by a command
	    such as 'p4 obliterate', 'p4 archive', 'p4 shelve -d', etc.
	    External programs which parse journal records should be enhanced
	    to recognize the @dl@ records and skip them.

	#285084 **
	    The new command 'p4 diskspace' can be used by a super user to
	    display the current disk space usage conditions on the server.

	#284481 (Job #546, #2048, #13073) *
	    Symbolic links are now supported on Windows 7, Windows Vista, and
	    Windows Server 2008, using NTFS file systems, provided that the
	    CreateSymbolicLink privilege has been granted, or that Perforce
	    is running as Administrator for administrators with UAC enabled.
	    If the target of the symbolic link does not exist, the symbolic
	    link is created as a link to a file, not as a link to a directory.

	#283889 **
	    New commands 'p4 monitor pause' and 'p4 monitor resume' can be
	    used to pause and resume long-running 'verify' and 'pull' commands.

	#283726 (Job #32090, #42917) **
	    'p4 license -u' shows the license limits and the entity
	    counts towards the limits.

	#283449 (Job #3153) **
	    The new server configurable 'journalPrefix' can be used to
	    persistently configure the directory or prefix for checkpoints
	    and rotated journals.

	#282209
	    'p4 client' now supports a new flag '-s'. This flag allows the
	    user to switch views without the need for calling a form editor.
	    The view can either be a template from a client '-t template'
	    or a stream '-S stream'.  Switching views is not allowed if the
	    client has open files,  unless the force '-f' option is used.

	#281596 (Job #2122, 42800) **
	    'p4 sync' has been optimized when replacing files on a client
	    that have been remapped but are identical. Previously the server
	    always sent the identical file to the client, this change uses
	    MD5 digests on the server to see if the file needs sending.

	#281208 (Job #5991) **
	    'p4 sync' now supports a new flag '-s'. This flag adds a safety
	    check using MD5 digests to prevent overwriting previously synced
	    files that have been modified outside of Perforce control.  An
	    alias 'p4 update' has been added for 'p4 sync -s' for users more
	    familiar with this command.

	#281461 **
	    The new command 'p4 journaldbchecksums' can be used by
	    administrators of replicated configurations to verify that table
	    checksums on the replica match those on the master server.

	#280421 **
	    The configurable 'lbr.retry.max' can be set to limit the number
	    of times that a replica server will retry a failed file transfer.

	#280322 **
	    The configurable 'rpl.compress' can be set to cause a replica
	    server to enable data stream compression for connections it makes
	    to the master server. Legal values of compression are: 0-3.

	#280226 **
	    The replica now retrieves compressed binary archives from the
	    master server in their compressed format.

	#280165 **
	    'p4 verify -t' can be used on a replica server to schedule the
	    transfer of missing or damaged file revisions from the master.

	#279986 (Job #26286, #36423, #42369) **
	    'p4 verify' now processes files in batches, and will no longer
	    run out of virtual address space when processing an extremely
	    large number of file revisions. The batching is disabled if
	    the '-z' flag is used.

	#278207 (Job #37707) **
	    'p4 login' now supports a new flag '-h host'. This flag allows a
	    super user requesting a login for another user to bind the ticket
	    to a different host (IP address).

Bugs fixed in 2011.1

	#744802 (Job #69776) **
	    A server with security=3 which uses a P4AUTH server that has an
	    auth-check trigger defined will no longer perform password strength
	    checking, since the external authentication system is responsible
	    for enforcing password strength requirements.

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

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

	#499291 (Job #53456) **
	    Resolving a move would fail if the target of the move was already
	    opened for add on another client.  This has been fixed.

	#479968 (Job #56770) **
	    On a Windows server, if 'p4 admin restart' cannot successfully
	    quiesce all the server threads, it will now issue an error message
	    and force the server to shut down, rather than crashing.

	#444979 (Job #55038) **
	    Running 'p4 integrate/merge/copy' with a bad P4CHARSET value
	    resulted in a server crash.  This has been fixed.

	#437449 (Job #53834) **
	    'p4 unshelve' would allow unshelving a '+l' file that has been
	    already opened in a different workspace. This has been fixed.

	#425753 (Job #53138) **
	    A replica server which re-processes a segment of journal data
	    containing one or more row-deletion (@dv@) records will no longer
	    halt replication with the message "Journal record replay failed!"

	#405122 (Job #52037) **
	    Change #392899 introduced a possible crash when 'p4 sync'
	    schedules resolves.  Fixed.

	#395917 (Job #51611, #51599) **
	    Some tunables were not initialized to the correct value.  These
	    bad settings could result in non-optimal diff output for large
	    files and some bad transfer errors when syncing files that have
	    a different base file type (lazy copy) compared to the client
	    file type (Binary+D).

	#395714 (Job #51605) **
	    'p4 integrate' could fail to propagate move actions when the
	    moved file had been overwritten from another branch.  Fixed.

	#392899 (Job #50843, #51372) **
	    'p4 integrate' would include additional changes in certain
	    circumstances involving cherry-picking of copied revisions.  This
	    has been fixed by reverting to older behavior of picking the base
	    revision just prior to the cherry-pick.

	#390611 (Job #50948) **
	    'p4d -xu' would incorrectly increment the UnlockCount.

	#388275 (Job #50814) **
	    Performance changes to the 'p4 integrate' command would incorrectly
	    report a 'relock' failure when the maxlocktime limit was exceeded.

	#387901 (Job #50836) **
	    Spec depot revisions created by a 2011.1 server have an incorrect
	    filesize value. To correct the data, run 'p4 verify -v' against
	    those spec depot revisions after updating to this patch.

	#385159 (Job #49324) *
	    On Windows Vista, Windows 7, or Windows 2008, a client running as
	    Administrator would fail to properly process file names in
	    non-ASCII character sets (such as Shift-JIS).

	#380915 (Job #49890) **
	    Incompatible journal data which a replica can not handle due
	    to a central server upgrade would be silently ignored by
	    the replica which should have stopped replication.
	    Now, a central server upgrade will stop replication by an
	    older replica.  Also, in case of replication errors such
	    as a failed connection, the replica will wait for a minute
	    before retrying so as to not cause wasteful network traffic.
	    This wait time may be set with a -b flag on the pull command.

	#379362 (Job #50416) **
	    'p4 integrate' would miss integrations in a scenario involving
	    a particular combination of copies and ignores.  Fixed.

	#378640 (Job #50324) **
	    A replica server would experience concurrency bottlenecks on the
	    rdb.lbr table when replicating 'p4 obliterate' or 'p4 archive'
	    operations: unrelated archive transfers would be blocked.

	#378292 (Job #50325) **
	    'p4 integrate' will now search the entire branch view when
	    looking for moved file pairs, even when limited by filespec.

	#372168 (Job #49630) **
	    An interactive 'p4 change' command no longer keeps the client
	    workspace locked during the form editing session.

	#371869 (Job #49691) **
	    A performance change to 'p4 dirs' in this release caused a
	    regression with respect to the time taken in detecting a
	    twisted client map.  In this scenario 'p4 dirs' has the
	    potential to block other processes,  this has been fixed.

	#363564 (Job #43979) **
	    Server start up errors on Windows may not be logged.  These
	    errors will now appear in the Windows Application Event log.

	#355223 (Job #6144) **
	    Triggers may now use a %quote% variable which expands into a "
	    character.

	#342070 (Job #47657) **
	    'p4 copy' will no longer treat ktext files in remote depots as
	    needing to be re-copied.

	#339848 (Job #47469) **
	    'p4 pull -u' no longer reports 'Broken pipe' when transferring
	    files with +X filetype modifiers.

	#336867 (Job #46210) **
	    'p4 unshelve' will no longer open files in more than one changelist
	    after changing the client view.

	#332013 (Job #46774) **
	    A 'p4 sync' via a proxy of a server file with a corrupted
	    librarian filetype field will no longer hang.

	#330225 (Job #46683) **
	    A server which fails to start due to an invalid license will now
	    report that error to the P4LOG file (if set), not to stderr.

	#324939 (Job #46264, #48538) **
	    Performance of protection table processing against a user who
	    is a member of many groups has been significantly improved.

	#323993 (Job #46191) **
	    Server trace messages now obey the P4LOG setting on Windows.

	#323644 (Job #46153) * **
	    An already-logged-in superuser may specify his own username as
	    the argument to the 'p4 login' command.

	#321044 (Job #45968) **
	    Setting filesys.bufsize to 2147483647 no longer crashes the server.

	#320241 (Job #43747) **
	    The error handling for 'p4 submit' when there are outstanding
	    shelved files has been improved to not make suggestions that
	    may cause data loss.

	#318067 (Job #28741) *
	    'p4 set' now properly supports 'P4CHANGE' and 'P4AUTH' settings.

	#318053 (Job #32479) **
	    A 'p4 revert' command might fail to issue the message "//depot/file
	    has been moved, not reverted" if the command also included the
	    revert of at least one other move operation.

	#317078 (Job #36720, 44704, 44808) * **
	    The replication journal position kept in a state file by
	    a replica server or the 'p4 replicate' command could be
	    corrupted or lost in an out of disk space condition.
	    Now when state files are written a temporary file is used
	    and moved into place which should preserve the existing
	    state file if something goes wrong when updating it.
	    Also, if the state file should be empty or missing, the
	    replica server will refetch from the start of its last used
	    journal position and not from journal number 0.

	#317030 (Job #45669) ** *
	    In some cases, a super user logging in as another user might fail.

	#316949 (Job #45646) **
	    The replica now properly handles the case where a +S type file is
	    purged by the addition of a subsequent revision while it is
	    simultaneously being transferred to the replica.

	#316119 (Job #45018) **
	    Replica servers will report a warning if they are running
	    in a different timezone than their master server.  This
	    timezone difference causes problems with keyword expansion.

	#315817 (Job #44794) **
	    If a master server crashes with outstanding transactions,
	    replicas would not detect this and not apply journal records.
	    Fixed.

	#314387 (Job #45044) **
	    Shelving a branched file with the +m storage modifier will now
	    copy the modified time correctly from the source of the branch.

	#314293 (Job #41311) **
	    Accidentally configuring more than one metadata 'p4 pull' command
	    in a replica server no longer exposes the replica server to the
	    risk of metadata corruption.

	#312534 (Job #45414) **
	    'p4 ping -p10 -i3' now flushes intermediate messages to the client
	    prior to the pause between tests, rather than after the pause.

	#312469 (Job #45394) **
	    'p4 counter -f -i <counter>' may now be used (by a super user)
	    to increment a protected counter.

	#312141 (Job #45413) **
	    'p4 dbstat -s' now reports a syntax error if any arguments follow
	    the '-s' flag.

	#311519 **
	    Files opened 'virtually' by 'p4 integ -v' or 'p4 copy -v' and then
	    reopened with 'p4 edit' will no longer be considered 'virtual' and
	    will now be cleaned up correctly by 'p4 revert'.

	#310266 (Job #39450) *
	    'p4 set' now issues a warning if asked to set an unknown variable.

	#310094 (Job #45337) **
	    'p4 unshelve' now properly unshelves a file which has been shelved
	    while opened for edit, then sync'd to a deleted revision.

	#309553 (Job #11404) **
	    'p4 obliterate' is now able to properly clean up the working/locks
	    records for a file which has been opened for edit, then sync'd to
	    a deleted revision.

	#308291 (Job #18396) **
	    'p4 sync -f' will now delete an existing client file when syncing
	    to a deleted revision that the client was currently sync'd to.

	#307786 (Job #13229) **
	    The error message for a 'p4 integrate' command with a missing file
	    path in either the source or target now indicates which argument
	    was missing the file path.

	#307622 (Job #41007, #43965) **
	    'p4 configure show' will now include the p4d '-i' and '-f' flags,
	    if either was set when the server was started.

	#307552 (Job #33638, #43875, #43876) **
	    Command line flags that expect non-negative integer values, e.g.
	    'p4 clients -m max', now validate the argument more completely.

	#306175 (Job #44961, #44962) **
	    Access to a non-head revision in a remote depot will no longer
	    report "no file(s) at that revision".

	#305502 (Job #44849) *
	    Errors detected by P4CLIENTPATH will no longer cause the message
	    "Fatal client error; disconnecting!" to be displayed.

	#305025 (Job #27168, #32828) **
	    When a super user logs in as another user, the expiration value
	    for the ticket will now be based on the group membership of the
	    logged-in user, not on the groups to which the super user belongs.

	#304734 (Job #44882) **
	    Import or sync of a remote ktext file no longer erroneously fails
	    due to faulty MD5 verification. This has been fixed.

	#304010 (Job #41174) **
	    'p4 configure show <variable>' will now show both named and
	    unnamed configurable values, if both are set for that configurable.

	#303228 (Job #44762) **
	    'p4 fstat -Ol' will now display fileSize and digest values for
	    revisions that have been purged, archived, or moved.

	#303074 (Job #43929) **
	    Configurable 'net.backlog' can now be set as high as 64K.

	#302300 (Job #18950, #25816) **
	    'p4 change -i' no longer allows a user who is not the owner of the
	    pending changelist to update that changelist.

	#301961 (Job #43814, #44254) *
	    P4CONFIG files located in the root directory of a Windows
	    filesystem are now located properly at startup of a command from
	    a sub-directory.

	#300089 (Job #33102, #28493) **
	    form-in and form-save label triggers are now fired by 'p4 tag',
	    and form-in and form-save change triggers are now fired by
	    'p4 submit -d' and by 'p4 change -t'.

	#299335 (Job #44391) **
	    'p4 diff' of a file opened for edit, but sync'd to a deleted
	    revision, could incorrectly diff the file against an unrelated
	    depot file.

	#297400 (Job #43604) **
	    Some wildcard expressions against a remote server (windows),
	    could return incorrect (missing) results.

	#297383 (Job #44288) **
	    Extra spaces in the 'p4 configure' command no longer result in
	    the setting or clearing of a configurable with the wrong name.

	#291473 (Job #41841) **
	    'p4 configure show' now indicates if a configurable setting was
	    set via P4DEBUG, via the '-v' argument, or via 'p4 configure set'.

	#291277 (Job #43917) **
	    A spec depot cannot be deleted unless all of its contents have
	    first been removed with 'p4 obliterate'.

	#290793 (Job #23413) **
	    'p4 depot -d' now prevents the deletion of a depot which still
	    contains the archive content for files in other depots. After
	    obliterating the other files which are lazy copies of the files
	    in this depot, you can delete the depot normally.

	#290314 (Job #41070) **
	    'p4 opened -u' no longer requires setting P4CLIENT.

	#290128 (Job #41558) **
	    'p4 change -o' now requires only 'list' permission, not 'open'.

	#290043 (Job #23787, #38931) **
	    The type of an existing depot cannot be changed after creation.

	#288884 (Job #29921) ** ***
	    Librarian filenames on case insensitive unicode mode servers will
	    now case fold non-ascii characters.

	#288772 (Job #34940) **
	    The owner of an empty pending changelist is now allowed to change
	    the client field of that changelist via 'p4 change'. This can be
	    useful when handing off a shelf from one user to another.

	#288193 (Job #22967) **
	    When one or more 'p4 obliterate' commands have resulted in the
	    situation where the oldest available revision of a file is an
	    'edit' revision, 'p4 describe' of the changelist that created that
	    'edit' revision no longer fails with a fatal error.

	#287921, #288760, #288833 (Job #43557, #43612, #31456, #43628) **
	    The server will no longer allow any of the counters used by the
	    server itself (change, job, journal, etc.) to be set to a
	    negative value or to a non-numeric value.

	#287785 (Job #43552) **
	    Taking a checkpoint on a server with journaling turned off no
	    longer crashes the server.

	#287583 (Job #24588) **
	    The file suffix field for a spec depot now rejects invalid suffix
	    values, such as "@", "...", and "/".

	#287548 (Job #2235) **
	    'p4 diff -sd' and 'p4 diff -sl' no longer list files opened
	    for delete in their output.

	#287284 (Job #42965, #43873) **
	    'p4 pull' now removes obliterated files from the replica.

	#285810 (Job #43267) **
	    'p4 configure set' and 'p4 configure unset' now support tagged
	    output.

	#285333 (Job #43217) **
	    p4d -xf 18362 now resets auth-check-sso and service-check triggers.

	#284948 (Job #9638, #42928) *
	    When reading settings from P4CONFIG files, trailing blanks are
	    now ignored.

	#284828 (Job #43034) **
	    In a P4AUTH configuration, the 'license' command is now forwarded
	    from the outer server to the central server.

	#283363 (Job #43011) **
	    When a spec depot is in use, and a spec object was deleted, the
	    record in db.revsx for the deleted revision contained invalid
	    data for the digest and fileSize columns. This will no longer occur.

	#283211 (Job #29324, #42505) **
	    Accidentally defining P4CHANGE or P4TARGET to loop back to the
	    same server is now detected as a runtime configuration error.

	#281564 (Job #41265, #42755) **
	    The replica server no longer needs to be restarted following the
	    addition of a new depot to the master server.

	#281180 (Job #25034) **
	    'p4 revert' no longer reports a librarian error when a revert of
	    a modified +S filetype file fails because the revision that is
	    opened has already been purged from the repository.

	#281105 (Job #13393) **
	    'p4 describe' no longer reports a librarian error when describing
	    a change which includes a purged revision of a +S filetype file.

	#279464 (Job #2309, #36424) **
	    'p4 verify' no longer processes files in remote depots.

	#279258 (Job #28640, #33247) **
	    'p4 verify' no longer reports MISSING! for +S files purged after
	    the verify command has started.

	#278478 (Job #3454) **
	    'p4 verify -q' no longer prints 'file(s) already have digests'.

	#277960 (Job #41593) **
	    If your password has expired, 'p4 login' will no longer allow
	    you to login with the old password.

--------------------------------------------------------------------------
Important note:

	Please refer to:
	http://www.perforce.com/perforce/r10.2/user/relnotes.txt
	to get up to date GA and post-GA information about this release.
--------------------------------------------------------------------------

Major new functionality in 2010.2

	#274269 (Job #20896) **
	    P4AUTH (central authentication) and P4CHANGE (central changelist)
	    server options are now fully supported.  Both options have long
	    been present but undocumented.  As of this release, a server that
	    is being used for authentication must have a valid license.  See
	    the System Administration Guide for more details.

	#272848 (Job #19628) **
	    This release builds on previous replication infrastructure adding
	    two major enhancements:

	        (i) depot file (content) replication

	        Perforce replicas can now be configured to transfer new file
	        content as well as metadata. The transfer is initiated as soon
	        as the replica detects new version content.  Depending on how
	        frequently new content is committed multiple processes can be
	        started to handle the various loads.

	        (ii) server-to-server replication

	        Replication has now been incorporated into the communication
	        protocol.  This allows a configured replica to run without
	        the need for external processes to drive the transfer.
	        Configuration is accomplished by using the new 'p4 configure'
	        command.

	    See the replication chapter in the System Administration Guide
	    for more details.

	#254889 **
	    A depot of type 'archive' may be defined, and used to implement
	    the controlled transfer of revision content to archival storage.
	    An 'archive' depot is typically mapped to a storage location which
	    can be placed offline to save on storage costs. Having defined an
	    archive depot, the 'p4 archive' command can be used to move
	    revision content to the archive; the 'p4 restore' command can be
	    used to restore archived revisions. The 'p4 files' command now
	    takes a '-A' argument to limit output to files in archive depots.
	    See 'p4 help archive' and 'p4 help restore' for more information.

	#264717 *
	    The p4 client, and the C++ client API, now support client
	    protected regions. Perforce client regions define "safe areas"
	    in a Perforce client's filesystem where files can be accessed
	    or modified, under the control of the Perforce server (through
	    the API); any attempt by a Perforce server to direct participating
	    client APIs to access or modify files outside a client protected
	    region will cause a client-side error in the client API and the
	    relevant files will not be touched. To enable this feature, you
	    may define the P4CLIENTPATH variable (as an environment variable,
	    via 'p4 set', or in a P4CONFIG file) to a (semicolon-separated)
	    list of one or more local filesystem directories.

	#259157, #261720 (Job #1291, #28884) * **
	    By default, transfer of data between the client and server is
	    now verified against corruption. This check is performed on the
	    client for 'p4 sync/revert/unshelve/integ' and on the server
	    for 'p4 submit/shelve'.  These checks may be turned off using
	    'p4 configure' if they adversely affect performance.

	#259145 **
	    The new '-I' flag causes 'p4 annotate' to trace all integration
	    records, rather than only branch records.  If a line was added
	    in one branch, merged into a second, and merged from there into
	    a third, 'annotate -I' on the third branch will show the first
	    branch's changelist as the source of that line.

	#257689 **
	    A new journal record type @nx@ now appears in journals and
	    checkpoints. @nx@ records contain identification information,
	    such as timestamps, checksums, and version numbers, and are
	    recorded by the server periodically, including at the start and
	    end of each checkpoint or journal, when a server is started or
	    shut down, and when the database is upgraded. External programs
	    which parse journal records should be enhanced to recognize the
	    @nx@ records and skip them.

	#257688 **
	    To help administrators keep track of successful checkpoints, a
	    new internally generated counter 'lastCheckpointAction' has
	    been added which contains the operation timestamp.  Also, when
	    the checkpoint completes, the MD5 digest of the checkpoint is
	    written to the file 'checkpoint.N.md5'. Together these data points
	    can help in verifying complete and undamaged checkpoints.  Note
	    that if the -z flag was used to compress the checkpoint, it must
	    be uncompressed to verify the checksum.  When restoring from a
	    journal, the server will now produce a warning if the journal
	    was written by a different version of the server, and will produce
	    an error if the journal was written using different case-handling
	    flags than are currently defined for the server.

	#255892 (Job #1492) **
	    The change spec has a new field, 'Type', to specify whether a
	    change is 'public' or 'restricted'. By default, a change is
	    'public', which means that it is visible with 'p4 changes', and
	    can see the change descriptions in 'p4 change' or 'p4 describe'.
	    The type of 'restricted' will restrict the view of the change
	    depending on user permissions.  Owners may always see their
	    changes, and 'restricted' can be overridden by an admin user
	    with '-f'. This field affects the operation of 'p4 change',
	    'p4 changes', and 'p4 describe'.  See 'p4 help change', 'p4
	    help changes', and 'p4 help describe' for more information.

	#255729 **
	    The new 'p4 copy' command allows files to be copied (integrated)
	    from one path to another based on file content differences rather
	    than on prior integration history between them.  Files opened with
	    'p4 copy' will be resolved automatically in a single step, and
	    will not be downloaded to the client if the '-v' flag is used.
	    See 'p4 help copy' for more information.

	#246820 (Job #14713, #23831, #23822, #41783) **
	    Server configuration variables are now stored in the db.config
	    table, and may be displayed and set using the new administrator-
	    only command "p4 configure". Most server configuration variables,
	    including tunables and debug levels, are now dynamic, and will
	    take effect beginning with the next connection to the server.

Minor new functionality in 2010.2

	#281541 (Job #42790) **
	    'p4 pull' now supports the '-J prefix' flag to allow the
	    specification of the journal file location on the master server.

	#275795 (Job #16285) * **
	    'p4 ping', which sends messages from the server to the client
	    and back, timing performance, is now supported. It has been
	    present since 2009.2, but undocumented.

	#275057 (Job #39375, #39412, #39421) **
	    'p4 fstat -F' filtering now supports regular expression matching
	    similar to that of 'p4 grep'. The syntax to enable this filtering
	    is '~='.

	#264938 **
	    'p4d -jr' now has new flags. '-s' will cause recovered
	    journal records to be written to the server's journal file.
	    And '-m' which records new file revisions in a new table
	    'rdb.lbr' which is used to fetch the archive data of those
	    new revisions by a replica server.

	#264054 *
	    'p4 replicate' now has a '-R' flag to attempt to reconnect
	    to a server continuously.

	#262094 *
	    A new flag '-T' was added to 'p4 replicate' that allows the user
	    to specify a quoted, space separated list of table names which
	    should not be transferred for replication.

	#262649 (Job #7727) **
	    A new flag '-q' has been added to 'p4 sync' and 'p4 labelsync'
	    which will suppress informational messages during operation.

	#261187 **
	    A new flag '-T' was added to 'p4 export' that allows the user
	    to specify a list of database table names which will be excluded
	    from exported output.

	#259417 **
	    A new flag '-t' was added to 'p4 change' that allows the user
	    to change the change type on the command line.  This is useful
	    for scripting or triggers

	#259124 **
	    'p4 annotate' will no longer operate on files larger than 10MB.
	    This limit can be changed via the dm.annotate.maxsize configurable.

	#257282 (Job #39527) **
	    When the target of an auto-merge is a file that was synced from the
	    depot and is not flagged as writable (i.e. open for "integ"
	    rather than "edit"), the client file's digest will be compared
	    against the corresponding digest in the depot.  If it does not
	    match, the resolve will terminate with a "tampered" error message.
	    If the client file is verified as matching the depot revision,
	    the server will use the depot revision for the merge rather than
	    transferring the file from the client.

	#256953 (Job #3416) **
	    Browsing remote depots has been improved by reducing the amount
	    of data that is passed from the remote server to the local server
	    and then processed.  In particular 'p4 dirs' performance has been
	    improved significantly by computing the directories at the remote
	    end.  Both local and remote servers need to be upgraded to this
	    release to benefit from these improvements.

	#252485 **
	    When a deleted file is added back to the depot by syncing to an
	    earlier revision and running 'p4 add', an 'add from' integration
	    record will associate the added revision with the previously
	    synced revision.  This will make it possible to determine when an
	    'add' was a reversal of a delete as opposed to a new file.

	#250349 (Job #7605, #21295) **
	    The server now tracks the date when each user most recently
	    changed their password, and also provides a simple password
	    aging mechanism. The date when the user last changed their
	    password is now visible as a new read-only field in the user spec,
	    and is also displayed by the new '-l' flag to 'p4 users'. The
	    group definition now contains a new PasswordTimeout field which
	    may be set to the number of seconds after which members of this
	    group will be required to change their passwords. If a user is a
	    member of multiple groups, the longest timeout is used. The
	    password and ticket expiration information is now provided as
	    tagged output from 'p4 -ztag login -s'.

	#250142 **
	    A new type of user, called a 'service user', can be defined by
	    specifying 'Type: service' in the user definition. Service users
	    are useful for authenticating and securing network traffic between
	    intermediate servers in a distributed configuration. Service users
	    do not count against your license limit, and it's not necessary
	    to set the 'jobView' or 'reviews' information for a
	    service user. A service user can only run the following commands:
	    login, logout, password, info, and user. Service users should be
	    used as the value of the '-u' flag for intermediate services
	    (proxies, replica servers). When a server connects to another
	    server for remote depot access or for replicating data, the
	    connecting server will authenticate itself using the service user,
	    and the accepting server can control access by including the
	    service user in the protections table specifications.  When
	    using service users, you should be running at server security
	    level 1 or higher, since service users without passwords are not
	    valuable. External authentication for service users can be
	    implemented by providing the 'service-check' trigger. To include
	    service users in the output of 'p4 users', specify '-a'.

	#249892 *
	    On Mac OS X, 'p4 set' now sets Perforce variables as user or
	    system preferences in your Mac preferences folder.

	#247383 **
	    'p4 info' now supports a new flag '-s'. If this flag is provided,
	    the info command will no longer check the user name and client name
	    to verify whether they are known to the system or not. For uses
	    where checking for unknown user names or client names is
	    unnecessary, 'p4 info -s' should provide faster execution.

Bugs fixed in 2010.2

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

	#470383 (Job #53678,#56359) **
	    On Windows an external application will no longer cause sporadic
	    loss of the RCS archive head-1 revision.

	#427939 (Job #49890) **
	    Incompatible journal data which a replica can not handle due
	    to a central server upgrade would be silently ignored by
	    the replica which should have stopped replication.
	    Now, a central server upgrade will stop replication by an
	    older replica.  Also, in case of replication errors such
	    as a failed connection, the replica will wait for a minute
	    before retrying so as to not cause wasteful network traffic.
	    This wait time may be set with a -b flag on the pull command.

	#425753 (Job #53138) **
	    A replica server which re-processes a segment of journal data
	    containing one or more row-deletion (@dv@) records will no longer
	    halt replication with the message "Journal record replay failed!"

	#423699 (Job #52987, #52837) **
	    Replica server performance could be severely impacted by read-only
	    commands which access new files that have not yet been transferred.

	#370742 (Job #49769) **
	    Moved files with the +S filetype will no longer be lazy-copied.

	#370100 (Job #46264, #48538) **
	    Performance of protection table processing against a user who
	    is a member of many groups has been significantly improved.

	#369984 (Job #49691) **
	    A performance change to 'p4 dirs' in this release caused a
	    regression with respect to the time taken in detecting a
	    twisted client map.  In this scenario 'p4 dirs' has the
	    potential to block other processes,  this has been fixed.

	#369871 (Job #44794) **
	    A replica server might stop replicating if the central server
	    crashes with outstanding transactions.  Fixed.

	#369868 (Job #43062) **
	    A monitor-enabled replica server will no longer log the message
	    "'pull' exited unexpectedly, removed from monitor table." when
	    'p4 monitor show' is issued.

	#361749 (Job #49095) **
	    net.mimcheck level 5 did not validate properly causing
	    all commands through a non-local intermediate server to be
	    rejected.  Fixed.

	#308107, #345509 (Job #44640, #44713, #44875, #47466) **
	    'p4 print -o' and 'p4 unshelve' no longer fail with a bogus
	    'corrupted during transfer' error with shelved ktext files.

	#345500 (Job #46430) **
	    The replica server will no longer report "No such file" errors
	    when a move operation is shelved.

	#345377 (Job #47944) **
	    Metadata changes to replicas could be lost when forms with
	    large numbers of items, such as groups, are changed.  Fixed.

	#345072 (Job #48002) **
	    A 'p4 change -o' operation that fails to list files due to
	    excessive joined mappings will now produce the appropriate
	    error message rather than silently omitting the file list.

	#331394 (Job #46820) **
	    A failed 'p4d -jr' operation will now set the operating system
	    exit status to a non-zero (failed) value.

	#322148 (Job #42260) **
	    A replica server will now only transfer a single revision of
	    an RCS file at a time from the master server.

	#322108 (Job #44853) **
	    Replica servers will no longer report spurious digest mismatch
	    errors for shelved file content; replica servers in a different
	    timezone than the master will no longer report spurious digest
	    mismatch errors for ktext files containing $Date$ or $DateTime$.

	#320770 (Job #45601) **
	    Accessing an offline remote depot could cause a server crash.

	#320763 * ** (Job #41078)
	    Improve network protocol sanity check to prevent crashes
	    when garbage data is received on a connection.

	#315777 ** (Job #45062)
	    Nested server side errors could result in allowing premature
	    invocation of a new command.  This new command on the same
	    connection could result in a server crash.

	#310293 **
	    Change 256113 (from the initial 2010.2 release) has been reversed
	    so that files opened by 'p4 integrate -v' or 'p4 copy -v' may be
	    reopened by 'p4 add' or 'p4 edit'.  Note that these files may
	    not be submitted until they are manually added to the workspace.

	#309223, #309512 (Job #45042, #45121) **
	    In a specific happenstance a Perforce Server trigger may inherit
	    a Windows file handle which belongs to a depot repository file.
	    If the trigger holds that handle long enough, the submit using
	    that repository file can fail.  Files are no longer inherited.

	#300591 (Job #43858, #44353) **
	    Accidental multi-threaded sharing of a single client connection
	    will no longer cause a server crash.

	#297671 (Job #44375) **
	    Changes to the locking algorithm for SOLARIS10 could result in
	    a server hang when multiple p4d processes were chasing the same
	    file locks.

	#297301 (Job #44354) **
	    'p4 job -i' could block other commands while waiting for a
	    lock.

	#294117 (Job #43930) **
	    'p4 dirs' could hang if the client had excessive exclusionary
	    mappings. Now it will exit with an error instead of hanging.

	#293676 (Job #43942) **
	    'p4 shelve' commands specifying invalid file names no longer crash.

	#292172 (Job #43797) **
	#293382 (Job #44092) **
	    In rare cases a Windows virus scanner may block access to the
	    server logfile for extended periods of time and cause a server
	    exit or crash.  This has been corrected.

	#293249 (Job #43888) **
	    'p4 delete -v' would fail to preserve propagated traits if
	    the file was not on the user's have list. This has been fixed.

	#288575 (Job #42969) **
	    The replica server will no longer print the error message:
	    "dbget rdb.lbr: no read lock!" during archive transfer.

	#285568 (Job #42662) **
	    'p4d -xf 925' did not update the change field of the locks table,
	    resulting in incorrect reporting of the 'otherChange' field by
	    'p4 fstat'. This has been fixed.

	#285240 (Job #42828) ** *
	    A 'p4 sync' via a proxy of a missing server file will no longer
	    hang; also, the client will no longer report a digest mismatch
	    related to the failure to deliver the missing file.

	#285127 (Job #42971) **
	    A replica server will no longer report archive transfer errors
	    for the contents of deleted shelves.

	#285003 (Job #43149) **
	    An outer server using a P4AUTH (central server) would fail on
	    submit due to incorrect checking of local user count. This has
	    been fixed.

	#283415 (Job #36103, #38200, #42977) **
	    When the server is logging commands via -vserver=n, replication
	    support operations such as user-export, rmt-Journal, rmt-FileFetch
	    would be reported many times, now they are only reported
	    when initially run or when they take a long time. "-vserver=4"
	    will force even these repeated operations to be logged.

	#282873 (Job #42997)  **
	    On 32-bit Windows,  a bug with the heap manager could result
	    with memory allocation problems that could lead to a server
	    crash. This has been fixed.

	#282799 (Job #33543) **
	    'p4 sync <filepath>#none' would make a scan of the db.rev table
	    for the specified argument even though its redundant.

	#282081 (Job #42889) **
	    Removed an invalid flag from the help output of 'p4 archive'.

	#282065 (Job #42858) **
	    If a Windows server was running with a non-zero security level,
	    excess data was being returned on the first response from the
	    server to the client. This has been fixed.

	#280377 (Job #40748) **
	    Metadata replication with p4 pull stored information
	    in a counter 'sequence' however that causes the counters
	    table to differ from the master server.  This information
	    is now kept in a file 'state' instead.  This file name
	    may be changed with the 'statefile' configurable.

	#280361 (Job #26753,#41870,#42313) *
	    'p4 -p "rsh:p4d -i -r ." passwd < password.txt' now works
	    properly on Windows. Additionally, marshalled invocations such as
	    'p4 -G login < password.txt' now work properly on Windows.

	#280347 (Job #42664) **
	    'p4 copy' will no longer delete files from the target if they are
	    excluded from the branch view.

	#280332 (Job #42226) **
	    When a replica fails to transfer a binary file revision from its
	    master server, it no longer leaves a temporary file in the
	    replica's depot directory.

	#280021 (Job #42221) **
	    'p4 pull' run interactively would sometimes hang.  Fixed.

	#278187 (Job #42429) **
	    'p4 pull' would not work for unicode mode servers.  Fixed.

	#277329 (Job #42231) **
	    Excluded trigger paths were ignored by shelve-submit triggers
	    when file arguments are used in the 'p4 shelve' command.
	    This has been fixed.

	#276005 (Job #28693) **
	    The central changelist feature (P4CHANGE) can now be used in
	    configurations where all servers are Unicode-enabled.

	#275889 (Job #42081) **
	    'p4 print' of a shelved revision via the proxy will no longer
	    erroneously print the content from an earlier version of the shelf.

	#275814 (Job #6589,#37177) **
	    Windows UNC paths now work in a client root and depot map.

	#275765 (Job #25700) **
	    In a P4AUTH configuration, to determine whether a username is
	    known, run 'p4 -ztag info' against the central server. When run
	    against an outer server, 'p4 -ztag info' now always displays that
	    the username is unknown.

	#275754 (Job #40923) **
	    In a P4AUTH configuration, 'p4 info' displays the server license
	    information only when run against the central server.

	#275738 (Job #32971) **
	    User job views are now operational in the outer server of a
	    P4AUTH configuration.

	#275581 (Job #41914) **
	    'p4 unshelve' could create db.have/db.rev inconsistencies
	    if unshelving files that were not on the shelving client's
	    have list. This could happen if a user shelved files after
	    'p4 delete -v'. This has been fixed.

	#275083 (Job #40842) *
	    'p4 replicate' now catches cntl-c to shutdown cleanly.

	#274912 (Job #39630, #40903) **
	    An administrator may now use 'p4 shelve -d -f' to delete a shelf
	    without having to specify a valid client name for the command.

	#274855 (Job #41575) **
	    'p4 integrate' with no arguments now issues a usage message. The
	    arguments to 'p4 integrate' must specify either '-b branchspec'
	    or exactly two file specs.

	#274673 (Job #42028) * ** ***
	    Perforce crashes or hangs on some 64-bit Linux platforms
	    due to glibc change.  Fixed.

	#273231 (Job #41819) **
	    'p4 describe' could spend a long time scanning the 'db.integed'
	    table before giving up with the error 'Can't find successor rev'.
	    This was due to Job #37058 which is also fixed in this release.

	#271204 (Job #41504) **
	    'p4 sizes', 'p4 files', and 'p4 sync' now support the '-m max'
	    option to limit the output to the first 'max' files.

	#271044 (Job #39870) **
	    'p4 move' has been improved to check for content changes before
	    transferring files to the server.  By checking if the source and
	    target files are the same, 'p4 move' can implement a lazy copy
	    instead of adding extra files to the archive.

	#270938 (Job #41442) **
	    On a case-insensitive server, 'p4 counter -f minclient 2009.2'
	    no longer sets the minClient counter to an invalid value.

	#270765 (Job #41319) **
	    Delete -v would, in some cases, generate an incorrect error
	    "Can't delete (already opened on this client)" message, and
	    refuse to delete a file even if file was not opened on that
	    client.

	#270764 (Job #40730) **
	    Spurious error messages were generated by p4 diff -du when
	    a deleted file was diffed. Diffing deleted files generates
	    a "delete diff" that removes all of the lines of the deleted
	    file if the output of diff -du is run through patch.

	#270710 (Job #7326, #41203) **
	    New tunable 'dm.user.noautocreate' has been created to
	    provide control over automatic user creation. By default, if
	    unset or set to 0, the server allows users to be created on
	    the fly as permitted by the protects table. If this tunable is
	    set to '1', users may only be created using the 'p4 user' command.
	    If set to the most restrictive value of 2, users may only be
	    created by a super user using the 'p4 user' command.

	#270688 (Job #16379) *
	    Use of a .p4tickets file with DOS-style line end conventions no
	    longer confuses Unix/Linux clients, and the tickets file can thus
	    now be shared between different systems.

	#269913 (Job #41053) * **
	    The merge algorithm has been improved to detect a delete adjacent
	    to a conflict, and include the deleted lines in the conflict
	    region.

	#268822 (Job #41101) **
	    A trigger specification which mentions a %variable% whose name
	    exceeds 64 characters will no longer cause a server crash.

	#267930 (Job #40800) **
	    'p4 describe' of a pending changelist now properly includes
	    files with leading special characters in the Affected Files list.

	#264435 (Job #6479)
	    Version resources are now embedded into executables on Windows.

	#264291 (Job #36052,#34255) **
	    The performance of 'p4 unlock -f' has been greatly improved for
	    sites that have many files open.

	#263471 (Job #40589) **
	    'p4 revert -a -k files...' no longer issues the error message
	    'Illegal command usage. Try 'p4 help' for info.'.

	#263034 (Job #40520) **
	    If a trigger emitted "\n" as its standard out, and nothing else,
	    then the server would access an invalid memory location and
	    might crash.

	#261184 (Job #39375, #39421) **
	    Implements two new escape combinations to fstat. Allows
	    user to specify \0 to represent an empty field and \... to
	    represent the wildcard expression ...

	#260495 (Job #35426) **
	    The TCP/IP listen() 'backlog' parameter may now be configured to
	    a value larger than 5 on Windows, and the default backlog value
	    is now 10 on all platforms, whereas formerly on Windows it was 5.

	#258947 (Job #32695) **
	    Attempting to labelsync a revision that is not in the label's
	    view will now produce the correct "not in label" error rather
	    than "no permission".

	#258410  (Job #40020) **
	    'p4 dbschema' is now present in the output of 'p4 help commands'.

	#257615  (Job #023018) **
	    Duplicate log output is written to log when certain conditions
	    are met.  This has been fixed.

	#257026 (Job #39846) **
	    'p4 describe' of a pending change allowed users without
	    'list' permission for its files to view them. This should
	    work the same as describe of submitted changes. Both should
	    restrict running the command to having 'read' access (or 'list'
	    if '-s' is used), but should only list files to which there
	    is at least 'list' access. This has been fixed.

	#256225 (Job #39682) *
	    'p4 replicate -x -s <statefile>' would not update the statefile
	    on journal rotate exit (the -x flag) in a way such that the
	    next run of the command would continue with the next journal.
	    Fixed.  Also, the -o <file> option would leave the target file
	    read only on journal rotate exit.  Also fixed.

	#256195 (Job #38909) **
	    Operations that produce no result because of exclusions in a
	    a combination of mappings (e.g. protect + client + branch) should
	    now more accurately produce an error message that indicates which
	    mapping was empty due to exclusions.  For example, integrating
	    into an excluded client path could previously report "no permission
	    for operation," and will now report "not in client view".  A more
	    subtle effect of this fix is a change from "no permission" errors
	    (insufficient access) to "protected namespace" (no access at all)
	    for some commands where the user does not have "list" access.

	#256113 **
	    Files opened for branch but not present on the client (the result
	    of 'p4 integrate -v') may no longer be reopened for 'add'; this
	    was unintended and in most cases undesirable behavior.  Users who
	    had been making use of this behavior to avoid extra downloads
	    when renaming files should be able to get similar (but better)
	    behavior with a combination of 'p4 sync -k' and 'p4 move'.

	#256017 (Job #39601) **
	    'p4 unshelve' operations are now logged to the audit log when
	    audit logging is enabled.

	#255335 (Job #14771) * **
	    Handling of ^C interrupts of 'p4 sync' commands has been improved:
	    the client's ^C signal handler now flushes buffered messages, and
	    the server's connection-dropped logic now processes buffered
	    acknowledgements more thoroughly.

	#254916 (Job #39653) **
	    The '-T' flag to 'p4 fstat' has been fixed to correctly handle the
	    tags otherOpenN, otherLockN, otherActionN, and otherChangeN.

	#253916 (Job #39595) **
	    'p4 integrate -t' will now correctly propagate the filetype
	    of the source when the target file is already open for integrate.

	#253773 (Job #39458) **
	    The 'have list' could become confused when a file was opened,
	    deleted at the head rev, synced, remapped to a different file,
	    and synced again.  This has been corrected.

	#253333 (Job #23248) *
	    If the Perforce client was unable to delete a binary file on a
	    Windows platform due to the file being in use by another process,
	    the file was being mistakenly left with read-write permissions,
	    instead of being restored to read-only permissions.

	#253325 (Job #15981) **
	    When 'p4 integrate' is run with a branchspec and multiple toFile
	    arguments, each argument is processed fully before starting on the
	    next.  This should prevent the "muddled resolve" error that could
	    result from a file being opened for branch multiple times by a
	    single command.

	#253264 (Job #22184) **
	    A usage error now occurs for 'p4 submit -d xxx -i', since the
	    -d and -i flags cannot both be used together. Prior to this change,
	    the -i flag was quietly ignored in this case.

	#253055 (Job #37058) **
	    A 'copy' resolve will no longer override an earlier 'moved' and
	    change it to an 'ignored'.  This should prevent a subsequent
	    'describe' of that change from producing a 'can't find
	    successor rev!' error.

	#252662 (Job #37694) *
	    When using a Perforce client on Windows that spans multiple drives,
	    drive letters were being mistakenly processed in case-sensitive
	    fashion. They are now once again automatically lower-cased.

	#252513 (Job #3830) **
	    Files that were open for branch before being reopened for add
	    will now be deleted from the workspace when reverted.  New
	    files opened for add will still be "abandoned" on revert.

	#252446 (Job #20380) **
	    The performance of 'p4 dirs' has been greatly improved in the
	    case where a user has exclusionary permissions under the
	    specified path. In this case, the number of rows scanned has
	    been significantly reduced, resulting in faster performance.

	#252366 (Job #38831) **
	    The command 'p4 jobs -e "Job >= jobNNNNNN"' was mistakenly
	    treating the >= operator as though it was =.

	#252228 (Job #38955, #20516) **
	    If 'p4 reopen -t +ko file' is used to add the +ko modifier to
	    a file which is already marked as +k, the +ko is now ignored,
	    and the file remains marked with filetype +k.

	#251611 (Job #34018) * **
	    On Windows platforms, it is now once again possible to specify
	    parameters such as P4EDITOR using double quotation marks to
	    surround the parameter value.

	#251384 (Job #35357) **
	    'p4 annotate' did not respond properly to a user attempting
	    to interrupt the command with ctrl-c.

	#251342 (Job #35562) **
	    When computing the set of groups to which a user belonged, the
	    server could fail to notice an indirect group membership via
	    a subgroup, if another group of which the user was a member
	    happened to be the very last entry in the db.group table. Fixed.

	#251119 (Job #28201) *
	    'p4 [cmd] -i < /some/directory' would crash because the I/O
	    error that resulted from re-directing stdin to a directory was
	    not caught. This has been fixed.

	#251093 (Job #30807,32404,32405,34003) **
	    'p4 fstat -T' now validates the field list more thoroughly and
	    rejects unknown field names as errors.

	#250920 (Job #37475) **
	    When an integrate command reported 'File(s) not in client view',
	    a memory leak was occurring, and has been fixed.

	#250482 (Job #30780) * **
	    Validation of the port number in P4PORT has been improved, and
	    port numbers that start with a digit but contain non-numeric
	    characters are no longer accepted.

	#250142, #255123 (Job #39294, #21949) **
	    'p4 user -o' or 'p4 user -d' for an unknown user would fail
	    if the license quota was full. Fixed.

	#249529 (Job #38785) **
	    A malformed date specification combined with another search
	    expression could cause "p4 jobs -e" to crash.  Fixed.

	#246985 (Job #26138,38051) **
	    Running 'p4 verify' on a compressed-binary revision file in
	    the versioned file tree would loop forever if the binary was
	    truncated. Fixed.

	#239657 (Job #38194) *
	    'p4 replicate -k' would not terminate if the subprocess
	    terminates abnormally.  Fixed.

--------------------------------------------------------------------------
Important note:

	Please refer to:
	http://www.perforce.com/perforce/r10.1/user/relnotes.txt
	to get up to date GA and post-GA information about this release.
--------------------------------------------------------------------------

Major new functionality in 2010.1

	#235471 (Job #1400) **
	    The new 'p4 grep' command enables users to search through a
	    revision range of archived text files on the server.  Regular
	    expressions, case-insensitive and inverse search are supported.
	    See 'p4 help grep' for more information.

Minor new functionality in 2010.1

	#243979 (Job #994) **
	    A new flag '-d' for 'p4 add' now allows the user to downgrade
	    some open file actions which previously would require a revert.
	    This flag can be used if a file is opened for 'edit' and synced
	    to a (deleted) head revision or for a file that is opened for
	    'move/add'.  See 'p4 help add' for more information.

	#242851 **
	    Per change 227535, the error message on attempting to submit a
	    deleted file that is open for edit will now suggest "sync & add"
	    as a possible solution.

	#241134 * **
	    Perforce clients, servers, and proxies will attempt to increase
	    TCP send and receive buffers to 64Kbytes if those buffers are less
	    than that amount.  This can improve network performance on high
	    latency networks.

	#236504 **
	    'p4 export -r' command to report journal records will now
	    report the table name of a record if the record is a database
	    table record and the '-F' filter option will now work with
	    these raw journal export records.

	#236044 (Job #3440, #37905) **
	    A new system counter 'minClient' may be set to a release
	    number which the server will enforce as a minimum
	    client version to work with.  If set, another counter,
	    'minClientMessage' may also be set to supply a message to the
	    client regarding how to get newer clients.  The server must be
	    restarted after changing these counters.

	#235925 **
	    A new flag '-S' for 'p4 sizes' reports size information for
	    files that have been shelved.  See 'p4 help sizes' for more
	    information.

	#235755 (Job #37597) **
	    The server may be operated with the -C1 option to force
	    the server to operate in case insensitive mode on a normally
	    case sensitive platform.

	#235393 (Job #34869) **
	    String case handling of a p4d server is now specified in the
	    output of 'p4 info'

	#235026 (Job #36327) * **
	    A new flag '-f' for 'p4 move' allows the user to force a move
	    to a file already synced to the client workspace.  One use of
	    this command is the ability to move and resolve a file that is
	    opened for edit but has been renamed at the head revision.

	#233651 (Job #2319) **
	    Atomic update of counters.  A new flag '-i' for 'p4 counter'
	    increments the supplied counter by 1 and returns the new value.

	#232628 (Job #35860) *
	    PKZIP and Java archives are now detected as compressed
	    binary files and added to the server by default as ubinary
	    meaning they are not compressed by Perforce.

	#230242 (Job #23422) * **
	    Perforce clients running on (windows) NTFS filesytems can suffer
	    from performance problems due to fragmentation.  This change
	    pre-allocates space for files larger than 32K.

	#227793 **
	    The performance of 'p4 unshelve' has been improved by batching
	    its updates to benefit from the internal cache and a reduction
	    in lock requests.

	#225620 **
	    New triggers are available for use with shelving files.
	    The 'shelve-submit' trigger is similar to 'change-submit',
	    but trigger failure prevents shelving. The 'shelve-commit'
	    trigger operates similarly to 'change-commit'. Finally, the
	    'shelve-delete' trigger can be used to prevent shelved file
	    deletion. Please see 'p4 help triggers' for more information.

Bugs fixed in 2010.1

	#282873 (Job #42997)  **
	    On 32-bit Windows,  a bug with the heap manager could result
	    with memory allocation problems that could lead to a server
	    crash. This has been fixed.

	#276388 (Job #41364) **
	    Resolves between 'text' and 'symlink' files will now be treated
	    as 'binary' (at/ay) by default.

	#264737 (Job #40395 and #40396) *
	    Change #258714 introduced a regression that caused the client
	    spec option 'rmdir' to not delete directories on Windows.
	    This change resolves that problem.

	#264094 (Job #40089) **
	    The p4d server on SOLARIS10 suffers from poor concurrency due
	    to changes in the way that the file locking system call fcntl()
	    has been changed. Unlike other platforms, SOLARIS does not allow
	    shared access to files if an exclusive lock is waiting.
	    This change fixes the problem by using region level locks for
	    each reader and should provide improved concurrency.

	#258714 (Job #12200) *
	    RmDir operation (invoked by client rmdir option) will delete
	    junction points, causing undesirable side effects, including
	    deleting files unexpectedly.

	#257930 (Job #39886) **
	    Multiple simultaneous grep commands could cause server instability.

	#256855 (Job #39815) **
	    Problems with the TCP connection would be reported if
	    the proxy (or configurable broker) was in use and a
	    TCP forwarder (or older proxy) is between the client
	    and that proxy.  Fixed.

	#248446 (Job #34305) **
	    'p4 changes -s pending @change' would result in a 'no read lock'
	    error message. This command now works correctly.

	#248320 (Job #39200) *
	    When a file created in winter (during standard time) is added
	    in summer (during DST), using a Windows platform for the client,
	    the modification timestamp on the file is incorrectly computed.
	    This has been fixed.

	#248131 (Job #39140) **
	    'p4 diff @=<shelved>' could fail to find the files to
	    diff if files were opened outside of the shelved change under
	    certain circumstances. This has been fixed.

	#248086 (Job #37881) **
	    'p4 diff -f' did not handle moved files correctly, it would
	    diff the target of the move against the wrong depot file, this
	    has been fixed.

	#246764 (Job #38800) **
	    'p4 shelve' now requires open access rather than write access.

	#246502 (Job #38992) **
	    'p4 change -f' was erroneously changed in 2009.2 to disallow
	    changing the 'user' to a non-existent user. This has been
	    fixed.

	#244697 (Job #38850, #38915) **
	    'p4 revert' will now allow users to revert a file opened for
	    move/delete even if its move/add partner isn't open in the
	    user's client.

	#244448 (Job #36927) **
	    Submission of a changelist in which one or more modified files
	    failed to be transferred to the server could improperly
	    complete (rather than being aborted) if an unchanged file in the
	    same changelist was reverted or excluded due to the use of the
	    revertunchanged or leaveunchanged client submitoptions.

	#244379 (Job #36875) **
	    'p4 tag' command would not save forms to the spec depot, this
	    has been fixed.

	#243724 (Job #38117, #38813) **
	    Issuing 'p4 unshelve' with ktext files resulted in $Change$,
	    $Date, and $DateTime expanding to values from the shelved
	    revisions rather than the depot revisions, causing spurious
	    diffs based only on expanded keywords. This has been fixed.

	#243445 (Job #38776) **
	    'p4d -jrc' used with 'p4 replicate' or 'p4jtail' would stall
	    the last transaction until the next transaction starts.
	    If interrupted during this stall the last transaction would
	    be lost.  Fixed.

	#243220 (Job #37618) **
	    The 'p4 describe -S' command would fail if a shelved file
	    was deleted at the head revision.  This has been
	    fixed to perform the describe, list the files, but skip
	    printing impossible diffs.

	#243221 (Job #38349)) **
	    p4 diff -du gives errors when run against files open for move.
	    This has been fixed.

	#243165 (Job #38286) **
	    'p4 annotate -i' could take a long time if the branched files
	    being followed stepped into protected namespace.
	    this has been fixed.

	#243180 (Job #37720, #38349, #37689) **
	    p4 diff -du does not run against files open for integrate,
	    but not yet resolved.  Also fixes 'p4 diff -du -f' against
	    unopened/all files.

	#243163 (Job #38350) **
	    p4 diff -du gives wrong output when diffing shelved files open
	    for add. This has been fixed.

	#242670 (Job #16782) *
	    On Windows platforms, when using the 'modtime' client option
	    or the +m filetype modifier to cause sync'd files to have
	    their last-modified date set to the last-modified date from
	    the revision on the server, the date could sometimes be off by
	    an hour. Specifically, if the last-modified date was during
	    standard time, and the Windows machine is now observing daylight
	    saving time, or vice versa, an erroneous time zone adjustment
	    was performed. This has now been fixed.

	#242130 (Job #37007) **
	    When sorting output with 'p4 fstat -Sd' added files would not
	    be consistently ordered if the command was run at exactly the
	    same time (in seconds) as some of the other files were submitted.
	    This change considers that newly added files are not part of
	    the existing repository and hence do not have a submitted date
	    to order on, they will always appear first in the sorted output
	    list.

	#242074 (Job #38596) **
	    When 'p4 replicate' or 'p4 export' was invoked to export the
	    current journal file against a server which is running with
	    journaling disabled, the server would crash. This has been fixed.

	#242015 (Job #37481) **
	    When the job counter exceeded ten million, a server error would
	    occur trying to create the next job. This has been fixed, and
	    the job counter can now go up to 2,147,483,647.

	#241872 (Job #37934) **
	    When multiple triggers were fired by a single operation, if the
	    second trigger's command line length was exactly 1 character
	    longer than the first trigger's command line, the second
	    trigger's final argument was not properly null terminated.
	    This has been fixed.

	#241218 (Job #38024) **
	    Obliterating a deleted revision from a spec depot was issuing
	    a warning about a non-existent RCS file in the archive. This
	    warning was incorrect and has been fixed so it no longer appears.

	#241181 (Job #37822) **
	    The usage message displayed by 'p4 protects' when an invalid
	    command line switch is passed was missing the '-g' option.
	    This has been fixed.

	#241038 (Job #36180) **
	    'p4 fstat -F' gets wrong results when the filtering value began
	    with a number, but was actually a string value. The filter was
	    mistakenly performing numeric comparisons using only the numeric
	    prefix of the string, rather than string comparisons using the
	    entire string. For example, the filter '-Ol -F "digest=9"'
	    would display all files with a digest starting with a 9.

	#240993 (Job #38507) * **
	    'p4 replicate' may produce duplicate journal records as
	    output or to a subprocess if a server transaction exceeds
	    the poll time interval ('-i' option) of the replicate command.
	    Fixed.

	#240721 (Job #36004,#38389) **
	    When server command tracing is set to level server=2 or higher,
	    'p4 -Ztag counter' and 'p4 -G counter' commands were logging
	    the counter's value as an extra line of command completion
	    trace output. This has been fixed.

	#240699 (Job #36135) **
	    When a single change fires both the fix-add and fix-delete
	    triggers, the value of the %jobs% variable for the fix-add
	    trigger now correctly contains the added jobs, not the
	    deleted jobs.

	#238565 (Job #38103) **
	    Under certain conditions 'p4 login' could issue a ticket
	    to a user with a weak password even if the server security
	    level required strong passwords. In that event, the user
	    had a ticket, but could still not issue any commands.
	    Now a ticket will not be issued unless the password
	    strength is sufficient.

	#238346 (Job #37870) **
	    Users will receive a warning message when shelving a file
	    opened for edit with exclusive open (+l).

	#238025 (Job #37815) **
	    Password strength could be computed incorrectly in certain
	    circumstances when server security level is less than 2. This
	    has been fixed.

	#237764 (Job #37836) **
	    In some cases strong passwords were not being enforced
	    correctly when using command line arguments. This has been
	    fixed.

	#237028 (Job #37630) **
	    'p4 group' will no longer save a completely empty group.

	#236158 (Job #19844) **
	    This change delays a reverse DNS lookup for the trigger
	    variable 'clienthost' until it's actually needed.

	#235848 (Job #37543) **
	    'p4 diff @=<shelved change> will now show diffs for files
	    which have been opened for add and shelved against their
	    corresponding file(s) in the client workspace.

	#235845 (Job #37882) **
	    'p4 diff @=<shelved change> would show incorrect results
	    if the change contained files which were moved. This has
	    been fixed.

	#233698 (Job #12574) **
	    'p4 integ' with no rev range specified could pick a non-existent
	    base revision when the first revision of the source file had
	    been obliterated, leading to a 'missing from rev table' error
	    on resolve.  This situation will now be treated as a baseless
	    integrate, using the first available revision as a base.

	#233519 (Job #29969) **
	    'p4 sync' to a path that has been excluded from the workspace
	    yielded a "protected namespace" error instead of a "file(s) not
	    in client view" error. This has been fixed.

	#232867 (Job #37121) **
	    'p4 info' command run against a p4d server on a Windows machine
	    whose timezone name includes non-ascii characters would show
	    a server date with the timezone corrupted.  Now, any non-ascii
	    characters will prevent the timezone from being displayed.

	#232454 (Job #1870) * **
	    'p4 diff2 -q' would report the confusing message "No file(s) to
	    diff" if the files were identical. Now it will report "No
	    differing files" instead.  Users requiring the old behavior
	    for scripts or applications can set the protocol variable 'api'
	    to a pre 2010.1 value, such as 'p4 -Zapi=66 <cmd>'.

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

Major new functionality in 2009.2

	#215740 * **
	    This release brings together two commands which provide core
	    infrastructure required for replication.  These commands are
	    administrative only and should not be used without reading and
	    understanding the available documentation.

	    'p4 export' (first introduced in 2009.1) is now a fully supported
	    command for extracting checkpoint and journal meta-data out of a
	    Perforce repository.  See 'p4 help export' for more information.

	    'p4 replicate' is a new command built into the command line
	    client that polls for new journal entries from a server and
	    allows them to be played into a replicating repository.
	    See 'p4 help replicate' for more information.

	    Please see the Perforce System Administrator's Guide for more
	    details on replication functionality and usage.

	#208746 (Job #15043) **
	    Two new commands, 'p4 shelve' and 'p4 unshelve', enable
	    developers to store and retrieve files on the Perforce server
	    without submitting them.  These commands make multi-tasking,
	    code sharing, testing and review much easier and more practical.
	    Users gain access to shelved files and their content through
	    the following commands:

	        'p4 describe -S change#' displays files that are shelved
	        for the specified change (along with any diffs).

	        'p4 changes -s shelved' limits the output of the command
	        to only those changes that have shelved files.

	        'p4 fstat -e change# -Rs' displays file information for
	        those files shelved at the specified change.

	        'p4 diff/diff2/files/print' have access to shelved files
	        through the '@=change' revision specification,  where
	        'change' is the pending changelist number.

	    See 'p4 help shelve/unshelve' for more information.

Minor new functionality in 2009.2

	#220795 **
	    'p4 dbschema' (first introduced in 2009.1) is now a fully
	    supported command that reports database schema information.
	    See 'p4 help dbschema' for more information.

	#216422 **
	    The variable %changeroot% is now available to change-commit
	    triggers,  its value being the root path of submitted files.

	#215113 (Job #34319) **
	    The access time updates on users and domains/clients are now
	    tunable.

	#214910 (Job #35399) *
	    A password specified on the command line might be visible
	    in a list of processes (ps). To reduce this possibility,
	    add logic to obscure memory.

	#214697 (Job #35363) **
	    Deleting a user with 'p4 user -d' now checks for open files
	    in a separate transaction. This approach improves concurrency
	    by reducing lock duration for the other tables.

	#213147 (Job #35353, #35354) **
	    'p4 filelog' has two new flags.  The '-s' flag returns
	    a shortened form of output.  The '-c changelist#' flag restricts
	    output to files submitted at the given changelist.
	    See 'p4 help filelog' for details.

	#209865  (Job #35224) *
	    P4PORT=rsh: can now handle quoting of spaces on UNIX.
	    Use double quotes. For example, the P4CONFIG file can contain:

		P4PORT=rsh:p4d -r "root directory"

	    and "root directory" is recognized as a single argument
	    (without the quotes).  A " can be specified by using "".  Note
	    that, on Windows, the whole string (after the rsh:) is passed
	    to cmd.exe for handling, and must obey cmd.exe's quoting
	    rules.

	#205590 (Job #33826) **
	    'p4 edit' and 'p4 move' now accept a '-k' flag, which
	    updates the server so that it appears that a client
	    workspace already has the file(s) requested.  Using this
	    flag prevents files from being synced to the client workspace.

	#205204 **
	    'p4 change' now permits the owner of a pending changelist
	     to modify the User field of a pending changelist, if
	        the changelist is empty.

	#203942 (Job #32494) **
	    The client/server network connection handling has been
	    adjusted to prevent it from hanging.  The server logic has
	        been changed so that it complements TCP's send/receive buffers
	    with buffers of its own and uses polling to buffer what TCP
	    won't.  With this change, the server's "himark limit" can be set
	    arbitrarily high.

	#203415 (Job #34227) **
	    Modify the fstat filter option to support wildcard comparisons
	    for text fields.

	#201673 **
	    Two database tables, db.boddate and db.ixdate, have been
	    combined into two other tables, db.bodtext and db.ixtext,
	    to improve access times for jobs.

	#199579 **
	    New data type for jobspec fields: bulk. 'bulk' is like
	    'text' but the field contents are not indexed for searching
	    by 'p4 jobs -e'.

	#199599 **
	    Updates of the last access time for a client/label/user
	    now happens only when those tables are free to be updated.
	    If no update has happened for over an hour, the
	    update is forced (the command waits for the lock).

Bugs fixed in 2009.2

	#260664 (Job #40045) **
	    'p4 describe -s' was taking an unnecessary shared lock out on
	    the db.integed table.

	#255952 (Job #39742) **
	    A performance change has been made to reduce the number of times
	    that the db.monitor table is read when monitoring is in effect.

	#247496 (Job #39061) **
	    'p4 unshelve' could fail to unshelve moved files if the files
	    were mapped differently on the user's client workspace than
	    the shelver's client workspace. This has been fixed.

	#245854 (Job #038771) **
	    In rare cases traversing a large db.archmap table may cause
	    a stack overflow.  This problem has been corrected.

	#244299 (Job #038062) **
	    The Server's Smart Heap memory manager retained free memory
	    in an internal heap free list.  Capped the level of free list
	    memory retention to 4 Gbytes. (Windows x64, Linux 2.6)

	#244254 (Job #37717 ) **
	    'p4 change -f -s' would fail to allow a super user to
	    change the user of an empty pending change if there were
	    opened files in the client's default change. This has
	    been fixed.

	#241894 (Job #38580) **
	    A jobview filter that specified date-field > date-value would
	    incorrectly return jobs where the date-field was exactly equal
	    to the date-value (that is, the > was processed as >=).
	    This has been fixed.

	#237368 (Job #37964) **
	    Several password and security bugs that required manipulating
	    the protocol stream have been fixed.

	#237994 (Job #37073,#22531,#29638) **
	    Under certain conditions a user with admin privilege could set a
	    weak password for another user on a system with level 2
	    security. This has been fixed.

	#236925 (Job #37956) **
	    The server could crash when a table containing an invalid
	    permission was being parsed to create a spec.  Fixed.

	#235183 (Job #37752) *
	    Users could still erroneously submit unicode type files
	    to a non-unicode enabled server by locking the files
	    (via 'p4 lock') prior to submitting them. Now this
	    scenario will cause the submit to fail as it should.

	#232016 (Job #37534) *
	    Changes to the client/server network connection handling did not
	    check for certain error conditions on windows.  An application
	    could fail with the message 'WSAEWOULDBLOCK'.

	#231847 (Job #37464) *
	    Allowing the P4CONFIG file to contain tunable values caused
	    a regression on case insensitive clients (windows).  Any variables
	    in configuration files that did not exactly match the case as
	    documented would be ignored.

	#231272 (Job #37395) **
	    'p4 diff -du' would diff files that had been deleted from
	    a client workspace even if they were not opened.

	#230553 (Job #37173) *
	    'p4 replicate' when run against a Unicode mode server
	    would translate journal records into the P4CHARSET
	    specified character set which should not happen because
	    those records are expected to be in UTF 8 when loaded
	    into a replica server.  'p4 replicate' will now not translate
	    those journal records when in Unicode mode.

	#230416 (Job #37377) **
	    Users were removed from groups during upgrade to 2009.2
	    if the group db records were in 2007.2 db record format.
	    This has been fixed.

	#229997 (Job #37318) * **
	    p4 export and p4 replicate did not properly handle journal
	    file positions > 2Gbytes.  Fixed.

	#229380 (Job #37147) *
	    Significant delays occur on Windows 64 bit platforms when
	    using PowerShell with a current directory of a remote mount point.
	    Fixed.

	#229048 (Job #37229) **
	    'p4 shelve' could get confused if during its operation a
	    concurrent revert of the same data is executed.  Now the
	    the shelve command issues a warning message and terminates.

	#228752 (Job #37144) **
	    'p4 filelog -c' would incorrectly display all revision history
	    rather than starting with the revision created by the changelist
	    for each file submitted.

	#227737 (Job #37083) **
	    'p4 export -r' would not properly return large trait journal
	    records.  Extra newlines were added which would prevent
	    journal recover from working.  'p4 replicate' was affected
	    by this also.  Fixed.

	#227563 (Job #36959) **
	    'p4 diff -du' in some cases, where files from the workspace
	    were deleted through the OS, would segmentation fault..

	#225273 (Job #36644) **
	    'p4 job' would allow saving a job with a required field
	    of type 'line' even if the field had not been set. This
	    has been fixed to fail to save the job in this situation.

	#223167 (Job #32018, #33885) **
	    'p4 integ' could produce non-optimal results when processing
	    a branch view and a protection table that have many embedded
	    wildcards. Typically this manifests itself by ignoring previous
	    integration history and files that are synced on the client.
	    This condition is now correctly detected and an error message
	    output to the user.

	#222817 (Job #32962) **
	    Some complex client views, when combined with other internally
	    generated views create a map with more than 10 wild card
	    combinations.  These may crash the server, or fail to match
	    filepaths when they should. This change detects the overflow
	    and returns an error.

	#222762 (Job #36460) **
	    Commands logged by a unicode mode server into the log file
	    with long argument lists would elude the argument list, but
	    that did not understand multi-byte characters and would
	    corrupt characters around the eluded bytes.  Fixed.

	#222207 (Job #36364) **
	    Editing of a job would fail if the job contains a read-only
	    timestamp within the repeated hour of the Fall time change.

	#222099 (Job #35887) **
	    p4d could crash if an archive rcs file was missing a final
	    '@'.  Fixed.

	#221032 (Job #34579) *
	    p4 set command would not always find configuration files if
	    the P4CHARSET is set to shiftjis and certain characters
	    are in the current directory path.

	#219888 (Job #28251) **
	    Utf16 files submitted by clients older than 2007.2 could
	    be wrongly stored on the server.  These old clients are
	    no longer permitted to submit utf16 files.

	#219031 (Job #34607) *
	    On Windows platforms, files with unicode characters in their names
	    are not created with their correct names if the P4CHARSET is
	    set to a unicode charset other than utf8.  Fixed.

	#218555 (Job #19487) **
	    The server consistency checker 'p4d -xx' would report missing
	    spec and remote depot entries during the 'db.have vs db.rev'
	    check.  This fix ignores db.have entries that originate from
	    spec or remote depots.

	#217700 (Job #24167) **
	    'p4 obliterate' of a spec depot file would not remove the
	    archive file content.  Fixed.

	#217455 (Job #35714) **
	    'p4 submit' of a ktext file through a proxy when the ktext
	    file was integrated from another file which is not in the
	    proxy's cache would cause the refresh of submitted keyword
	    expanded files to fail with an Illegal operation error.
	    The submit would succeed but a subsequent sync would be
	    needed to update keyword expanded files.  Fixed.

	#217426 (Job #13033) **
	    On a non-unicode enabled server, the 'unicode' file type is not
	    supported. As from 2009.2, users can no longer submit 'unicode'
	    files.  Therefore the file type must be changed to 'text' before
	    submission.  (Prior to this change unicode files were treated the
	    same as text when the server was non-unicode anyway).

	#213786 (Job #35361) **
	    The 'p4 changes' command now completes if the number of
	    changes is greater than the setting for maxscanrows.
	    The maxscanrows check has been disabled for the db.change
	    table on this command when no filepath is specified.
	    Excessive scanning of other tables is still enforced, however.

	#213783 (Job #35349) * ** ***
	    Too many flag arguments to a command can no longer cause
	    a server or client crash.  Now limited to 20 flag arguments.

	#207848 (Job #34239) **
	    The 'p4 group/change/depot/license' commands no longer
	    crash the server if a custom field has been added to
	    the top of a spec definition (using the undocumented
	    "p4 spec" command).

	#202956 (Job #308, #14219, #14859, #18403) **
	    The 'p4 diff' command flag '-du' (unified diff output)
	    now produces diff files that are compatible with
	    patch. This fix changes the diff output to be compatible
	    with patch; adds correct handling of lines that don't
	    with a newline; and improves handling of added and
	    deleted files. Note: patch generally lacks features
	    to create or delete files, so this fix only empties
	    files, it does not delete them.

	#199648 (Job #33644)
	    The 'p4 fstat' flag '-mN' is now compatible with the
	    "-F <filter>" flag,  and no longer returns too few results.

	#199356 (Job #23215, #28804, #32354, #33268) **
	    'p4 group' now allows a member name to be used for more
	    than one type in a group. Previously, the same member
	    name could only be specified as either a subgroup, owner,
	    or user. Also, an owner was also automatically made a user
	    member of the group.  Now the same name can be used in any
	    combination of user, owner and/or subgroup. Also, a group
	    owner must be explicitly made a member by adding the
	    name to the Users field.

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

Major new functionality in 2009.1

	#177023 * **
	    The new 'p4 move' command allows for better support for
	    renaming files.  A file must be already opened for 'edit'
	    or 'add' in order to be moved.  Moved files can be synced,
	    resolved and diffed against the repository just like files
	    opened for 'edit'.  See 'p4 help move' for more info.

Minor new functionality in 2009.1

	#205042 (Job #25229) **
	    Password strength checking was not done for unicode
	    mode servers.  With 2009.1 this checking is performed.
	    Passwords will still need a roman letter in addition
	    to unicode characters, that is they can not be purely
	    non-roman letters.

	#205034 (Job #31826) **
	    Most metadata tables will now have 50% more pages cached
	    by default.

	#195179 (Job #1141, #13396, #17288) **
	    Support for external archive access with new 'archive' trigger
	    and new +X filetype modifier.  For files with the +X storage
	    modifier, the server will now run a command defined with the
	    'p4 triggers' command to access the file's content in the
	    server archive.  Note that this new functionality partially
	    addresses the above mentioned bugs but not completely.  The
	    Perforce proxy does not cache +X type files: they are always
	    delivered from the server.

	#194895 **
	    Multiple fix, form, or auth triggers with the same name
	    will now all be run.  Previously, only the first would be
	    run.  That was consistent with change triggers, but an
	    unneeded restriction.

	#193862 (Job #25041) **
	    Change p4 delete to allow 'virtual delete' -- deletion
	    of files in the depot without first syncing them into the
	    client workspace. Implemented with a new flag, -v.

	#191989 (Job #27021) **
	    The new 'p4 logtail' command returns error log data to
	    the client with an offset value for getting updates.
	    See 'p4 help logtail' for more information.

	#191795 (Job #18774, #27387) **
	    The limit on RCS files of 1.5GB has been lifted, and p4d
	    now supports arbitrarily large RCS files on server platforms
	    that support 64 bit file sizes (most all nowadays).  Further,
	    the limitation of 50M lines on any single revision has also
	    been lifted.  RCS files are used by p4d to store text files
	    revisions.

	    It is still a better idea to treat very large text files
	    as type 'ctype' (so that they are stored as compressed text
	    files on the server), but the regular text type may now be
	    used for any size file -- it may just be slower than ctext
	    to access a large RCS archive.

	#191373 **
	    p4d journal commands such as 'p4d -jr' will now honor the
	    -q flag to suppress messages.

	#190670 **
	    Commands with no revision specifier (head revision only) will
	    see an improvement in the compute phase time. By reducing the
	    amount of internal record copying lock times of certain
	    commands have been reduced as much as 10%.

	#190515 **
	    'p4 submit' now batches database updates during the transfer
	    phase.  This change improves concurrency by reducing the number
	    of lock requests.

	#190322 **
	    'p4 edit', 'p4 integ' and 'p4 revert' updates to database
	    tables have been improved by dynamically changing the batch
	    size. Previously the number of rows updated was fixed at 100.
	    In this release the update batch size is adaptively increased
	    when the database tables are busy.

	#189833 **
	    The performance of 'p4 edit' has been improved by batching
	    its updates to benefit from the internal cache and a reduction
	    in lock requests.

	#189522 (Job #32565) **
	    Modify fstat to report adds by other users when two users
	    have the same depot path open for add at the same time.
	    Prior to this change only 'p4 opened' reports this. Now fstat
	    generates a similar message.

	#186609 **
	    'p4 filelog' will automatically follow the history of files
	    that were renamed with the new 'p4 move' command.

	#183505 (Job #6603) **
	    A new flag '-u user' for 'p4 opened' restricts the output
	    to files opened by the specified user.

	#175099 (Job #21832) **
	    A new option '-z' for 'p4 verify' allows the user to choose
	    to skip verifying any duplicate archive files for that
	    command. Note that the output may report a lazy copy
	    revision if it happens to be the first revision in the
	    sort order to access a common archive file. That may
	    be confusing, but it's correct behavior.

	#166067 (Job #30784) **
	    A new flag '-T fields' for 'p4 fstat' allows the user to choose
	    which fields are included in the fstat output.
	    See 'p4 help fstat' for more info.

	#174443 (Job #31190) **
	    A new flag '-t' for 'p4 labels' allows the user to choose to
	    output the date and time of the label instead of just the
	    date.

Bugs fixed in 2009.1

	#247476 (Job #34562,#36123) **
	    Recovering from a journal which was truncated, or which was
	    unreadable due to I/O errors, could result in a crash instead of
	    an error message describing the journal file problem. Fixed.

	#216895 (Job #35295) **
	    'p4 revert' of a moved file could sometimes leave the client
	    with the 'move/delete' half of the rename.  Fixed.

	#212299 **
	    A 'change-commit' trigger could be erroneously fired during
	    submit even though the target file had been reverted.  This
	    would only happen if the files were submitted with the option
	    'revertUnchanged'.  (Job #34819).

	#208500 (Job #34730) **
	    The Perforce Server on Linux (32-bit) would fail to
	    start or log errors if a database file exceeded 2 Gbytes.
	    This platform has been fixed to correctly support large
	    files.

	#205435 (Job #32494) **
	    On certain platforms (Linux, Solaris), the client/server
	    connection could hang due to deadlock.  This change lowers
	    the 'himark' (buffer value) to prevent this.

	#205388 (Job #34466) **
	    'p4 filelog -m -i' was inconsistent in its output, this has
	    been fixed.  Previous versions would define 'maxRevs' on
	    revisions of files output rather than the files specified
	    on the file[rev] argument.  Users requiring the old behaviour
	    for scripts or applications can set the protocol variable 'api'
	    to a pre 2009.1 value for example -Zapi=64.

	#205051 (Job #32792) **
	    p4 resolve would report incorrect keyword differences
	    if either the base or theirs files were ktext files
	    which were branched from text files which had expanded
	    keyword fields as their original text forms.
	    Fixed by explicitly removing keyword expansion from ktext
	    base and theirs files during resolve.

	#200645 (Job #33896) *
	    Tagged output (or other than C++ apis) from 'p4 jobs'
	    against a unicode server with user defined fields which
	    are not translatable into the P4CHARSET could crash
	    the p4 command line or other p4 api programs.

	#200638 (Job #33983) *
	    p4 set would not allow the P4CHARSET variable to be cleared on
	    Windows platforms.  It could be set to 'none' however.  Fixed.

	#199805 (Job #32202) **
	    The fstat filter flag '-F' operators '<' and '<=' were reversed
	    in their operation behavior,  this has been fixed.

	#199277 (Job #33645) **
	    The fstat flag '-r' (reverse order) would not reverse output
	    when used with the '-Sr' (sort by revision).  This has been
	    fixed.

	#192904 (Job #32200) **
	    'p4 obliterate' was not providing accurate journal information
	    for non-key record data.  Although this doesn't break journal
	    replay,  it has been fixed for improved accuracy and diagnostic
	    benefits.

	#192695 (Job #14789) **
	    'p4 info' now reports the server IP address from the
	    license file if it is available.

	#188592 (Job #28540) * **
	    'p4 add' upon detecting a text file assigns the filetype
	    'text'.  This is not optimal for large files.  The default
	    will change to 'ctext' if the added file is greater than
	    10MB.

	#188212 (Job #28268) *
	    Undocumented 'p4d -jds' crash fixed.  This operation is
	    still not meant for regular production use.

	#168530 (Job #6390, #31344) *
	    'p4 revert' would fail to revert a file if the type changed
	    from symlink to text (or visa versa) and the contents remained
	    unchanged.

	#186041 (Job #32335) *
	    'p4 -R' would crash when reading strings with lengths in
	    the ranges: 128-255, 32768-65535. This has been fixed.

	#182939 (Job #31755) *
	    The 'p4' command would search for a P4CONFIG file from
	    the real current directory prior to the directory
	    specified with the '-d' option which could cause
	    automounter problems.  Fixed.

	#176992 (Job #31375) **
	    'p4 obliterate -y' would fail to purge a revision
	    immediately prior to a deleted revision as a result of a
	    bug introduced in 2008.1. This has been fixed.

	#172617 (Job #31503) **
	    The server could crash if the db.trigger table was locked when
	    accessed. This could happen if, for instance, the files were
	    opened by anti-virus programs examining them. Fixed.

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

Major new functionality in 2008.2

	Support for Zeroconf (service registration and discovery) * ** ***

	    Perforce servers can now register their service using multicast
	    DNS. The service type for the server and proxy is '_p4._tcp'.
	    By registering a human-readable name as a service it is
	    possible to browse for perforce servers using standard DNS
	    service discovery utilities.

	    example register

	    % p4d -0 -In "artists store" -p 4211 -r /usr/dep/art

	    example browse (using bonjour dns-sd utility)

	    % dns-sd -B _p4._tcp

	    Timestamp     A/R Flags if Domain   Service Type  Instance Name
	    15:00:03.330  Add     3  4 local.   _p4._tcp.      graphics-dev
	    15:00:03.330  Add     3  4 local.   _p4._tcp.      code-dev

	    The perforce command line also has a built-in browse command
	    'p4 browse'.

	    To establish a connection to the server using the human
	    readable name,  simply use it where you would usually specify
	    P4PORT.

	    example connect

	    % p4 -p "artists store" info

	    Although this works seamlessly on Mac OSX most platforms will
	    require some software installation or configuration to make
	    use of this new feature.  Note on linux and freebsd perforce
	    dynamically loads the avahi implementation for zeroconf services
	    rather than apple's bonjour implementation.

	    Registration is available also with p4p, p4ftp and p4web.

	    Note:  Authentication will not succeed through any process that
	           sits between the client and the server. This restriction
	           is required to prevent unauthorized server access.
	           (consequently registering p4p is generally of little
		   use). This restriction is also true when trying to
		   connect to old 2007.3 servers, since they do not have
		   the extra security protocol support.

Minor new functionality in 2008.2

	#165397 (Job #30393) * **
	    'p4 -z tag', which produces 'tagged' output like 'p4 fstat'
	    is now supported.  It has long been present but undocumented.

	#163750 (Job #29931) **
	    'p4 admin' has new command options to report the sizes of
	    the db tables, journal and log files. 'p4 admin dbstat -s'
	    reports the sizes of the db tables. 'p4 admin logstat'
	    reports the sizes of the journal, error log (if it exists),
	    and audit log (if it exists).

	#163087 (Job #8941) **
	    'p4 changes @change,@change' and 'p4 changes
	    @datetime,@datetime' have been sped up by using the db.change
	    table directly.  Apart from generally being much faster,
	    commands with this syntax will also report changes that have
	    no files attached due to obliteration.

	#161413 (Job #29930) **
	    'p4 sizes' has a new flag (-z)  which will ignore lazy copies
	    when summing up the file sizes for a path.

	#159758 (Job #26621) **
	    A new flag '-F filter' for 'p4 fstat' allows the user to limit
	    the output to files satisfying the expression given as
	    'filter'.  See 'p4 help fstat' for more info.

	#156356 **
	    'p4 sync' locking has been changed to improve concurrency
	    during very long compute cycles.  The new algorithm allows
	    for early release of locks on the db.have table.  The
	    combination of this change and #155509 should result in
	    less demand for the lock on the db.have table.

	#155509 **
	    'p4 sync' updates to the db.have table have been improved by
	    dynamically changing the batch size.  Previously the number of
	    rows updated was fixed at 100. In this release the update batch
	    size is adaptively increased when the db.have table is busy.

Bugs fixed in 2008.2

	#189734 (Job #32494) **
	    The new tcp buffer calculation could cause a deadlock in
	    client/server communications.  This problem was only detected
	    on configurations involving Solaris or Linux.  Due to the
	    complications of platform specific tcp implementations the
	    algorithm has been reworked to make allowances for certain
	    eccentricities.

	#188676 (Job #32384) *
	    'p4 resolve' using the automatic option could crash the client
	    application when running on windows.  This would only happen
	    if the 'theirs' file had been locked by another windows
	    application e.g. microsoft word.

	#188603 (Job #31933) **
	    A user with a complicated view map could crash the server
	    by creating a spec using '-i' or editing a spec to use
	    a name which contains '%%<somenumber>'. This has
	    been fixed.

	#187408 (Job #32247) **
	    'p4 opened -C' with a non existent client spec causes the server
	    instance to terminate abnormally.  Fixed.

	#185697 (Job #32178) *
	    'p4 browse' could return an invalid error message when no
	    Perforce services were available.

	#185416 (Job #32266) *
	    Setting P4CHARSET via 'p4 set' on Windows platforms
	    to an invalid value could not be reset to a correct value.
	    Fixed and P4CHARSET setting restricted to legal values.

	#185329 (Job #32255) **
	    Submitting a keyword expanded file (+k) which was integrated
	    to and resolved with an ignore (-ay) might falsely trigger
	    the tamper check reporting and fail to submit.  Fixed.

	#185198 (Job #32138) *
	    'p4 login', and 'p4 passwd' did not work on AS/400 and MVS
	    due to problems in ASCII/EBCDIC conversion. This problem has
	    been corrected.

	#187080 (Job #31946, #32428) * **
	    'p4 admin dbstat -s' and 'p4 admin logstat' could report
	    negative file size when the file size exceeds 2GB. This has
	    been fixed.

	#184476 (Job #31737) **
	    Excessive wildcard use in client views could crash the
	    ntx64/p4d server under circumstances that would be handled
	    correctly by the ntx86/p4d server. It was discovered
	    that the 64-bit version of the windows server requires more
	    stack space to perform commands involving excessive wildcard
	    usage in client mappings. This has been resolved so that the
	    ntx6/p4d process behaves similarly to the ntx86/p4d.

	#181214 (Job #31771) **
	     'p4 fstat -F' with a filter that contains a not (^) crashes
	     the Perforce server. This has been fixed.

	#183252 (Job #31952) **
	    A failure to open a temporary file during submit of a
	    compressed file could lead to a server crash.  This problem
	    could occur on a windows server only.  Fixed.

	#168149 (Job #30403) **
	    'p4 admin updatespecdepot' had a memory leak. This has
	    been fixed.

	#167560 (Job #30910) * **
	    'p4 resolve' run interactively with 'accept theirs' after
	    a 'p4 integrate -t' which will change the target file type
	    from symlink into something else did not record the new
	    file type properly such that a following 'p4 integrate -f -t'
	    followed by 'p4 resolve' would produce an error.  Fixed.
	    If an old client is used with a new server in this case,
	    the resolved file will be left read-write when it should
	    be read-only, using a new client prevents this.

	#166870 (Job #30750) **
	    'p4 annotate -i' using a revision range erroneously applied
	    that range to the source as well as the target. Now the range
	    is correctly only applied to the target, and the data
	    originating from the source will now be credited from all
	    of its revisions.

	#165299 (Job #18774) **
	    The 1.5GB maximum size for an RCS checkin has now been imposed
	    on non memory-mapped I/O available systems. Some 64-bit
	    platforms could exceed the maximum which would make file
	    archives incompatible.

	#165270 (Job #30647) *
	    'p4 sync -f' would fail to update the db.have table correctly
	    if a previous refreshed file had encountered an error.  This
	    has been fixed.

	#165134 (Job #30569) **
	    'p4 submit -t' would still submit a changelist even though
	    one of the files had been tampered with and reported to
	    the user.  This has been fixed.

	#164667 (Job #26025) *
	    'p4 tickets' would report garbage characters if p4v was
	    used to login via a ticket and the server is in unicode mode
	    with a P4CHARSET not utf8.  This fix causes the user name
	    in the ticket file to always be stored in utf8 and translated
	    as needed to P4CHARSET.  Ticket entries from old clients
	    may no longer be compatible as they may have been stored
	    with other character encodings than utf8.  When a
	    character in the ticket file can not be translated it
	    will now appear as '?'.

	#164511 (Job #30640) **
	    'p4 diff -sb' could sometimes return a confusing error:
	    "Can't find  in depot map",  this has been fixed.

	#164280 (Job #29205) **
	    Multiple integrations and resolves where an earlier resolve
	    required an edit and the later resolve(s) were 'accept yours'
	    could falsely trigger a tamper check error.  Fixed.

	#164153 (Job #30136) **
	    'p4 edit -t <filetype>' was not changing the mode of
	    the file immediately as it had in 2007.2 and earlier.
	    Fixed.

	#163731 (Job #29609) **
	    'p4 annotate' using a revision range scanned the db.rev
	    table beyond the file being annotated. This has been fixed.

	#163482 (Job #15660) **
	    The Spec depot now handles spec names with characters in
	    them that are illegal characters in the spec depot
	    filesystem.  For example ':' is a legal character for
	    a client workspace name but is an illegal character on
	    a windows filesystem.

	#163028 (Job #29993) **
	    Tagged output for 'p4 counter' did not report the value
	    of the counter being set. This has been fixed.

	#162617 (Job #30352) **
	    Tagged output for 'p4 groups -v' caused a memory leak.
	    This has been fixed.

	#162324 (Job #30404) **
	    'p4 admin lockstat' caused a small memory leak.
	    This has been fixed.

	#161719 (Job #30247) *
	    'p4 login user' against a unicode enabled server would
	    overwrite the originating users ticket rather than generating
	    a new ticket for the supplied user.  This has been fixed.

	#161285 (Job #30304) **
	    The metadata btrees may lose track of a free page
	    when a row delete causes several levels of btree nodes
	    to be freed.  This is very rare and does not damage
	    the data stored in the btree file.  Fixed.

	#159549 (Job #29916) **
	    'p4 info' using tagged protocol now reports the client's
	    current working directory.

	#158730 (Job #29951) *
	    'p4 login' could create multiple ticket entries in the
	    Perforce ticket file for the same user. This would happen
	    when executing multiple logins (mixed case username)
	    against a case insensitive server (windows).  Fixed.

	#157167 (Job #10490) **
	    'p4 labelsync' and 'p4 tag' now only require 'list'
	    permission.

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

Major new functionality in 2008.1

	Performance improvements - #135973, #149641, #148921 **

	    1) Server Lock acquisition

	        The algorithm to lock database tables has been changed to
	        prevent wedging.  Some commands,  for example 'p4 client
	        -d' need to writelock a large group of tables.  Previous
	        server versions acquired locks in a blocking fashion.  This
	        new algorithm will release previously acquired locks if
	        another command is holding onto a lock which would cause it
	        to block. After a third attempt to acquire the necessary
	        locks in this fashion fails,  the command will fallback to
	        a blocking mode.

	    2) Connection protocol * ***

	        TCP connections between Perforce processes; clients,
	        proxies and servers, now discover network buffering levels
	        and make better use of that buffer space.  Performance
	        should be improved especially for long proxy to server
	        connections.

	    3) Proxy compression (Job #16398, #28490) ***

	        Uncompress of binary files can be done on the client
	        instead of the server when the proxy is in use.  Both the
	        server and new proxy are required.

	Command improvements - #138839, #145664, #144624, #149074
			       (Job #9314, #28223, #26563, #27706,
			       #28452) **

	    1) 'p4 fstat'

	        'p4 fstat' has been optimized to reduce memory allocation
	        and improve performance.  The result of this optimization
	        is a 40% decrease in memory usage and a 30% speedup of the
	        compute phase.

	    2) 'p4 changes'

	        'p4 changes -m max <filepath>' optimization has been
	        improved for this release.  Performance of this command is
	        now less dependent on filepath depth or number of changes
	        specified.  The new algorithm makes use of a field in the
	        db.change table, which is calculated on submit or (for
	        existing changes) by a 2008.1 upgrade.

	    3) 'p4 integrate'

	        'p4 integrate' has been sped up (again), markedly in cases
	        where there is much integration history between the source
	        and the target.

	    4) 'p4 obliterate'

	        'p4 obliterate' has been sped up, sometimes significantly,
	        when obliterating many files in a repository with a large
	        db.archmap table.  (Tested with db.archmap with >100,000
	        entries.)

	New admin command - #137848 **

	        New command 'p4 admin lockstat' reports the read or write
	        lock status for each database table.

Minor new functionality in 2008.1

	#152278 **
	    'p4 protect' now allows specification of permission 'rights'.
	    Previously, 'p4 protect' only allowed using permission levels
	    which include the specified access (ie 'read') and also all
	    of its lesser permissions (ie 'read' = 'read' + 'list').
	    Permission rights make it possible to deny individual rights
	    without having to re-grant lesser rights.  The new
	    permission rights are '=read', '=branch', '=open',
	    and '=write'. This functionality was previously undocumented,
	    and is now fully supported for 2008.1.

	#151491 (Job #2362, #18057, #19935) **
	    'p4 group' fields MaxScanRows, MaxResults, MaxLockTime,
	    and Timeout now use the value 'unlimited' to specify no
	    limit for a parameter regardless of the limits
	    imposed by a user's other groups. The value of 'unset'
	    is used to specify no limit, but this will be
	    trumped by any other limit for that parameter imposed by
	    a user's other groups. Old group specs with this server
	    will have the values of 'unlimited' replaced with 'unset',
	    and members of all groups should have the same behavior
	    as before. Similarly, Timeout of '0' will be replaced
	    with 'unset', and also '0' Timeout will no longer be
	    allowed for this field (use 'unset').

	#150806 (Job #6554) **
	    A new flag '-e nameFilter' for 'p4 labels/clients/branches'
	    allows the user to limit the query using wildcards. This is
	    very useful for sites that have a large collection of these
	    domains.

	    e.g.  p4 labels -e "*sep*2000*" //depot/main/releases/...

	#146787 (Job #26473) **
	    'p4 triggers' can now make triggers on 'p4 triggers'.
	    Previously, triggers were specifically excluded to avoid
	    trouble.  If a broken trigger is installed that prevents
	    the 'p4 triggers' command from working, the only recourse
	    is to rename or remove the db.triggers file from the
	    server root directory.

	#146678 (Job #9471) **
	    'p4 jobspec' can now specify the default status for fixes
	    created by 'p4 fix' and 'p4 change'.  (It had been hardwired
	    to "closed".)  This default status is given in the jobspec's
	    Presets value for the Status field, as an optional 2nd value
	    preceded by the string "fix/", e.g. "Status open,fix/fixed"
	    makes the default value for job status "open" but fix status
	    "fixed".  The fix status replaces the job status when the
	    associated change is submitted.  The new special fix status
	    "same" leaves the existing job status in place.

	#146676 **
	    'p4 fix' and 'p4 fixes' now report the job status associated
	    with the fix in all cases.  Previously the status was
	    suppressed if it was the status "closed".

	#141168 (Job #1340) **
	    'p4 info' now reports the uptime of the Perforce Server.

	#140525 (Job #27198) **
	    The performance of 'p4 revert' has been improved by batching
	    its updates to benefit from the internal cache and a reduction
	    in lock requests.

	#140369 (Job #27287) **
	    Change-commit triggers now use a new script variable,
	    oldchangelist, to report the pre-commit changelist number.

	#138643 (Job #6096) **
	    Counters managed by 'p4 counter' can now be any string, not
	    just a number.

	#137438 **
	    After a submit has completed,  ktext files need to have
	    their digest and size recalculated.  Previously updates
	    of the db.rev and db.revhx tables happened individually
	    for each file. These updates are now batched.  This change
	    results in fewer lock requests,  potentially improving the
	    total elapsed time for submit.

	#139128 (Job #26301) **
	    'p4 fstat' has two new flags.  The '-S' flag is used to request
	    a different sort order for output.  The '-r' flag will reverse
	    the output order.  See 'p4 help fstat' for details.

	#134117 **
	    New server identification startup flags:

	    p4d -In <name>
		Specify a unique identifiable name for your server.
	        This name is visible with 'p4 -ztag info' output.

	    p4d -Id <description>
	        Specify an identifiable comment for your server.
	        This description is visible with 'p4 -ztag info' output.

Bugs fixed in 2008.1

	#179182 (Job #31775) **
	    'p4 sync -p' via the proxy did not transfer files which
	    were not in the proxy's cache.  Fixed.

	#175236 (Job #31596) **
	    When using the proxy, 'p4 print' of binary files without
	    the '-o' flag would be output as compressed and possibly
	    output twice in a row.  Fixed.

	#174121 (Job #31547) **
	    'p4 monitor' with the options '-a' or '-ae' could crash the
	    Perforce server (on windows only).  This has been fixed.

	#171553 (Job #29148) **
	    'p4 integrate' has been modified so that changes which have
	    been copied out of and back into the same branch will now be
	    candidates for re-integration into other branches.  This
	    should make synchronizing branches after forced integrations
	    easier, at the cost of scheduling extra integrations in some
	    cases.

	#168144 (Job #30753) *
	    Shell wildcard expansion on Windows can once again be disabled
	    by double quoting arguments.

	#164029 (Job #30616) **
	    Using 'p4 -x' with many thousands of files would take longer
	    due to an optimization that was made for the more general
	    use of Perforce.  This optimization became a penalty for
	    single file operations.  Fixed.

	#161164 (Job #30289) **
	    'p4 admin lockstat' had a protocol error which caused
	    p4v (and possibly other client applications) to generate
	    incorrect results if used jointly with another command
	    using tagged output. This has been fixed.

	#160022 (Job #29974) **
	    The new tcp buffer calculation could be too aggressive
	    on some platforms (causing a deadlock in client/server
	    communications).  The algorithm has been tweaked to
	    prevent this from happening.

	#158746 (Job #29943) **
	    Change #153657 introduced a regression that could cause
	    'p4 integ' to scan the db.integed table excessively.
	    This has been corrected.

	#156864 (Job #29811) **
	    'p4 integrate' of temporary files followed by 'p4 resolve -at'
	    done multiple times with the same target file before a
	    submit would not submit the final resolve but instead
	    the first resolved file.  Fixed.

	#156771 (Job #12510) **
	    Commas are no longer allowed as part of branch, client,
	    depot, or label names. Existing entities containing
	    commas in their names can still be accessed, but no new
	    clients, branches, depots or labels can be created with
	    commas in their names.

	#154569 (Job #29250) **
	    'p4 user -f' or 'p4 user -f -i' would allow creation of
	    new users with all-numeric user names. This has been
	    fixed to work as intended, which is to disallow
	    all-numeric user names.

	#153657 (Job #20413, #29176) **
	    'p4 integrate' has been adjusted to detect when a revision
	    has been integrated out and then back into the same file,
	    and to suppress integrating the later revision into another
	    file if the original revision has already been.

	#152854 (Job #28635) **
	    The proxy was storing revisions which were lazy copied
	    between different local depots in multiple locations.
	    Fixed.

	#149573 (Job #25380, #28412) **
	    'p4 change -u' no longer requires both the username and
	    workspace of the user to match those of the owner of the
	    submitted change. Now only the username needs to match.

	#149297 (Job #22108) *
	    'p4 set' will now report on the P4POPTIONS variable.

	#149109 (Job #28605) **
	    Editing a client spec form with 'p4 client' can reset
	    'LineEnd' or 'SubmitOptions' to their default values.  This
	    problem only occurred if the 'Options' field was processed
	    after either of the other two (usually through the api).

	#147069 (Job #25357) **
	    'p4 obliterate' now purges archive files in numerical order
	    rather than alphanumeric.  Removing RCS revisions in the
	    correct ascending order is much faster.

	#146485 (Job #13892) **
	    p4d will now report a non-zero exit status and a summary
	    error message of journal files skipped due to recovering
	    those files out of sequence.

	#146472 (Job #26042) *
	    'p4 set' on the Windows platform did not always find the
	    right P4CONFIG file when the P4CHARSET is set to shiftjis.
	    Fixed.

	#144699 (Job #27493) **
	    'p4 sync' to a deleted revision using tagged protocol no
	    longer reports a bogus file size in its summary data.

	#142417 (Job #452, #2061, #6339, #10563, #20914) **
	    'p4 integrate' and 'p4 diff2' could produce misleading error
	    messages when trying to explain why there was no output.
	    The most common message was 'No target files in both client
	    and branch view.'  Now this message has been augmented with
	    a number of more specific error messages, and the correct
	    argument (source file or target file) is displayed with the
	    error message.

	#142061 **
	    A user with only an unmapping access line in 'p4 protect'
	    (e.g. 'list user * * -//...') could still cause a license
	    to be consumed.  Now such a user gets the same response
	    ("Access for user 'xxx' has not been enabled by 'p4
	    protect'.") as with no access at all.

	#141985 (Job #26279, #23447, #22998, #18164, #16797, #13491,
	         #26793) **
	    'p4 help' for diff, diff2, describe, annotate, and resolve
	    have been updated to clarify the usage and behavior of
	    -d<flags> and -s<flag> diff options. The server's usage messages
	    have also been updated.

	#141042 (Job #3539, #5899) **
	    Users may now revert their own files so long as they have at
	    least "list" permission on the files to be reverted.
	    Previously 'p4 revert' required at least "open" permission to
	    revert files.

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

Major new functionality in 2007.3

	Ability to specify group owners - (Job #1591, #9600) **

	    'p4 group' has a new 'Owner' field which is used
	    to specify users allowed to modify the group
	    spec without SUPER permission. Owners may change or
	    even delete a group via the new 'p4 group -a'
	    command. Owners are members of their owned group,
	    but with enhanced privilege to also administer the group.

	Performance improvements - #122007, #124181, #124726,
	                           #128272 **

	    'p4 integrate' locking changes.

	        To improve concurrency during very long complicated
	        integrate compute cycles,  database queries have been
	        modified.  The new algorithm allows for early release
	        of locks on the db.working, db.have, db.locks and
	        db.resolve tables.  Besides a significant reduction
	        in the time that "update" commands have to wait, the
	        overall elapsed time for a branch has been reduced by
	        as much as 25%.

	    'p4 submit' locking changes.

	        A rewrite of the commit phase for 'p4 submit' in a
	        previous version improved concurrency for a number
	        of commands.  This has now been extended to commands
	        that make use of the db.counters table.  For example
	        'p4 change' can run concurrently during the first
	        (and longest) commit phase of a large branch submit.

	    'p4 sync' locking changes.

	        Sync has been modified so that during its compute
	        phase it is less likely to block commands that need
	        access to the db.resolve table.  This allows commands
	        like 'p4 revert' to operate during this time.  Also
	        initial syncs or 'p4 sync -p' operations will no longer
	        read lock the db.have table,  thus allowing concurrent
	        syncs update access to this table.

	    'p4 labels' locking changes.

	        When used with a file argument 'p4 labels' attempts to
	        cache all of the file db.rev data so that the lock on that
	        table can be released early.  Sites that have a very large
	        number of labels and run 'p4 labels <filepath>' will no
	        longer wedge the server,  only 'p4 labelsync' commands
	        will have to wait.

	    Cache management change.

	        Caching of disk pages has changed. Pages are written
		earlier to avoid writing too many pages together
		when table locks are released.  This also reduces
		memory and cpu usage by the metadata cache system.

	    TCP buffering change.

		Perforce clients, servers, and proxies will attempt
		to increase TCP send and receive buffers to 32Kbytes
		if those buffers are less than that amount.  This can
		improve network performance on high latency networks.

Minor new functionality in 2007.3

	#132766 (Job #6964) **
	    'p4 sync' and 'p4 integ' with large data sets and large
	    protections tables now consume less CPU than before.

	#132360 **
	    Protections have been tidied up in a few odd cases: 'p4 dirs
	    -H', 'p4 have', 'p4 labelsync', and 'p4 opened' now require
	    having 'list' access.

	#130733 (Job #25273) **
	    'p4 groups -v [group]' provides summary data for the named
	    group, much like 'p4 users [user]'.

	#130372 (Job #7546) **
	    Trigger standard output is now passed to the client on success
	    as well as failure.  As previously, on trigger failure an
	    error is sent to the client with the standard output embedded.
	    Now, on trigger success a message is sent to the client with
	    the standard output, unadorned.  Previously the output was
	    discarded on trigger success.  Users can force the old
	    behavior by setting the "api" protocol level to 61 or less
	    with 'p4 -Zapi=61 <command>'.

	#129728 **
	    'p4d -jc' and 'p4d -jj' now only hold read locks on the
	    database files, allowing read operations in the server to
	    continue.  The db.counters file is still locked, as it is
	    updated.

	#129045 (Job #10866) ** ***
	    Proxy will now cache files as they are submitted
	    through the proxy.  A new cache validation system
	    based on MD5 signatures is being used.  If a new
	    proxy is working with an old server, the old timestamp
	    validation is used.  Recommend running "p4 verify" to
	    assure that the p4d server has MD5 signatures computed
	    as the proxy will not validate its cache for revisions
	    which the p4d server does not have an MD5 signature.

	#127926 (Job #24825) **
	    'p4 filelog' now sports a '-h' option.  This option allows
	    the user to follow 'branch from' and 'copy from' integration
	    history.  For more details see 'p4 help filelog'.

	#125001 (Job #21537, #24909) **
	    Journal rotation with 'p4d -jc' or 'p4d -jj' is now an
	    instantaneous rename (rather than a copy) on UNIX.
	    The -z flag (compress checkpoint/journal) still copies.

	#124026 (Job #3372) **
	    'p4 protect' entries may now use CIDR syntax for
	    IP address specification.  For example "172.16.0.0/16"
	    would match all IPv4 addresses which start with 172.16.
	    You cannot combine wildcards with CIDR notation except
	    at the start to allow proxy or no proxy matching.

	#129897 (Job #25366) **
	    'p4 change' now allows the user to modify the client of
	    a pending changelist,  provided there are no open files.

Bugs fixed in 2007.3

	#159007 **
	    The 64-bit windows Perforce server version now handles
	    exceptions caused by invalid parameters. This is necessary
	    due to a change in the way that microsoft is now  handling
	    artificial C runtime faults. (Job #27279).

	#152382 (Job #29016) **
	    Sometimes 'p4 integrate' would find a distant base when
	    cherry picking revisions to integrate.  Now 'p4 integrate'
	    insists that the base be the revision before the first
	    revision being integrated when cherry picking revisions.

	#152296 (Job #28853) **
	    'p4 submit' could report "No files to submit" if the
	    combination of client mapped files and protections table
	    exceeded an internal limit.  This limit was incorrectly
	    reached on case-insensitive Servers (Windows) by repeated
	    values in a generated map.  This has been fixed.

	#149704 (Job #28659) **
	    'p4 integrate' could skip integrations in the face of
	    large branch views coupled with large protection tables.
	    This has been corrected.

	#149541 (Job #28422) **
	    'p4 integrate' could report "no permission on file(s)" if
	    the protections managed by 'p4 protect' had excessive
	    wildcards (too many ...'s in too many entries).  Now 'p4
	    integrate' should be no more sensitive than other commands to
	    the number of wildcards in protections, and in any event
	    should fail with a more appropriate message ("too many
	    wildcards").

	#145613 (Job #27892) **
	    Change #130372 caused a server with a form-out
	    spec trigger that generates standard output upon success
	    to crash when a user issued 'p4 spec' or 'p4 jobspec'.
	    Form-out trigger standard output upon success also caused
	    command-line options to be ignored during execution of
	    'p4 change', 'p4 group', or 'p4 submit' commands that fire
	    the trigger.  This has been fixed.

	#143891 (Job #27919) **
	    'p4 change' would take out unnecessary write locks on
	    certain tables. This has been fixed.

	#143551 (Job #27922) **
	    Change #142077 could cause a truncation error bug, if the
	    journal file supplied with the -J option was in a different
	    file system.  This has been fixed.

	#142077 (Job #27607) **
	    Some Unix platforms (Solaris, HPUX, AIX) would fail trying
	    to rotate the journal file.  This has been fixed.

	#141953 (Job #27585) *
	    Change #127617 caused P4EDITOR, P4DIFF, and P4MERGE
	    settings with spaces to no longer be broken apart into
	    distinct arguments on non-Windows platforms.  This has been
	    fixed.  Windows clients continue to treat all parts of the
	    command before the first +, -, or / as an executable path.

	#141402 (Job #27504) **
	    'p4 client/label/branch -d' would request write locks
	    of database tables that were not required for its
	    operation.  This has been fixed.

	#139650 (Job #26763) **
	    Rpc inbound and outbound sizes in bytes were sometimes
	    incorrectly reported as negative when server tracking
	    had been enabled. This has been fixed.

	#139099 (Job #25684, #24578) **
	    Rpc inbound size in bytes was incorrectly reported
	    to be zero when server tracking had been enabled.
	    This has been fixed.

	#138968 (Job #27061) **
	    Change #119708 introduced a regression causing
	    'p4 revert -k' to fail to report results of a
	    successful revert when using tagged protocol.
	    This has been fixed.

	#137032 **
	    Upgrading to 2007.3 will rebuild db.archmap and db.view
	    (haveMap entries).  This upgrade will fix bad data which
	    was introduced by Job #24943 and previously patched
	    on-the-fly by change #136742.

	#136601 (Job #26468) **
	    Failure to connect to a remote depot resulted in a
	    garbled error message. This has been fixed.

	#133838 (Job #25794) **
	    'p4 help protects' clarifies the behavior of
	    the '-m' flag by noting that it does not report
	    exclusionary mappings.

	#133764 (Job #26005) *
	    'p4 set -S <service>' will now print $P4AUDIT if it is set.

	#133327 (Job #25771) **
	    'p4 submit' would let you update the changelist form with
	    files not currently open for add/edit.  Although these files
	    would be ignored, the error would not be reported.  This has
	    been fixed.

	#133189 (Job #26009) **
	    The change #117342 introduced a regression that
	    would prevent the use of 'p4 login' against a server
	    that failed to find a reverse DNS entry. This has been
	    fixed.

	#132920 (Job #25968) **
	    Very small journal files concatenated together might fail
	    to replay with 'p4d -jr'.  This has been corrected.

	#130369 (Job #25408) **
	    Issuing a 'p4 unlock' of a file which someone else was
	    submitting might not always be detected.  This has been fixed.

	#130219 (Job #12532) **
	    'db.monitor' entries are not journalled but are incorrectly
	    checkpointed.  This has been fixed.

	#130201 (Job #25326) **
	    Fixed memory leak on 'p4 sizes' in summary mode.

	#129956 (Job #25373) **
	    Fixed tiny memory leak when a query string is missing
	    the right-hand side of a relational operation.

	#129950 (Job #25347, #25371) **
	    Corrected processing of search queries which contain mixed
	    case and wildcards. Searching is case insensitive.

	#129925 (Job #25349) **
	    Update the spec depot and index remaining content of jobs
	    when a field contains a word which is extremely long.
	    Note that these words will not be indexed.

	#129820 (Job #25340) **
	    'p4 change -d' would make an unnecessary scan of the
	    'db.working' table.  This could take a long time on
	    large sites with many open files.  Fixed.

	#129045 (Job #25274) **
	    'p4 sync -p' run through the proxy would update
	    the have list when the proxy needs to bring over
	    a revision from the server.  Fixed.

	#129045 (Job #23408) ** ***
	    The proxy can effectively cache files with a zero
	    modtime.

	#129045 (Job #22802) ***
	    'p4 -Zproxyverbose print' will now report if the proxy
	    cache was used to satisfy the command.

	#128995 (Job #11155) **
	    'p4 protect' now describes the 'admin' mode in the
	    comments section.

	#128595 (Job #25245, #18873, #21511) **
	    Corrected underlying issue which caused the server to
	    fail with 'integbatch: too many handles!' or
	    'syncbatch: too many handles!' errors.

	#128356 (Job #24800) **
	    A perforce server will shutdown with the message
	    "License expired" even when a new license with a valid
	    expire date is put in place (either manually or with
	    the 'p4 license' command).  This only happened if the
	    license that the server was originally started with
	    became out of date.

	#128087 (Job #17988) **
	    Failed authentication attempts are now recorded in the
	    server error log.

	#127651 (Job #10125) **
	    'p4 submit' of files imported from a remote depot could
	    fail with the following error:

	    Operation: dm-SubmitChange
	    Operation 'dm-SubmitChange' failed.

	    <filename> is missing from the rev table.

	    This has been fixed.

	#127617 (Job #690, #5297, #24174) *
	    Spaces in P4EDITOR, P4DIFF, and P4MERGE are now handled
	    differently on Windows and UNIX.  On UNIX, as before, separate
	    words are treated as the command name and initial arguments.
	    On Windows, separate words are treated as the command name
	    (with embedded spaces), until a word begins with +, -, or /,
	    which is assumed to introduce initial arguments.

	#127480 (Job #20986) **
	    'p4 diff2 -u' incorrectly included binary files,  which
	    could result in unreadable binary diffs.  This has been
	    changed.  Now binary files are only force diffed when
	    the '-t' option is used.

	#127031 (Job #23377) **
	    Server audit output '-A auditlog' could also end up in the
	    errorlog file '-L logfile'.  This was most likely to happen
	    when tracking '-vtrack=1' was enabled.

	#124983 (Job #12956, #21593) **
	    'p4 monitor show' will no longer show stale processes.
	    Those processes that never exited correctly will have
	    their status records automatically removed from the
	    db.monitor table.

	#124936 (Job #19911, #21506) **
	    %clienthost% in triggers will be replaced with the IP address
	    of the client if no reverse DNS entry is found.

	#124875 (Job #16726, #18049) *
	    'p4 sync' (and other commands) could loop if the underlying
	    filesystem had certain permission combinations, such as the
	    ability to create but not chmod a file (usually on network
	    filesystems such as samba or NFS).  This has been corrected.

	#124344 (Job #24961) **
	    Submitting a new revision to an RCS ,v file could result
	    in losing previous revisions if the file access mode had
	    been manually modified to remove the read permissions.
	    This is now prevented.

	#123740 (Job #24900) **
	    'p4 edit' of a file synced back to a point where it
	    had a different filetype than the head revision's filetype
	    would treat the file as if it were the head revision
	    type instead of the sync'ed to revision.  This typically
	    caused problems with symlinks either by not changing
	    file modes or changing the file mode of the target
	    of the symlink.

	#121849 (Job #24538) *
	    Negative numbers, or numbers which overflow into negative
	    numbers, are no longer allowed as changelist arguments to p4
	    commands. For instance 'p4 review -c 111111111111' against a
	    windows server would cause the changelist argument to overflow
	    into a negative value, resulting in the server consuming
	    excessive cpu and hanging the machine. Now this no longer
	    happens.

	#121382 (Job #24558) *
	    Pending revision entries in db.revpx, created when
	    content triggers are used, now correctly report the
	    file's size (instead of reporting size as -1).

	 #131532 **
	    Client commands originating through proxy servers are
	    now logged in the server and audit log files with
	    the proxy host/client host format.  The format for the
	    'p4 monitor show -e' now reports the client host, rather
	    than the proxy host for these same commands.

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

Major new functionality in 2007.2

	New file type 'utf16' - #119109 * ** ***

	    A new filetype utf16 has been added which is a textual
	    file type which stores UTF16 client files.  These files
	    must be valid UTF16 translatable into UTF8.  When the
	    content of these files is used in command output such
	    as 'p4 diff' that content will be in UTF8.  Only full
	    file representations will be in UTF16.  This filetype
	    works with the server in non-unicode mode as well as
	    unicode mode.  If these files are sync'ed with pre-2007.2
	    clients, they will be transferred as UTF8.  If the server
	    is in unicode mode, command output with contents from
	    UTF16 files will be converted according to the P4CHARSET
	    selected.  BOMs are needed to automatically detect utf16
	    with the 'p4 add' command.  Without a BOM, a file is
	    assumed to be in client byte order.  When a file is written
	    such as via 'p4 sync', it will be written with a BOM
	    and in client byte order.

	File type modifier '+S' enhanced - #115478 (Job #1880) **

	    The filetype modifier '+S' has now been extended to include
	    an optional numeric value that informs the server of the
	    number of file revisions to keep.

	    e.g.  p4 add -t binary+S7 foo.exe

	    In the above example as the eighth revision is submitted, the
	    first revision will be purged.  The numeric values supported
	    are 1 through 10, 16, 32, 64, 128, 256, 512.

	    Note that files with this filetype are never lazy copied. This
	    means that although space is saved when purging old revisions,
	    multiple branching of a file will result in more space used.

	    See 'p4 help filetypes' for more information.

	New 'p4 sync' option bypasses db.have updates - #111247
	(Job #22857) **

	    'p4 sync' now sports a '-p' option.  This allows the user to
	    sync files without the server keeping track of it.  This
	    option is very useful when populating  build clients or when
	    publishing content when there is no requirement for saving
	    the client workspace state.

	Performance improvements - #114771, #113299, #117618, #115072
	(Job #23907, #6837) **

	    1) Submit of branched files

	        Continuing on from the branch/submit improvements made in
	        the previous release.  The commit phase of 'p4 submit' has
	        been rewritten to improve performance during large branch
	        creation.  Most commands are now blocked for only a
		fraction of the time when compared to previous releases.
		The overall time taken to create the branch has also been
		reduced as much as 30%.

	    2) Connection protocol *

	        The Perforce connection establishment protocol and
		buffering have been adjusted to avoid the nominal 1/10th
		second delay that TCP can introduce on some operating
		systems.  In some cases, this can drastically reduce the
		time needed for a series of short commands.

	    3) <filespec>@label,@label speedup

	        Specifying revisions using <filespec>@label,@label could
	        be really slow when there is little overlap between the
	        filespec and the number of matching files in the label.

	    4) Lockmode changes on last access updates

	        The server no longer takes write locks on db.user or
	        db.domain to update access time unless the access time
	        is actually updated.

	New admin commands - #108286, #118447 (Job #19309) **

	    'p4 admin dbstat'

	        Dbstat scans the internal nodes pages of database file(s)
	        then outputs some simple statistics. The operation will
	        lock out write access to the database table during its
	        scan, so therefore it should be used with care.

	    'p4 admin updatespecdepot'

	        Updatespecdepot instructs the server to archive forms
	        into the spec depot.  This command can be very useful
	        for installations that have just enabled the spec depot
	        and want to pre-populate it with existing form data.

	    See 'p4 help admin' for more information about these
	    new commands.

	New triggers - #116132 **

	    'fix-add' trigger will be executed prior to adding a fix
	    with the 'p4 fix' command.

	    'fix-delete' trigger will be executed prior to deleting a fix
	    with the 'p4 fix -d' command.

	    'form-commit' trigger is executed after a form has been
	    committed to gain access to automatically generated fields.
	    (This trigger which was introduced in 2006.2 but undocumented
	    is now fully supported).

	    See 'p4 help triggers' for more information.

Minor new functionality in 2007.2

	#119528 (Job #14419) **
	    'p4 protect' will not allow the user to delete its last
	    'super' entry.

	#119344 (Job #23591) **
	    Content triggers can now access the timestamps on the files
	    being submitted via the 'headModTime' field in the output
	    of 'p4 fstat @=<change>'. Previously timestamp information
	    was not available until after the files had been submitted.

	#118826 (Job #1159)  **
	    'p4 change' has a new '-u' option to allow the owner of a
	    submitted change to update its description and/or jobs fields.

	#116469 (Job #202, #218, #7522, #8649, #13352, #15653, #16636,
		 #16845, #16888, #20370, #22382, #23343) * **
	    Changes to integrate and resolve.

	    'p4 integrate' now performs compatibility checking and will
	    disallow integration between incompatible types, unless the
	    '-t' flag is used.  (see chart below for type compatibility).

	    When files have been integrated with '-t',  'p4 resolve'
	    behaves as follows:

	    'accept theirs'  changes the type of the file on the client.

	    'accept yours'   reverts the type change so that the open file
	                     type will match the 'yours' file type.

	    Note, this new behaviour is also true if the user issues a
	    'p4 reopen' and changes the file open type.

	    T - Resolved as text
	    B - Resolved as binary
	    x - Incompatible types (requires 'integrate -t')

	    Compatibility:
		     text   binary  symlink  resource unicode apptxt apple
	    text      T       B        x        x       T       x      x
	    binary    B       B        x        x       B       x      x
	    symlink   x       x        T        x       x       x      x
	    resource  x       x        x        B       x       x      x
	    unicode   T       B        x        x       T       x      x
	    apptxt    x       x        x        x       x       T      x
	    apple     x       x        x        x       x       x      B

	#119955 (Job #23698, #24251, #24207, #23469, #24150) **
	    The 'p4 integrate' algorithms for suppressing reintegration
	    and for picking the optimum base, which were reimplemented
	    in 2006.1, have been tuned significantly for this release.
	    The following new changes have been made:

	    Integrating a single 'copy from' revision now gives credit for
	    all earlier revisions, so that a subsequent 'p4 integrate' of
	    any earlier revision will find no work to do.  This can only
	    come about by 'cherry picking' (providing to 'p4 integrate'
	    specific revisions to integrate).

	    Pending integration records (files opened with 'p4 integrate'
	    but not yet submitted with 'p4 submit') are now considered
	    when finding the most appropriate base.  This makes
	    integrating into a related file already opened for branch
	    possible without the 'p4 integrate -i' flag.

	    'p4 integrate' follows indirect integrations through
	    complicated combinations of merge/copy/ignore integration
	    records better.  This should result in fewer integrations
	    being scheduled, and closer bases being picked, for
	    integration between distant files.

	    'p4 integrate' could wrongly choose a base on the source
	    file after the revisions needing to be integrated if the
	    revisions needing to be integrated were before revisions
	    already integrated.  This normally only comes about in cases
	    of 'cherry picking' (providing to 'p4 integrate' specific
	    revisions to integrate).

	    'p4 integrate' in certain cases wouldn't find a base (or
	    choose a poorer base) if the source file was branched and
	    reopened for add, and then the original file was changed
	    further and branched again.

	#115979 (Job #11938) **
	    'p4 monitor terminate [id]' can now be used successfully on
	    commands that have moved beyond the compute phase of their
	    processing.  Note, that it may take up to 10 seconds before
	    the process will actually terminate.

Bugs fixed in 2007.2

	#140379 (Job #27216) **
	    When integrating between two branches separated by an
	    intermediate branch, 'p4 integrate' would conclude there was
	    nothing to integrate if the target file had merged from a
	    revision of the intermediate file that itself was a copy of
	    a revision in the source file.  This merge/copy chain is now
	    treated as a merge, not a full copy.

	#139758 (Job #27240) **
	    The p4d server on SOLARIS could intermittently terminate a
	    command due to incorrect detection of a client dropped
	    connection.  This has been fixed.

	#136754 (Job #24800) **
	    A perforce server could shutdown with the message
	    "License expired" even when a new license with a valid
	    expire date was put in place (either manually or with
	    the 'p4 license' command).  This only happened if the
	    license that the server was originally started with
	    became out of date.

	#136742 (Job #26682) **
	    'p4 obliterate' under certain conditions could purge an
	    archive file which still had lazy copies pointing to it.
	    This change prevents that from happening.

	#136614 (Job #24943, #26541) **
	    In certain cases inconsistent results depending on depot
	    path could be observed for some commands.  Typically when
	    this happened an unrestricted 'p4 sync' would bring back
	    correct behaviour.  This problem only occurred when a file
	    that had been previously synced was no longer mapped by the
	    current client view and the client path name had a '.' in
	    a significant position of its path.  This has been fixed.

	#135827 (Job #26464) **
	    The change (#120526) also introduced a regression that could
	    cause 'p4 changes' to not work correctly with the '-u' or
	    '-c' option when specifying '-m1 <filepath>'.  This has been
	    fixed.

	#135235 (Job #25662) **
	    Unintegrated revisions prior to a delete could cause
	    undesirable file re-branching in subsequent integrations.
	    This change brings back an older behavior, which is to
	    not re-branch from revisions prior to a delete when the
	    target is also deleted.

	#132978 (Job #25981) **
	    In the rare case where the Perforce Server on Windows fails
	    to create a thread,  the reason is now logged in the server
	    errorlog.  Under these conditions the server will no longer
	    try to run the command in the main parent thread,  but will
	    wait for resources to become available before executing any
	    more commands.

	#132390 (Job #25828) **
	    'p4 changes -i', 'p4 fixes -i' and 'p4 jobs -i' under
	    certain conditions could exclude changelists that were
	    integrated into the specified files.  This problem
	    has been fixed.

	#131348 (Job #25612) **
	    The Perforce Server on Windows could hang for some commands
	    when the auditlog was enabled.  This has been fixed.

	#131114 (Job #25312) **
	    The change (#117342) also introduced a regression that
	    would prevent the use of 'p4 login' (perforce tickets)
	    against a central authentication server.  This has been
	    fixed.

	#128851 (Job #24156) **
	    The server no longer exits after 10 consecutive attempts
	    to accept an incoming connection.  Usually the reason for
	    this is that the computer is under configured and its
	    simply a server resource problem.  In some cases the
	    problem can be on the client end.  Because of this the
	    server now sleeps, then continues to retry.

	#124999 (Job #17409) **
	    When the 'p4 integrate' command syncs files it will now
	    sync file deletes before adds so as to remove directories
	    in case they are replaced with normal files.

	#124947 (Job #25038) **
	    'p4 submit' would wrongly prevent a check submission
	    when a binary file is resolved due to simple version
	    updating (i.e. p4 sync to head requiring p4 resolve)
	    rather than due to 'p4 integrate'.  The submit
	    report report, "edit or revert" but the file is
	    already open for edit.

	#123381 (Job #24793) **
	    Adding a job with three strings of about 2700 characters
	    in the description could possibly corrupt the jobs index
	    btree.  Fixed.

	#123248 (Job #24711).  **
	    'p4 submit -d' would set the status field to "ignore" in
	    all jobs matching the user's JobView. Now jobs matching a
	    user's JobView are not modified when using "p4 submit -d".

	#122782 (Job #24663) **
	    'p4 submit' could fail when 'p4 integrate' mistakenly
	    attempts to branch from a deleted revision if that
	    source file was re-added and that re-added revision was
	    ignored into the target file.  Fixed.

	#122672 (Job #24270) *
	    .DS_Store files are now deleted when removing a directory.
	    (seen mainly on the Macintosh).

	#122284 (Job #24671) **
	    'p4 submit' would not always honor the submit options if
	    the change form had to be edited a second time.  This has
	    been fixed.

	#120969 (Job #24454, #24205) **
	    It is now possible to configure the filetype for spec depot
	    files by using 'p4 typemap'.

	    e.g.   TypeMap: text //spec/client/...

	    Note,  the default for spec files is ctext.  By changing the
	    creation filetype to text (like in the example above) the
	    server will not require subdirectories which can be a problem
	    with sites that have more clients than their filesystem can
	    create directories for.  When setting a filetype for spec
	    depot files only the server storage type has any relevance,
	    setting storage modifiers will have no affect.

	#120526 (Job #17862) **
	    'p4 changes -m1 <filepath>' optimization of using the db.revcx
	    table does not always perform well.  Now if the scan of the
	    db.revcx table does not find any matching files after trying
	    a pre-set number of rows it will give up and fall back to
	    using db.rev directly.

	#120385 (Job #24149) **
	    'p4 integ' could change the HaveRev to 'none' of a synced
	    file when used with a branch spec and fileset that creates
	    an out-of-order integration list.  This has been fixed.

	#119979 (Job #24335) **
	    Under certain rare circumstances the error:

	    'Database open error on db.<name>!'
	    'BTree is corrupt!'

	    Could be incorrectly displayed.  This could only happen
	    on windows servers due to an initialization problem.
	    This has been fixed.

	#119708 (Job #21679) **
	    'p4 revert -k <file>' was checking the client side file
	    when it does not need to.  Fixed.

	#119687 (Job #24079) **
	    Running p4 diff2 with tagged output would leak a small
	    amount of memory on each pair of files diffed.  Fixed.

	#119631 (Job #23077) **
	    Tagged output of p4 diff2 -q was including identical
	    files.  Changed so that with the -q flag identical
	    files are not included in the tagged output.

	#119616 (Job #23950) *
	    'p4 -d <directory>' run in unicode mode would ignore
	    the command line directory override.  Fixed.

	#119597 (Job #23999) *
	    Exif format jpeg files were added as binary rather
	    than cbinary (already compressed).  Fixed.

	#119596 (Job #24023) *
	    p4 diff -sd would wrongly report a symlink as missing
	    if that symlink's target was missing.  Fixed.

	#119245 (Job #24204) **
	    Triggers run on Unix platforms were inheriting some
	    open file descriptors from the server.  This should no
	    longer occur.

	#119012 (Job #19922, #13231, #18962) **
	    The error message and documentation have been improved for
	    'p4 change -f' to reflect which fields are read-only.

	#118635 (Job #22297) **
	    'p4 submit' could submit a branched file with a bad archive
	    entry if the source revision of the branched file is purged
	    before the submit is completed. This has been fixed.

	#118282 (Job #24104) *
	    Hostname lookups that succeed without returning an address
	    will no longer cause the client to crash.

	#118102 (Job #24116, #24081, #24447) **
	    Error-handling for the spec commands has been improved to
	    not allow the mutually exclusive '-i', '-o', and/or '-d'
	    flags to be used together in one spec command. Previously
	    wrong errors may have been generated, and in some cases the
	    command may have executed using any one of the flags.

	#118064 **
	    'p4 obliterate' no longer reports delete revisions in the
	    list of revisions being "purged".  The "purged" message
	    is now reserved for the act of removing file contents from the
	    archive.

	#118057 (Job #23536).  * **
	    'p4 submit' with the 'revertunchanged' submit mode would fail
	    to reset the client file permissions.  This has been fixed

	#117730 (Job #16296) **
	    p4 job -d will only delete jobs that have no associated
	    pending or submitted fix records.

	#117342 (Job #16707, #18349) * **
	    Different values of P4PORT for the same server instance
	    e.g. (ip:port# vs host:port#) would result in multiple
	    ticket entries in the Perforce ticket file. This has
	    been fixed so that the same server instance will always
	    produce a single ticket entry that either P4PORT value can
	    use.

	#117090 (Job #23953) **
	    'p4 integrate' between two deleted files would give a bogus
	    error message about permissions.  Now it more properly says
	    "all revision(s) already integrated."

	#116771 (Job #23915) **
	    'p4 obliterate file@change' of a file opened for add would
	    remove the open record, while 'p4 obliterate
	    file@change,change' would not.  Now neither does: to remove
	    an open-for-add record you must use 'p4 obliterate file'
	    without a revision.

	#116451 **
	    Superusers can now delete protected counters using
	    'p4 counter -f -d'.  Previously they could be set,
	    but not deleted.

	#116428 (Job #15562, #23777) **
	    Syncing between revisions where the revision on the client
	    was binary+w (or other non-text types) and the new revision
	    was binary would incorrectly fail with a "Can not clobber"
	    message.  Also, if a client had a writable file not
	    controlled by Perforce and that file is then added by
	    another client as a +w type Perforce would overwrite
	    the file when syncing.

	#116173 (Job #14880) **
	    Failed trigger of type 'change-content' would leave edited
	    files on the client workspace in a read-only state.  This
	    has been fixed.

	#116113 (Job #15520) * **
	    Providing the security level permits it, expired perforce
	    tickets no longer override valid P4PASSWD settings.

	#115153 (Job #23630) ** ***
	    It is no longer possible to start more than one Perforce
	    Server or Perforce Proxy Server on the same TCP port on a
	    Windows platform. Now such attempts will correctly report
	    that the address is in use.

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

Major new functionality in 2006.2

	Client file tamper checking - #101065, #101345, 101699
				      (Job #17607, #15928, #15654,
				      #20029, #20587) * **

	    'p4 submit' will now check that files integrated and resolved
	    with 'am', or 'ay'  are not modified after 'resolve' and
	    before 'submit'.  If such tampering is detected then an error
	    will display the modified file and request that the file be
	    re-edited or reverted in order to complete the submit.

	    e.g.

	    //client/main/foo tampered with after resolve - edit or revert.

	    To check for tampered files before submitting, 'p4 diff -sb'
	    will now report files which are open for integration and have
	    been resolved but have been modified.  These files can be
	    reopened for edit with the command
	    'p4 diff -sb | p4 -x - edit'.

	    Note that in order for tamper checking to work with files
	    resolved with 'am', a 2006.2 client as well as the server
	    is required.

	    Tamper checking for branch/sync files and resolve 'at'
	    files is not done at submit time, but 'p4 diff -sb' will
	    report those files.

	    Tamper checking is not done on files imported from a remote
	    depot.

	New client option 'SubmitOptions' - #106812 **

	    The new 'p4 client' field 'SubmitOptions' allows the user to
	    alter the behavior of submit.  The six different values for
	    this field affects what happens to unchanged files and if
	    submitted files are reopened.  For more details see 'p4 help
	    client'.

	    SubmitOptions             unchanged       submitted
	    value                     files           files
	    ----------------------------------------------------
	    submitunchanged           submitted
	    submitunchanged+reopen    submitted       reopened
	    revertunchanged           reverted
	    revertunchanged+reopen    reverted        reopened
	    leaveunchanged            left open
	    leaveunchanged+reopen     left open       reopened

	    In addition 'p4 submit' now sports a '-f option' flag.  This
	    allows the user to override the SubmitOption which is set in
	    the client.

	    e.g.  p4 submit -f leaveunchanged

	Speedup of 'p4 submit' branched files - #101435, 107393 **

	    The time taken to update the metadata (locking db.* files) has
	    been reduced by as much as 40% by a combination of the
	    following changes.  The biggest reduction is seen when
	    submitting a large number of branched files.

	    1) db.archmap table replaces db.archive

	        An earlier version of the server improved obliterate
	        performance by introducing the db.archive table.  A side
	        effect of introducing this table was a performance penalty
	        when submitting files that resulted in lazy copies.  This
	        table has now been replaced with the db.archmap (archive
	        map) table that does not suffer the same performance
	        problem.

	    2) buffered journal file

	        Performance has generally been improved by optimizing the
	        way that journal records are written.  This change reduces
	        the number of writes and the number of locks taken against
	        the journal file.

	'Automatic' labels - #107125 (Job #20887) **

	    The new automatic label feature introduced in 2005.2 but
	    undocumented is now fully supported.  By adding a "Revision"
	    field to the label specification you can now make that label
	    appear as if 'p4 labelsync' had been done on the label using
	    that revision.  The only difference is that if the "Revision"
	    specification is dynamic (e.g #head) the apparent contents
	    of the automatic label will change, while a static label set
	    with 'p4 labelsync' will not.  Note that when executing the
	    command 'p4 labels <filespec>' automatic labels will not be
	    displayed.

	Improved management of remote depots - #106497, #100829, #108461
					       (Job #19730, #18694, #14896,
					       #22146) **

	    Several changes have been made that improve the management
	    and interoperability of remote depot servers.

	    1) Better lock support

	        The server no longer locks the db.rev (or db.revhx and
	        db.revcx) tables when accessing only files in a remote
		depot.  This means that using 'p4 dirs' on a remote depot
		(often by expanding a remote folder in p4v) will no longer
		hold local locks.

	    2) MaxScanRows/MaxResults support

	        Remote depot operations are now subject to MaxScanRows and
	        MaxResults limitation imposed by 'p4 group' on the remote
	        user 'remote'.

	    3) Protocol to negotiate table version.

	        By negotiating the highest level for table compatibility
	        several problems have been solved.  Previously, files with
	        some complex type modifiers (like text+Fk) could not sync
	        from remote depots.  The negotiation allows for new fields
	        like the file size to be included in data transfer from the
	        remote server ('p4 sizes' will work with remote depots).

	New MaxLockTime in 'p4 group' - #106371 (Job #21206) **

	    'p4 group' now has a 'MaxLockTime' field,  which can be used to
	    prevent queries from holding locks on database tables for too
	    long.  See 'p4 help maxLockTime'.

	Improved license file handling - #103739 (Job #1948) **

	    The new 'p4 license' administrator command allows a user with
	    'super' access to add a new license file to Perforce without
	    having to shutdown the server.  See 'p4 help license' for
	    additional information.

Minor new functionality in 2006.2

	#112275 (Job #3582) **
	    Journal files now contain lines that demark rows written under
	    a single database lock, to better support tools that parse it.

	#107394 **
	    'p4 obliterate' has been changed for this release.  Obliterate
	    now makes use of the db.archmap (archive map) table to check
	    for branched files (lazy copies).  If lazy copies exist then
	    the archive (file contents) will not be removed, consequently
	    obliterating a file does not guarantee that the corresponding
	    archive file is removed.  See 'p4 help obliterate'.

	#107110 (Job #21543, #22756) **
	    Files are now stored in the database archive keyed to the
	    filename and (pending) change number, rather than filename
	    and revision number.  This information is normally only ever
	    reported to users by the 'p4 obliterate' command, but
	    administrators who examine the archive will notice the change
	    as well.  Note that old revisions in the archives will not
	    be renumbered.

	#107943 (Job #18440) **
	    Resolve conflict markers will now use whole paths
	    to indicate file names and revisions.  The ORIGINAL
	    and THEIRS files will be in depot syntax while the
	    YOURS file will be in client syntax.

	#107082 (Job #3271) **
	    The new 'p4 sizes' command displays size information for
	    files in the depot. It is functionally similar to the UNIX
	    'du' command.  See 'p4 help sizes' for additional information.

	#106450 (Job #258) **
	    'p4 submit' now sports a '-d description' option.  This allows
	    the user to submit files without the need for a changelist
	    dialog.  See 'p4 help submit'.

	#105638 (Job #10664, #19802) **
	    'maxScanRows', which can be applied via 'p4 group' to prevent
	    users from consuming too much server resources, has been
	    extended to a number of additional commands and tables.

	    Previously, it only applied to the db.rev, db.revhx, and
	    db.revdx for all commands and the db.revcx table for 'p4
	    changes'.   Now it applies to all tables for the p4 annotate,
	    branches, change, changes, clients, describe, diff, diff2,
	    filelog, files, fixes, fstat, have, integrate, integrated,
	    jobs, labels, labelsync, lock, obliterate, open, opened,
	    release, reopen, resolve, resolved, reviews, sync, and tag
	    commands.

	    maxScanRows applies separately to the number of rows read
	    from each table, not the total from all tables.

	    The most visible effect of this change is that 'maxScanRows'
	    will limit access to the db.integed table for 'p4 integrated'.

	#102279 (Job #6053) **
	    'p4 branches/clients/labels' now sports a '-u user' option.
	    This flag limits the command output to those owned by the
	    specified user only.

	#101906 (Job #10634, #21275) **
	    'p4 changes -s pending' now allows a filepath where previously
	    it didn't.

	#98791 (Job #19375) **
	    The Perforce Server on Windows now uses native I/O routines
	    for database access rather that using the POSIX layer.  This
	    fixes the problem of hitting the maximum number of open POSIX
	    file handles.

	#121930 (Job #24586) **
	    'p4 verify -v' on Windows could leak file handles when
	    encountering missing or corrupt revisions in RCS archive files.
	    This has been fixed.

	#121180 (Job #24532) **
	    Under very rare circumstances of data in a btree,
	    which are more likely just after a checkpoint restore,
	    a btree record insert could cause the server to loop
	    forever.  Fixed.

	#120458 (Job #24389) **
	    'p4 resolve' used interactively resolving a ktext file
	    with 'ay' i.e. accept yours would incorrectly report
	    the resolved file as being tampered with at submit time
	    or with 'p4 diff -sb'.  Fixed.

	#119263 (Job #24236) **
	    'p4 obliterate' could leave database files in an inconsistent
	    state.  This could only happen if the user hit ^C or the
	    command 'p4 monitor terminate <pid>' was used during the
	    processing of the obliterate.  This has been fixed.

	#116847 (Job #23776) **
	    p4 submit would fail for files reopened by a previous
	    p4 submit with a reopen option if those files were
	    branched by the earlier submit.  Fixed.

	#114374 (Job #23004) *
	    When p4d is in unicode mode, and the p4 command line
	    has P4CHARSET set to a wide character set (i.e. utf16)
	    and P4COMMANDCHARSET set to a character set other than
	    utf8, p4 commands to edit specifications would interpret
	    those specs as utf8 instead of the P4COMMANDCHARSET.
	    Fixed.

	#113270 (Job #23258) **
	    Files changed from type ktext to text would be stored
	    at the server with the keywords unexpanded even if the
	    files had been submitted with the keywords expanded.
	    This behavior, present only in release 2006.1, has been
	    fixed.

	#112219 (Job #23211) **
	    'p4 describe -s' would fail if the change contained a file
	    in which the file's previous revision had been obliterated.
	    This behavior has been fixed.

	#112011 (Job #22578) **
	    'p4 change -o' with tagged output would not see any
	    modifications made by a form-out trigger.  This has been fixed.

Bugs fixed in 2006.2

	#111144 (Job #22987) **
	    'p4 describe' on a change where an affected file's previous
	    revision has been deleted could report incorrect differences.
	    This case is now correctly handled by displaying an error
	    message instead.

	#110722 (Job #22731) **
	    'p4 protects' command now displays an error message if the
	    protections table is empty.

	#110294 (Job #22537) **
	    'p4 login <user>' which requires 'super' privilege can change
	    the impersonated user's current session timeout.  This has
	    been fixed.

	#109913 (Job #18387) *
	    The cygwin 'p4' client program had trouble creating a
	    directory if there was an executable by the same name in the
	    parent directory.  This was due to the way cygwin makes "foo"
	    and "foo.exe" look the same.  Now the 'p4' client program
	    handles this case.

	#109855 (Job #18182, #10561, #19916) **
	    Excessive wildcards (... and *) in client views, in branch
	    views, in the protection table, and on the command line could
	    cause the server to consume a lot of memory and time trying
	    to work out all the possibilities.  An efficient algorithm
	    has been put in place that simplifies this work, and so such
	    use of wildcards should not cause nearly as much problem for
	    the server.

	    This problem was previously addressed in 2006.1 by enforcing
	    an internal limit on wildcard handling, but that was too
	    restrictive and the limit was removed as a patch.  A less
	    restrictive internal limit is back in 2006.2, and that limit
	    is very unlikely to be hit with the new algorithm.

	#108679 (Job #22113) **
	    'p4 filelog' can make unnecessary scans of the rev table
	    under certain conditions.  Typically this problem is
	    triggered when the file following the argument filelist
	    is excluded by a protection mapping.  Fixed.

	#108376 (Job #22332) **
	    'p4 fstat -Rn' would not filter files correctly as
	    described in the documentation. This has been fixed.

	#108292 (Job #13476) **
	    On some platforms, p4d would not start or log errors
	    if the error log file exceeded 2 Gbytes.  Fixed, now
	    log files should not have problems exceeding 2 Gbytes
	    if the platform supports such large files as database
	    files.

	#108230 (Job #22296) **
	    Corrected example trigger type in "p4 triggers" comments

	#108021 (Job #21864) **
	    'p4 integrate -f' of a deleted file more than once would
	    leave the target file in an unusable state, where 'p4 submit'
	    would say "Merges still pending" and 'p4 resolve' would say
	    "file - has been deleted - revert and sync".  Now the
	    subsequent 'p4 integrate -f' has essentially no effect.

	#107629 (Job #15878) **
	    Errors from a remote depot (most likely lack of permission
	    for the 'remote' user) were going unreported by the local
	    server.  This has been fixed.

	#107321 (Job #14726) **
	    Creating a new user with 'p4 user -f' with server security 2+
	    would result in "Bad parameters passed to mangler!" errors.
	    This no longer happens, and the user should now only get
	    the expected password error messages instead.

	#107305 (Job #9814, #17099) * **
	    Logic regarding file clobbering and symlinks has changed
	    substantially.  Syncing a symlink onto a writable file
	    should now honor the clobber client option.  If a file
	    type changes from symlink to text, the sync will no longer
	    report a clobber error if the previous symlink points
	    to a writable file.  The P4 API also changed, see the
	    p4apinotes.txt for details.

	#106098 (Job #21942) **
	    Adding a View entry to any spec form with a leading '$' will
	    result in an error and the form will not be saved. Previously
	    this would not result in an error, and the spec would be
	    saved without the entry, and also result in a bogus db.view
	    value with map state of 3 corresponding to this invisible
	    view. In the case of a branch spec, this would
	    cause subsequent attempts to integrate using the spec to
	    fail.

	#105408 (Job #19573) * **
	    Temporary file handling has changed to not fail if
	    a conflicting temporary filename already exists.
	    Temporary files are also now named using a random sequence.

	#105334 (Job #20829) **
	    Fields in spec forms (branch, client, label, etc) that have
	    a # in the value are now quoted when output, so that the #
	    is not stripped as a comment when the form is read back in.

	#105272 (Job #21901) **
	    Date fields in jobs which are set by the server will be updated
	    once after validating the job contents and again upon commit so
	    that the value will reflect the time of commit.

	#105043 (Job #21822) * **
	    Unknown field types or unknown field options in a
	    spec definition no longer cause the server to
	    abort on windows.

	#104828 (Job #20584) **
	    'p4 resolve -at' after a 'p4 integ' between files
	    where only one of the files has keyword expansion
	    as part of its type caused problems because keyword
	    expansion would be done based on the source file's
	    type, but after submit, sync would expand keywords
	    based on the target file's type leading to differences
	    which would be reported with 'p4 diff -se'.  With this
	    fix, in this case, 'p4 resolve -at' will expand keywords
	    based on the target file's type.  The proxy was also
	    caching the wrong keyword expansion which could appear
	    in other clients later sync operations.

	#104340 (Job #19220) **
	    Server lock errors "Locking failure: 'table1' locked after
	    'table2'!", and  "Locking failure: no upgrading 'table's'
	    lock!" no longer cause the server to abort. Now the error is
	    logged and will be tracked if server tracking is enabled, and
	    the server will not exit.

	#102859 (Job #7130, #18896, #17100, #2540) * **
	    A multiple resolves into the same target file revision
	    where a subsequent resolve resulted in an 'at/accept theirs'
	    i.e. a copy would cause earlier resolves to be converted
	    into 'ignore'.  Now, if you have new clients and this
	    new server these earlier resolves may be converted
	    into 'merge' if the merge system can reasonably determine
	    that no work is lost.

	#100946 (Job #12339, #13329) **
	    'p4 integrate' will now integrate into files already opened
	    for add/branch/import.  The action (add/branch/import) doesn't
	    change, but a merge for 'p4 resolve' gets scheduled.  This
	    is the same behavior that has been available with files
	    opened for edit/integrate.

	#100886 (Job #20653) **
	    'p4 integ -b' failure caused by invalid view mappings
	    is reported more accurately. If the failure is caused by
	    invalid havemap entries, the error will not be erroneously
	    reported as invalid overlay mappings.

	#100847 (Job #21172) **
	    The # (comment) character in specs is now treated more
	    consistently: it never introduces a comment in text blocks,
	    and always introduces a comment in non-text block values.

	#100814 (Job #2146) **
	    'p4 client -d -f <name>' will now delete pending changelists
	    created by the named client and also delete any fix records
	    associated with it.  The -f flag is now always required when
	    deleting a client that has a numbered pending changelist
	    associated with it.

	#100613 (Job #5422, #7152, #12904, #21751) **
	    / is no longer allowed in client or depot names.  Because
	    of the way Perforce manages views, having a / in the name
	    can cause data inconsistencies.  Now / is simply disallowed.
	    Most other entities (branches, labels, jobs, etc) can still
	    have a / in them.

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

Major new functionality in 2006.1

	User file access tracking - #99426 **

	    The server can now log individual file access to an audit
	    logfile.  When auditing is enabled the server logs every time
	    file content gets transferred to the client. Consequently this
	    file will get large very quickly and there may be a small
	    performance impact.

	    To enable this feature:

	    % p4d -r /usr/perforce -A auditlog

	    Example output:

	    2006/05/09 09:52:45 karl@nail 127.0.0.1 diff //depot/src/x.c#1
	    2006/05/09 09:54:13 jim@ston 127.0.0.1 sync //depot/inc/foo.h#1

	    This was undocumented functionality in the 2005.2 release, but
	    is now fully supported.

	'p4 integrate' improvements - #96464 (Job #413, #17318, #17577,
				      #17751, #18293, #20006) **

	    'p4 integrate' has been rewritten to improve three areas,
	    mostly with respect to indirect integration (when there is
	    no direct relationship between source and target):

		1) Better performance, especially when faced with rich
		   branch history and many out-of-date files;

		2) Better recognition of previous integrations, resulting
	           in fewer merges;

		3) Better base selection, using a "closest ancestor"
		   approach, resulting in simpler merges.  The previous
		   logic almost invariably stuck to the source file when
		   selecting the base.  Now any revision of the source,
		   target, or indirectly related files is a candidate,
		   with the revision that shares the most changes with
		   both the target and source being selected.  As before,
		   'p4 integrate -o' and 'p4 resolve -o' report the
		   selected base.

Minor new functionality in 2006.1

	#99037 (Job #20692) **
	    'p4 integrated -b branch' now uses the branch view more
	    efficiently to limit the number of integration records that
	    have to be scanned.

	#96538 **
	    Minor 'p4 integrate' fixes with respect to deleted revisions:
	    'p4 integrate -Di' now attempts to integrate all outstanding
	    revisions of a file that has been deleted and re-added, rather
	    than only those revisions since the last add.  Previously
	    '-Di' would find a base prior to the add but would only give
	    credit for the revision after the add.  'p4 integrate -d'
	    now implies 'p4 integrate -Di', as 'p4 help integrate' seems
	    to have suggested.

	#95979 **
	    The merge algorithm has been rewritten.  It now produces
	    fewer conflicts to resolve, making automatic merging ('p4
	    resolve -am') more likely to succeed. Also, it is now better
	    able to recognize identical changes that have been made in
	    'theirs' and 'yours' files.  This should reduce the chances
	    of getting duplicate inserts and generally improve merge
	    output.

	#95535 (Job #19994) *
	    Clients operating in unicode mode with utf8 as their
	    character set will now validate that data going to the
	    server is valid utf8 and will error if it is not.
	    New P4CHARSET options allow unvalidated operation.

	#93413 (Job #20097, #18869, #17246) **
	    The 'monitor' counter now reflects the level of monitoring
	    that the server provides. '0' and '1' are unchanged from
	    from their current behavior of no monitoring or monitor
	    running commands respectively. '2' also reports on idle
	    processes that have run at least one command. Changes to
	    the monitor counter requires a restart of p4d.

	#91389 **
	    'p4 submit' has been modified to improve concurrency through
	    better database locking.

	#90477 **
	    The following 'p4' commands now sport a '-m max' option:
	    'branches', 'clients', 'diff', 'fixes', 'fstat', 'groups',
	    'labels', 'opened' and 'users'.  When this option is
	    specified it limits output to 'max' number of entries.

	#88933 (Job #7335) **
	    'p4 groups' now has a -i flag to include subgroups when
	    listing to which groups a user or group belongs.

	#89305 (Job #2102) **
	    The new 'p4 protects' command shows the lines from the
	    protections table that affect the given user/path.

Bugs fixed in 2006.1

	#114840 (Job #23592) **
	    CPU usage has been reduced for 'p4 integrate' when it is
	    handling indirect integrations through a large number of
	    branches (hundreds or more).

	#113964 (Job #19865) **
	    Concurrent 'p4 submit -c' and 'p4 change -i' of the
	    same changelist could (under rare circumstances) leave
	    a pending change record.  Since the pending change record
	    and the submitted change record share the same description,
	    deleting the pending change would result in removing the
	    committed change description.  This has been fixed.

	#113941 (Job #23440) **
	    Unable to edit existing jobs which contain a TEXT
	    field of type always or once and were set using a
	    preset. This has been fixed.

	#113687 (Job #10201) **
	    'p4 revert -a' could delete a local (modified) file, if
	    the head revision was deleted and the client had been
	    subsequently synced.  This has been fixed.

	#113339 (Job #23307) **
	    'p4 opened -a //...' was being adversely affected by
	    the optimization in change #109212.  It is now back to
	    its previous performance.

	#113270 (Job #23258) **
	    Files changed from type ktext to text would be stored
	    at the server with the keywords unexpanded even if the
	    files had been submitted with the keywords expanded.
	    This behavior, present only in release 2006.1, has been
	    fixed.

	#112408 (Job #23191) **
	    'p4 depot' will not abort when it encounters a UNC
	    path in the Map field so long as the path also ends in
	    '...'.  UNC path handling in the depot form was broken
	    by change 93286, but it has now been fixed.

	#109659 (Job #22438) *
	    Apple file types (apple, resource, etc...) stored from
	    a PPC or classic Mac and later synced onto an Intel
	    Mac or vis versa would have their Finder information
	    swapped.  Fixed.  However, such apple files submitted
	    from Intel macs may need to be synced with an old
	    client and resubmitted with a new client to fix
	    bad Finder information.

	#109240 (Job #22460) **
	    The internal buffer on labels for 'p4 labels filespec' has
	    been raised from 10,000 to 1,000,000.  The command works
	    regardless of the number of labels being examined, but if
	    under the limit the command releases an important lock
	    (on db.domain) early, allowing other commands to run.

	#109212 (Job #22288) **
	    'p4 opened -a filename' has been sped up considerably for
	    sites with a large number of client workspaces.  Previously,
	    its performance was related to the total number of client
	    workspaces on the server, but now it is only affected by
	    the client workspaces that have the named file(s) opened.

	#108308 (Job #21706) **
	    Change 89167 introduced in r06.1 restricted the use of
	    '...' wildcards in client, branch and protections maps
	    in order to prevent excessive use of cpu and server crashes.
	    The limit imposed by that change was determined to be too
	    restrictive, so the limit was lifted.

	#108264 (Job #22306) **
	    'p4 fstat -W <filepath>' performance could be very slow if
	    a large number of files are opened.  This has been fixed.

	#107809 (Job #22198) **
	    'p4 integrate' would sometimes skip integrations when the
	    integration history involved a copy away from the target.
	    This has been corrected.

	#105845 (Job #21946) **
	    Using 'p4 diff2' with a content trigger against a pending
	    revision could incorrectly identify files as identical when
	    they are different.  This has been fixed.

	#105715 (Job #21893,#34376) **
	    Submitting a new version of a file with a pre-2003.2 client
	    would result in the wrong digest value being set. This has
	    been fixed.

	#104421 (Job #21735) **
	    Classic Mac OS clients could cause the 2006.1 p4d server
	    to exit with an error about translate paths for OS 'current'.
	    Now the server will not exit.

	#104154 (Job #21741, #21742) **
	    Memory leaks fixed.  Server leaked a small amount of
	    memory for each table opened which was modified.

	#104130 (Job #21624) **
	    p4 integrate of files with many branches and a complex
	    integration history could cause the server to run
	    out of memory.  Fixed to limit the extent and depth of
	    history searching.

	#104074 (Job #21595) **
	    The new merge code was choosing an edit over a conflict even
	    though the "theirs" edit effectively stomped on the "yours"
	    delete.  In most cases since both "yours" and "theirs" are
	    removing lines this is probably a safe thing to do, however
	    for safe merging this case will now be marked as a conflict
	    like it was in the previous release.

	#104039 (Job #21693) **
	    Integrating a ktext file to a text file resulted in bad
	    checksums when running 'p4 verify' using the initial
	    2006.1 server. Fixed.

	#103879 (Job #21587) **
	    'p4 changes -i' under certain conditions could exclude
	    changelists that were integrated into the specified files.
	    Fixed.

	#103651 (Job #21613) **
	    When a job is updated without specifying the '-f' flag, the
	    server will reject changing the value of any 'always' or 'once'
	    field to a new non-null value. If these fields are either
	    omitted or have an empty value, then the server will set the
	    'always' fields as specified in the presets or restore the
	    current values for the 'once' fields. By using this method of
	    updating jobs, an application loses the ability to have the
	    server detect potential job clobbering and will instead have
	    to implement its own method for preventing overwriting of
	    valid data.

	#103316 (Job #21578) **
	    Using an older proxy (i.e. prior to 2006.1) with a 2006.1
	    server could cause binary files to be treated like
	    text files and subject to newline translations.  Other
	    cases where filetypes get changed to text also occur.
	    Fixed.

	#103097 (Job #21451, #21589) * **
	    The new merge code was not recognizing certain cases which
	    were borderline conflicts.  This change applies a more
	    conservative approach, now choosing to throw those edge
	    cases into conflict blocks.

	#102793 (Job #21513) *
	    p4 integrate with a 'cherry picked' source range
	    might choose a bad base when a 'dirty merge' from the
	    target to the source files is present.  Fixed.
	    Similar to Job #15656.

	#102186 (Job #21467) **
	    'p4 revert -a' could incorrectly report "no file(s) opened
	    for edit".  This was introduced by change #94600 which prevents
	    file type changes from being reverted with the '-a' flag.
	    This has been fixed.

	#100015 (Job #21070) **
	    'p4 login' with a very high value for timeout would always
	    create a new server ticket, rather than extending it.  This
	    would mean that logging in from one machine would effectively
	    log you out of another.  This has been fixed.

	#99861 (Job #21033) **
	    'p4 integrate' no longer needlessly locks the db.revsx
	    table (the revision table for spec depot entries), so that
	    long running 'integrate' commands don't block spec updates.

	#99829 (Job #20599) **
	    Shell expansion of 'p4' command line arguments no longer
	    occurs when the command invokes a trigger.

	#95339 (Job #19759) **
	    p4 print without the -o option can constructively use the
	    proxy's cache now.  For this to work both the server and the
	    proxy must be upgraded.

	#94979 (Job #4169) **
	    The error "Client 'client' can only be used from host
	    'host.com'" would also be generated if the hostname was case
	    mismatched.  This check has now been made case-insensitive.

	#94951 (Job #1138) **
	    'p4 revert' has been changed to prevent a user from reverting
	    a file opened by different user.

	#94600 (Job #11390) **
	    'p4 revert -a' default behaviour has been changed so that it
	    no longer reverts files that have been opened with a different
	    type.

	#94008 (Job #20002, #9869) **
	    Starting 'p4d', or performing checkpoint, journal, or
	    recovery options on a depot with upgrade counter = 0 will
	    generate the informational message "Perforce db files
	    in 'P4ROOT' will be created if missing...".

	#93944 (Job #14864) **
	    'p4 diff -sl [ file[rev]... ]' displays unopened files with the
	    status of 'same', 'diff', or 'missing' as each file is compared
	    to its revision in the depot. When used in conjunction with
	    '-f', this command may show this diff summary for all files in
	    the file argument, including opened files.

	#93514 (Job #18555) **
	    The Spec depot now handles concurrency correctly. Multiple
	    changes to a spec occurring at the same time should no longer
	    result in missing revisions.

	#93503 (Job #20111) * **
	    The file types "text+C" and "text+F" are now treated by
	    'p4 diff2', 'p4 resolve' using merge, and 'p4 describe'
	    as text files. Now files of these types can be compared and
	    merged.

	#93286 (Job #18580, #19128) **
	    'p4 depot' will not save a depot spec unless the Map entry
 	    contains a trailing set of ellipses. The trailing ellipses
 	    is the only wildcard allowed.

	#90843 (Job #14813) **
	    jobspec fields which are specified as 'always' will have the
	    read-only nature of the field enforced by the server unless
	    the -f flag is used.  Since the server will populate these
	    fields upon commit, any user data will be lost. This behavior
	    can be used to prevent most job clobbering situations by
	    including an always field of type date (e.g., a field for
	    LastModifiedDate).

	#90571 (Job #19566) **
	    'p4 labels file[revrange]' can block other Perforce commands
	    that need to update the db.domain table.  This problem has
	    been fixed by early release of this table lock.

	#90261 (Job #19649) *
	    p4 print -o would fail when the result file specified
	    is a device such as /dev/null or /dev/fd/1.

	#89366 (Job #11188) **
	    Wildcards (..., *, or %%x) are no longer allowed to be
	    right next to each other in file arguments or views.
	    Putting them together serves no useful purpose and consumes
	    CPU as the server tries to deal with the combinations.

	#89167 (Job #18182) **
	    Excessive use of ... wildcards in client or branch mappings
	    (more than a few mapping lines with more than one ... in
	    them) could cause the server to consume a lot of memory and
	    time trying to work out all the possibilities.  Generally
	    this was not the intent of the user.  Now the server has an
	    internal limit and returns an error rather than wasting time
	    when the ... wildcard handling gets excessive.

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

Major new functionality in 2005.2

	PERFORMANCE IMPROVEMENTS

	A number of changes have been made in the 2005.2 server that
	should result in better performance at most sites.

	Optimization of head revision operations - #79472 **

	    This release adds a new table db.revdx which when combined
	    with the other head revision table db.revhx (2005.1) gives
	    faster access to the top revision required by some commands
	    e.g. 'p4 sync'.  This improvement will reduce the compute
	    phase (where locks are taken) especially where files have
	    many revisions.

	Speedup for the 'integ' command - #77216 **

	    The performance of 'p4 integ' has been improved by batching
	    its updates to benefit from the internal cache and a reduction
	    in lock requests.  Depending on usage,  performance can be as
	    much as 3 times faster than previous server versions.

	Early release of db.working/db.resolve during sync - #84071, #85678
	(Job #14146) **

	    Long running 'p4 sync' commands (compute phase) will no longer
	    block 'p4 add/delete/edit' or 'p4 revert' in most cases.

	Server Performance Tracking - #86623 **

	    The p4d server now produces diagnostic output to help identify
	    performance problems.  The new support is on by default but
	    can be turned off or adjusted with the '-vtrack=x' flag to
	    the server.  Any user commands that exceed certain thresholds
	    for resource usage (CPU, lapse time, database I/O, network
	    I/O, among other things) automatically get logged into the
	    server error log P4LOG.  The levels that can be set with
	    -vtrack=x are:

			0 turn off tracking
			1 track all commands
			2 track excess usage for a server < 10 users
			3 track excess usage for a server < 100 users
			4 track excess usage for a server < 1000 users
			5 track excess usage for a server > 1000 users

	    If -vtrack is not provided on the server command line or
	    set with P4DEBUG, the tracking level is computed from the
	    number of users listed in the server license file.

	    The exact format of the tracking output is not documented,
	    and subject to change.

	Spec depot interferes less with other commands - #86495
	(Job #18939)  **

	    Revision entries for a 'spec' depot are now kept in a separate
	    database file db.revsx, so that long running reporting
	    commands don't block updates to user/client/branch/etc forms.

	Special handling for @changelist - #85130 (Job #18689) **
	    The syntax '//path/file@change1,@somethingelse' now performs
	    better in many common cases.  Previously, the server would
	    search based on changelist number or file path according to
	    hard-coded rules.  This worked poorly in a few common cases:
	    both '//singlefile@1,@date' and '//...@5000,5001' started
	    with the wrong search.  This left users trying odd syntax
	    to second guess the server.  Now the server adaptively tries
	    searching by change number, but if that appears to be too
	    inefficient (more than 80% of the revisions not matching the
	    path), it switches to searching by path.

	Speedup for clients with many opened files - #80624
	(Job #8348, #8929, #8930, #8931, #13439, #14006, #14500,
	#16985) **

	    2002.1 and 2005.1 special optimizations were made to avoid
	    scans when accessing the db.have table with a depot file
	    argument (the db.have table is keyed on the client file).
	    This optimization has now been extended to the db.working
	    table (also keyed on the client file), and largely eliminates
	    the need for large scans when referring to a small set of
	    files.

	    Further, this optimization no longer depends on the client
	    view and db.have table being "in sync", often referred to
	    as "mapState 1".  Now the client view is augmented upon
	    upgrade to 2005.2 and every time the client view is changed,
	    and so mapState has been retired.

	EXTERNAL AUTHENTICATION TRIGGERS - #83081 (Job #2398, #6730,
	#15417) **

	External authentication support is built upon the 2004.2 support
	for ticket based authentication.  When the user issues a 'p4 login'
	request the first trigger of type auth-check is executed, with the
	user's typed password on the trigger command's standard input.  If
	the trigger successfully authenticates then a Perforce ticket is
	issued.  Similarly, when the user issues a 'p4 passwd' request the
	first trigger of type auth-set is executed to set the new password
	(after the old one has been verified with any auth-check trigger).
	The user name is available as %user% to be passed on the trigger
	command line.

    UTF-16 SUPPORT - #85454 (Job #1536) *

	When the server is in unicode mode, clients can support UTF-16
	as a P4CHARSET setting.  Details in i18nnotes.txt.

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

Minor new functionality in 2005.2

	#86443 (Job #11924) **
	    When using overlay mappings, adding a file on the overlay
	    when a deleted file is present on the non-overlay mapping
	    would give a file name changed error.  Fixed.

	#86149 (Job #18030) **
	    Jobs saved in the special 'spec' type depot are now updated
	    automatically if their contents are changed with 'p4 fix',
	    'p4 change', or 'p4 submit'.  The most likely automatic
	    changes are those to the 'Status:' and 'Date:' fields.
	    Previously the 'spec' depot was only updated by direct edits
	    with 'p4 job'.

	#85670 (Job #15369) *
	    Character set translation failures during file transfers now
	    report a line number near the first failure.  Also, we now
	    inspect the first 8192 bytes of a file to determine if it
	    is a likely unicode vs text or binary file.

	#83894 **
	    Job fields marked as being 'always' updated are now updated
	    when a fix is added or deleting to the job using the 'p4 fix'
	    or 'p4 changelist' commands, or when a changelist affecting
	    the job is submitted with 'p4 submit'.  This is in addition to
	    being updated when the job is updated directly with 'p4 job'.
	    Previously (but never clearly documented) the 'always' fields
	    were updated only upon the change of status due to 'p4 fix'
	    (with a committed changelist) or 'p4 submit'.

	#83599 **
	    The trigger names in 'p4 triggers' have been renamed so as
	    to clarify their purpose.  The old trigger names 'submit',
	    'content', 'commit', 'in', 'out', 'save', and 'delete' are
	    still recognized but the new names 'change-submit',
	    'change-content', 'change-commit', 'form-in', 'form-out',
	    'form-save', and 'form-delete' are preferred.

	#82165 (Job #15773) **
	    'p4 monitor show -e' and server log output will display a
	    version string appended to the program name. If a client's
	    version string is not available to the server (as set
	    via 2005.2+ ClientApi::SetVersion()), the version string
	    defaults to the protocolClient value.

	#80660 (Job #16132) **
	    'p4 opened -a file' and 'p4 opened -c change' have both been
	    optimized to avoid a wholesale scan of the db.working table.

	#80493 (Job #15451) **
	    The new 'p4 annotate -i' flag follow branches, just as
	    'p4 filelog -i' does.

	#78928 (Job #17244) * **
	    Unicode type files could be submitted to a depot with
	    a leading Byte-Order-Mark (BOM) which is not translatable
	    into any character set other than UTF-8.  Now, such files
	    will sync into other character sets ignoring leading
	    Byte-Order-Marks.  This may cause discrepancies with
	    p4 diff -se or -sa for such files.

	#77727 (Job #8946) **
	    The new option 'p4 add/edit/delete -n' just displays the
	    files that would be opened without actually opening them.

	#76458 **
	    'p4 sync' now sports a '-k' option.  This (keep) files
	    option updates the server so that it appears that a client
	    workspace already has the file(s) requested.  Using this
	    flag prevents files from being moved to the client workspace.

	#76292 (Job #16275) **
	    'p4 revert' now sports a '-k' option.  This (keep) files
	    option clears the open file action maintained by the server
	    but does not change files in the client workspace.

	#75760 (Job #8996) *
	    Three Russian/Cyrillic character sets added.  They are
	    'koi8-r', 'cp1251' (Windows Code Page 1251), and
	    'iso8859-5'.

	#73787 (Job #16286) **
	    'p4 annotate' now sports the -db and -dw flags from 'p4 diff'
	    et al: ignore whitespace changes, and ignore whitespace
	    altogether.

Bugs fixed in 2005.2

	#101271 (Job #21127) **
	    Memory leak fixed.  A server running with spec depot enabled or
	    additional local depots would leak memory.  Typically this
	    would be 20 bytes for each additional depot multiplied by the
	    number of file arguments.

	#99156 (Job #20905) **
	    Servers built with the SmartHeap memory manager (linux,
	    windows),  could require input from the user when the server
	    was unable to obtain more memory.  On linux this could happen
	    when the server was holding locks, which (eventually) brings
	    the server to a halt. The default behaviour has been changed
	    so that the server does not prompt when out of memory.

	#94339 (Job #20192) **
	    'p4 changes @changelist' could be slower in 2005.2 than it
	    was in 2005.1 due to an optimization intended to speed up
	    changelist ranges (@changelist,changelist).  The optimization
	    has been tuned to be no slower than 2005.1.

	#92200 (Job #19757) ***
	    The proxy would not properly expand the Date and DateTime
	    keywords for file submitted with modtimes during daylight
	    savings times while the submit actually happened not
	    during daylight savings or vis versa.  Fixed.

	#91541 (Job #19576) *
	    Temporary files were sometimes left in client workspaces
	    by MacOS X clients.  Fixed.

	#90419 (Job #19600) * **
	    'p4 -G jobs' lost the 'specdef' field when tagged output
	    for forms was implemented in 2005.2. Now this field has
	    been restored.

	#90017 (Job #16559, #18645) **
	    'p4 submit' using files with invalid or missing file
	    modification dates will no longer cause file corruption.
	    Instead, an error will be generated and the submission
	    will fail.

	#89981 (Job #19465) * **
	    Add new environment variables P4DIFFUNICODE and
	    P4MERGEUNICODE which are like P4DIFF and P4MERGE
	    for invoking external tools from the command line
	    except that when the file is of type unicode and
	    the server is in unicode mode, the character set
	    is passed as an argument to the commands those
	    variables point to.  This can allow p4merge to be
	    invoked from the p4 command line tool on UTF-16 files
	    successfully.

	#89793 (Job #19529) *
	    Arguments to commands defined in P4MERGE or P4DIFF will
	    no longer cause the commands to fail to execute. This
	    behavior was due to a short-lived bug only in the beta
	    release, and has now been fixed.

	#89471 (Job #19463) **
	    'p4 edit/delete/add' of a file in a spec depot should not
	    be allowed, this has been fixed.

	#89406 (Job #19455) **
	    Deleting a form when a spec depot has been enabled will
	    result in a server crash, this has been fixed.

	#88299 (Job #19044) **
	    The server was not updating the filesize or digest for spec
	    depot files.  This has been fixed,  older files can be updated
	    by using the 'p4 verify -u' command.

	#86806 (Job #17563) **
	    'p4 label' or 'p4 client' could cause the server to crash
	    if the label or client name contained the "%%" wildcard
	    character sequence. Now this character sequence is not allowed
	    in the name of any new labels, clients, branches or depots.
	    Any entity which already has this illegal character
	    sequence in its name is still accessible.

	#86505 (Job #15937, #17684, #18435) **
	    p4 submit -r would leave branched files read-only while
	    also open for edit.  Now such files are made read-write.
	    p4 submit -r should now leave open all submitted files which
	    remain on the client after a submit.

	#86189 (Job #18844) * **
	    p4 resolve would wrongly duplicate a common insert
	    in some cases.  Fixed.

	#85995 (Job #18780) *
	    'p4 -x <argumentfile>' would report unknown client
	    in the server log file for argument processing
	    after the first 128 arguments which are run in second
	    and subsequent commands.  Fixed.

	#85795 (Job #17823) **
	    Importing from a remote depot could result in an unusable
	    db.rev archive file. This would require a certain combination
	    of multiple integrations where the last is an ignored local
	    depot file.  Subsequent access to the newly submitted revision
	    would result in the error "Can't map //remotedepot/filename
	    to archive!".  This has been fixed.

	#85674 (Job #18652) **
	    An integrate command may miss that a delete needs to be
	    integrated when there are multiple levels of indirection
	    between the source and target.  Fixed.

	#85630 (Job #18819) **
	    A narrow performance problem involving labels, the "*"
	    wildcard, and directories with lots of subdirectories has
	    been fixed.

	#85445 (Job #18053, #18433) **
	    'p4 -R' now works with marshalled input from Ruby 1.8.x

	#84221 (Job #13451) **
	    A revision specification of @change,change against a remote
	    depot works again.  For a long time using a change number
	    in the revision syntax for remote depot files would use the
	    local change index against the remote files.  Now it filters
	    remote files using their own change numbers.

	#84221 (Job #18441) **
	    A revision specification of pattern@1,@date now uses a lot
	    less memory, related to the number of files matching 'pattern'
	    rather than all files since change 1.

	#81300 (Job #17199) **
	    Really long arguments (>2048 bytes) to 'p4 dirs' could crash
	    the server.  This has been fixed.

	#80547 (Job #17798) **
	    'p4 logout -a' now removes the ticket stored on the client
	    as well as the ticket stored on the server.

	#80127 (Job #17727) **
	    'p4 logout' can now be executed if the user has a valid ticket
	    but it has expired.  Previously the user would have to run
	    'p4 login' first.

	#76684 (Job #16957) **
	    'p4 fstat' now accepts multiple -O and -R flags.

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

Major new functionality in 2005.1

	PERFORMANCE IMPROVEMENTS

	A number of changes have been made in the 2005.1 server that
	should result in better performance at most sites.

	Speedup for the 'dirs' command - #69248 (Job #7068) **

	    The performance of the 'dirs' command is now no longer
	    affected by the number of files deleted at their head
	    revision. Since the 'dirs' command is used by GUIs such as
	    P4V and P4Win, browsing through portions of the repository
	    with files deleted at their head revision will now be
	    faster. This speedup uses the new db.revhx table.

	Speedup for the 'obliterate' command - #72594 (Job #15047) **

	    A number of changes have been made to reduce the fixed
	    overhead of 'p4 obliterate'. Now the overhead is more or
	    less relative to the number of clients and labels, rather
	    than the size of the clients and labels. Also improved is
	    the handling of lazy copies in that obliterating a revision
	    that is the source of many lazy copies no longer creates
	    many revisions in the versioned files tree. This speedup
	    uses the new db.archive table and leverages the MapState
	    simplification (see below).

	Btree passive reorganization - #68043 **

	    As updates are made to the db.* tables, the server now
	    reorganizes portions of the table as necessary to maintain
	    sorted order across contiguous leaf pages. These passive
	    reorganizations will result in better performance when
	    scanning portions of the table since physical movements
	    of the disk heads will be reduced and readahead will be
	    more effective. This feature should reduce the need to
	    periodically recreate the db.* tables from a checkpoint
	    to improve performance, but may increase the size of
	    some of the db.* tables due to the allocation of new
	    contiguous pages.

	MapState simplification - #72631 **

	    Using depot syntax for a number of commands ('p4 sync', 'p4
	    have', 'p4 fstat') has been sped up considerably in certain
	    cases. Previously, such commands were fast only if the
	    client workspace was 'in sync' with its current client view.
	    This limitation no longer applies. Now the results of the
	    first scan after changing the client view are used to avoid
	    further costly scans, whether the client is in sync or not.

	SPEC DEPOT - #69793 (Job #250)  **

	A new depot of type 'spec' archives all edited forms (branch,
	change, client, depot, group, job, jobspec, protect, triggers,
	typemap, and user) into special, read-only files in that
	depot. The files are named //specdepot/type/name[suffix];
	suffix is optionally given as the 'Suffix:' field on the
	depot form. The archived forms can be accessed as any other
	file, but there is no special provision for using the forms,
	other than using the form-specific command's -i flag (e.g.
	p4 client -i). Automatic updates to a form, such as access
	times, opened files (for changes), status (for jobs), etc,
	do not change the saved forms: only those made through the
	regular form editing commands. The spec depot was introduced
	as undocumented functionality in the 2003.2 release, but is now
	fully supported.

	PARTIAL FILETYPES - #68575 (Job #594, #4003, #6562, #6742) **

	The filetype given to 'p4 add', 'p4 edit', 'p4 reopen', and
	'p4 typemap' can now be just a partial filetype, with the
	'+modifiers' only. A partial filetype modifies rather than
	replaces the default one. For example, if a text and binary
	file are added to a location in the repository covered by a
	typemap entry specifying a partial filetype of '+l', the text
	file is added with a filetype of 'text+l' and the binary file
	is added with a filetype of 'binary+l'. See 'p4 help filetypes'
	for additional information.

	DELETE TRIGGERS - #68258 (Job #15235) **

	Complementing the spec triggers introduced in the 2004.2 release
	is a new spec trigger type of 'delete'. This trigger will run
	prior to deleting the spec. A delete trigger can be used
	to limit when a spec is deleted. For example, a delete trigger
	can be used to prevent unauthorized users from deleting jobs.

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

Minor new functionality in 2005.1

	#72238 **
	    'p4 verify' has a new flag '-m maxRevs' which limits the number
	    of revisions which can be verified.  Using this option may
	    require several iterations before each revision has been
	    processed.

	    As of change #70719 newly submitted files will have the length
	    maintained by the server.  Previous revisions will have their
	    length computed when running verify with either the '-u' or
	    '-v' option.  It is recommended for a large repository where
	    this update could take a long time to use the '-m' option
	    when updating the metadata for the first time after upgrade.

	#71026 (Job #15880) **
	    'p4 filelog' has a new flag '-L'.  This option produces long
	    output with a 250 character truncated changelist description.

	#70950 (Job #15791) **
	    'p4 changes' has a new flag '-L'.  This option produces long
	    output with a 250 character truncated changelist description.

	#70906 (Job #14912) *
	    Allow the ticket file location to be configurable.  The user
	    can now define the location of the file used by 'p4 login'
	    and subsequent connection attempts by setting the environment
	    variable P4TICKETS.  This variable, like other Perforce
	    variables can be set at the command prompt or set in a P4CONFIG
	    file or as an NT registry variable through 'p4 set'.

	    e.g	   setenv P4TICKETS /secure/myname/ticketfile	(UNIX csh)
		   p4 set P4TICKETS=c:\secure\myname\ticketfile.txt   (NT)

	#70719 (Job #15844) **
	    The server now maintains the filesize in the metadata, this
	    makes the 'p4 fstat' option '-Ol' much faster.

	#70543 **
	    Remote depot access for 98.2 and 99.1 servers has been
	    dropped.

	#70419 (Job #15810) **
	    'p4 fstat' has a new flag '-Of'.  When this option is selected
	    all revisions for the given file(s) are displayed.

	#70345 **
	    Some commands have now been given synonyms:

		synonym        command
		--------       -------
		changelist     change
		changelists    changes
		workspace      client
		workspaces     clients

	    Either name will be accepted,  however errors and form fields
	    will continue to refer to the original command name
	    irrespective of what name the command was executed with.

	#69880 (Job #15693) **
	    'p4 fstat' adds 'desc' (change description) to its list of
	    output fields.  This field will only be displayed when the
	    option to display files affected by a given changelist number
	    '-e changelist#' is specified.

	#69803 (Job #15676) **
	    'p4 opened' has a new flag '-C client' which limits output
	    to files opened by the specified client.

	#69639 (Job #15599) **
	    'p4 fstat' adds 'otherChange#' to its list of output fields.
	    This field will only be displayed if the file is opened.

	#68917 (Job #15484) **
	    'p4 fstat' adds 'digest' to its list of fields that are output.
	    This field will only be displayed when the '-Ol' option is
	    used.

Bugs fixed in 2005.1

	#89300 (Job #19381) **
	    A Perforce server running with monitor enabled could encounter
	    problems with a multi-threaded client issuing overlapping
	    requests on the same server connection.  Under certain
	    conditions this could lead to a server crash.  This has
	    been fixed.

	#86943 (Job #18960) **
	    Under rare circumstances a btree passive reorganization
	    may fail with an 'insert failure'.  Fixed.

	#86558 (Job #18951) **
	    Using mmap (memory mapped) file access for the server platform
	    AIX 5.3 has been disabled due to a problem with that O.S.
	    implementation.

	#82815 (Job #17328) **
	    Servers running on some versions of Linux prior to 2.6.11
	    could be prone to seeing sporadic zombie processes. Although
	    this is a Linux kernel bug this change provides a workaround
	    for those customers who cannot obtain a later release of
	    the fixed kernel.

	#82100 (Job #18091) **
	    Failure to archive forms to the 'spec' depot were not being
	    reported to the client application, this has been fixed.

	#81216 (Job #17960) **
	    Job fix #80169 (update db files) could be executed for each
	    database access instead of once.  Although this update should
	    not pose any problems it could slightly affect performance.
	    This has been fixed.

	#81207 (Job #17909) **
	    'p4 verify -q' would not detect a missing archive file if
	    the digest had already been computed and saved. This has
	    been fixed.

	#80631 (Job #17752) * **
	    p4 resolve or merge tools when 'accept theirs' is chosen
	    could leave a file which did not match the server's
	    version of the theirs file.  Bad auto merges are
	    also possible.  Fixed.

	#80628 (Job #17822) **
	    Upgrading to 2005.1 from a release older than the previous
	    2004.2 release could result in an incorrect value for a files
	    size being reported (p4v, p4ftp).   This has been fixed.

	#80169 (Job #17732) **
	    Upgrading to 2005.1 (this release) when the server's
	    db files were created originally by a p4d version prior
	    to 2001.1 and which a checkpoint has never been recovered
	    by a server version 2001.1 or later will have database
	    update problems.  Fixed.  Once this fixed server is run,
	    you can not run older 2005.1 servers without a checkpoint
	    recovery.

	#79941 (Job #17691) **
	    p4 filelog -i would show details of files for which
	    the user has no permissions if those files were branched
	    to files the user has access to.  Now, filelog -i will
	    silently not visit ancestor files which the user does
	    not have permission to inspect.

	#79498 (Job #14978) **
	    Application-licensed servers cannot be accessed remotely. This
	    has been fixed.

	#79322 (Job #16613) **
	    For certain client views 'p4 labelsync' could repeatedly delete
	    and add the same file each time its executed.

	#78873 (Job #13509) **
	    On some platforms (linux) with 'monitor' enabled the command
	    'p4 admin stop' could hang the server.  This has been fixed.

	#77879 (Job #17233) **
	    Indirect Integrations involving recently branched files
	    which are then deleted via integration might stop
	    propagating the delete via indirect integrations.

	#75719 (Job #16806) **
	    Under certain circumstances and on particular server platforms
	    (Solaris) the 'Options' field of a Perforce client could get
	    corrupted when being displayed. This has been fixed.

	#75711 (Job #16482) **
	    'p4 -Rc -e #changelist' could take a long time if the
	    client view prevented any of the files in the changelist
	    from being mapped.  This has been fixed.

	#74983 (Job #16300) **
	    'p4 job Job' against an NT server would override the same
	    storage used by 'p4 jobspec'.

	#74847 (Job #14524) **
	    'p4 tag' would create labels with uninitialized access and
	    modification times. This has been fixed.

	#74432 (Job #16478) **
	    Indirect integration credit was missed in certain combinations
	    of a copy from and a branch from a common ancestor.

	#74228 (Job #16031) **
	    'p4 fstat -W' has been speeded up by removing the redundant
	    db.have client file scan.

	#73742 (Job #16342) **
	    'p4 fstat -e #changelist -W' on some platforms would fail to
	    return the files opened in that changelist.  This has been
	    fixed.

	#73518 (Job #16238) **
	    The filetype option 'apple+k' would fail in previous versions
	    with the error "AppleSingle/Double corrupted". This failure
	    was due to an incompatibility between the apple resource fork
	    code and the RCS keyword substitution code.  This combination
	    is prohibited and is now rejected when trying to set it rather
	    than after submit.

	#72937 (Job #15917) **
	    Indirect integrations might schedule deletes without the
	    -Ds or -d flags when such flags would be needed.  Fixed.

	#72512 (Job #15583) **
	    Revisions for a 'group' stored in the spec depot did not
	    contain all the users added to that group only the last ones
	    added in the last update.  This has been fixed.

	#72406 (Job #15933) *
	    On Windows clients operating with character set UTF8 use
	    Unicode Windows APIs to get user related environment
	    variables and allow Perforce variables to supply these
	    environment values.

	#71608 (Job #15942) **
	    Indirect Integration credit was not given for all paths
	    when more than one credit path shares intermediate
	    credit paths indirectly resulting in some unnecessary
	    integrates being scheduled or base files for merging which
	    are older than needed.  Fixed.

	#71169 (Job #15712) **
	    The 'Timeout' field which can be set by 'p4 group' was not
	    allowing a value of 0 (no timeout).	 This has been fixed.

	#70975 (Job #11839) **
	    Starting p4d as a service on NT would fail if upper case
	    was used for the executable name.  Fixed.

	#70890 (Job #15719) **
	    'p4 integ' would schedule integrations which are not needed
	    when the source was a copy integration from a third file
	    which was edited into the target.

	#69841 (Job #15602) **
	    A trigger on 'p4 change' wouldn't fire on 'p4 change -s',
	    which is used by p4win.  Now it does.

	#68886 (Job #15469) **
	    'p4 login' IP based tickets would not work against a central
	    authentication server. This has been fixed.

	#67888 (Job #15265) **
	    If a post-submit trigger fails then the server can incorrectly
	    issue the message "Submit validation failed -- fix problems
	    then use 'p4 submit -c <changelist>'". If no ktext files are
	    refreshed during the submit then no error message is seen at
	    all.  This change fixes both these problems.

	#67042 (Job #15175) **
	    p4 sync <filespec>#none no longer changes permissions
	    on symlink target files (Mac OS X and Darwin only).

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

Major new functionality in 2004.2

	SECURITY LEVEL (Authorization and security levels)

	The new security features introduced in 2003.2 but undocumented
	are now fully supported.

	Most of the changes are built upon the existing system which when
	used correctly provide adequate protection for most development
	environments.  However, this system did not provide for password
	enforcement, password strength enforcement and allowed unsafe
	practices to be established.

	2004.2 introduces the concept of a perforce server security level,
	basically the higher the level the greater level of enforcement. In
	some cases enforcing a greater security level will make the usage
	too restrictive for some sites where it simply isn't necessary.

	The new security features do not offer native data encryption. As
	in previous versions, Perforce recommends SSH or VPN as a means of
	access over insecure networks.

	Setting a security level:

	To provide backwards compatibility the default setting for security
	allows similar authorization as previous versions.  To set a
	security level in the server a super-user must set the new
	'security' counter into the system:

	e.g.  p4 counter -f security 1	(server must be stopped/restarted)

	The following is a list of the values and their action.

	security     feature/function

	0 (unset)    * 'p4 login' support.

	1	     * 2003.2+ clients enforce passwords
		     * 2003.2+ clients require strong passwords

	2	     * cannot modify password through 'p4 user'
		     * cannot modify password through 'p4 passwd -O -P'
		     * pre-2003.2 clients cannot set password
		     * pre-2003.2 clients cannot use login
		     * unverified strength passwords must be changed
		     * passwords no longer stored/retrieved from registry
		       (NT)

	3	     * 'p4 login' tickets are the only way to connect to
		       a server, passwords are no longer accepted.

	NEW LOGIN/LOGOUT COMMANDS PROVIDE PERFORCE ACCESS THROUGH TICKETS

	    The new 'p4 login' command allows a user to establish an
	    authorized connection to the Perforce server by a ticket
	    granting mechanism.  A session can be terminated by issuing a
	    'p4 logout' command.  See 'p4 help login/logout' for usage.

	    New field 'Timeout' in 'p4 group'

	    'p4 group' now has a 'Timeout' field, which can be used to
	    change the default (12 hours) login timeout value for a group
	    of users.  This value represents the number of seconds that an
	    issued ticket from the server will be valid for.

	NEW TRIGGER SUPPORT (mid-submit, post-submit and forms) (Job #796,
	#1651, #9738, #10536)

	    'p4 triggers' now supports mid- and post-submit triggers in
	    addition to the existing pre-submit ones.  mid-submit triggers
	    happen after file transfer and use a limited set of commands
	    to access the file content via the special revision
	    specification @=change, where change is the pending changelist
	    number.  post-submit triggers happen after the commit and
	    therefore cannot stop the operation.  (Job #1651, #1929,
	    #11861)

	    Also, 'p4 triggers' supports triggers on all forms (like 'p4
	    branch' and 'p4 user').  There are three triggers available:
	    'out', 'in', and 'save'.  An 'out' trigger is run when
	    the form is generated; an 'in' trigger is run when the form
	    is being saved, but before the server parses it.  Both 'out'
	    and 'in' can modify the form.  A 'save' trigger is run after
	    the form is parsed and validated by the server.  A 'save'
	    trigger cannot modify the form.

	NEW INDIRECT INTEGRATION DEFAULT

	    'p4 integrate' now always considers indirect integrations
	    through intermediate branches when determining that
	    files are related and what changes need to be integrated.
	    The direct/indirect option in branch specifications has
	    been removed as all integrations will be considered
	    indirect.  Related is that 'p4 integrate' may select a
	    base for merge resolution from a common ancestor which
	    is neither the source nor the target file.

	NEW SMART RESOLVE LOGIC

	    Conflict resolution with 'p4 resolve' has been changed.
	    The new logic reduces conflicting regions with more
	    complex detection of commonality of changes.

	FILEPATHS THAT CONTAIN CHARACTERS @#%* CAN NOW BE ADDED TO DEPOT
	(Job #1339, #13270)

	    Previously the special characters "@#%*" could not be included
	    in a file submitted to the repository, instead an error would
	    be generated.

	    As of this release the Perforce command 'p4 add -f' will allow
	    these special characters to be included as part of a filepath.
	    Without the '-f' option an error message will be generated for
	    files containing wildcards.

	    Once added these files can only be referred to in their
	    formatted syntax.  For example 'p4 add foo#bar' will result in
	    a file being submitted under the formatted name 'foo%23bar',
	    notice that the '#' gets translated to its ascii hexadecimal
	    represented value '%23'.  The syntax to edit the file once it
	    has been submitted would therefore be 'p4 edit foo%23bar'.
	    Perforce commands like 'p4 have' and 'p4 fstat' will show both
	    formatted and local (filesystem) names.  These filenames will
	    of course be expanded back to their original submitted name
	    when synced down onto client machines.

	    Note that due to this change, the wildcard %d used in
	    reordering filepaths in viewspecs has now changed to %%d.

	NEW TAG COMMAND PROVIDES EASY WAY TO ASSIGN A LABEL TO A FILELIST
	(Job #9903)

	    Similar in syntax to the more advanced 'p4 labelsync' command
	    'p4 tag' allows the user to tag files with a label without
	    requiring a client spec.  See 'p4 help tag' for further details.

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

Minor new functionality in 2004.2

	#58026 (Job #13343) **
	    'p4 fstat' has two new flags.  The '-O' flag used to request
	    extra information that is usually suppressed and the '-R' flag
	    that is used to restrict output depending on certain criteria.
	    A number of old fstat flags have been folded into these new
	    options.  See 'p4 help fstat' for details.

	#56674 (Job #11929) **
	    'p4 integrate -Di' allows the integrate command to find
	    a base for file merge prior to the latest add of the
	    source file.  That is if a source file was deleted and
	    recreated (via add or a branch) those revisions prior
	    to the add could provide a base for integration.  This
	    is intended to support cases where files are deleted and
	    re-added but still maintain content continuity across the
	    delete.

	#56035 (Job #13380) **
	    'p4 submit -r' now supports reopening of files that have
	    been branched.

	#56034 (Job #413) **
	    The 'p4 integrate' command can now determine if a base
	    for merge resolution lies on any ancestor version even
	    if that version is a file which is neither the source
	    nor the target.  The base file and version is reported by a
	    change in the output of 'p4 integrate', 'p4 resolve', and
	    'p4 resolved' if a '-o' option is given with those commands.

	#55851 (Job #3757, #9034, #10740, #11631) **
	    The new 'p4 integrate' default of considering indirect
	    integration history allows the command to refuse baseless
	    merges while considering indirect integrations when the
	    -i and -I flags are not supplied.  Changes to help
	    descriptions and spec descriptions and problems regarding
	    integrate and branch are corrected.

	#53703 (Job #13258) **
	    'p4 fstat' has a new flag '-e #changelist'.  When this option
	    is selected only files that are affected by this changelist are
	    displayed.

	#53137 (Job #13259) **
	    'p4 fstat' adds 'type' to its list of output fields, this
	    field will only be displayed if the file is opened.

	#52894 (Job #13184) **
	    'p4 labelsync' is now atomic in its update of the label table.
	    Previously if a user issued a 'p4 sync //...@labelname' command
	    during a labelsync operation (of the same label) it could be
	    possible to get an inconsistent sync.

	#52329 * **
	    Files stored as compressed binary (most binary files) are
	    now left compressed over the wire and uncompressed only when
	    they reach the client.  (Previously, they were uncompressed
	    on the server and sent to the client that way.)  This new
	    behavior is not optional, and is unaffected by the client's
	    "compress" option, which continues to compress all data
	    between the client and server.

	#51751 (Job #12737) **
	    'p4 monitor' now sports a '-e' flag to allow superusers to
	    see more about a users environment.  The '-e' flag adds the
	    client program name (if known), client name and host address
	    to the list of fields displayed.

	#50570 *
	    P4CHARSET now supports iso8859-15 which is essentially latin-1
	    with the Euro currency symbol.

	#50459 **
	    Overlay (+) mappings are now supported in client views.
	    This allows a client to overlay a sparse tree from the
	    depot on top of a denser on already mapped on the client.
	    Overlay mappings are specifically prohibited in branch views,
	    and have no special effect in label or other views.

Bugs fixed in 2004.2

	#81443 (Job #17890) * **
	    During change resolution via p4 resolve an 'accept theirs'
	    could leave a file on the client which does not match
	    the server's original 'theirs' file.

	#80025 (Job #17695) * **
	    Problem with resolve/merge duplicating code when the
	    base file has extra lines at the end that the source
	    and target file do not has been fixed.

	#79733 (Job #17654) **
	    Triggers were inheriting too many handles from the
	    server process on Windows and could exhaust a system
	    wide handle resource limit.  Critical handles no longer
	    inherited.

	#79315 (Job #17399) *
	    P4 clients on MacOS X which change files not owned by
	    the user who runs the p4 client may encounter crashes and
	    many temporary files left after the crash.  Error messages
	    will now be produced.

	#76944 (Job #17078) **
	    Prevent server from exiting prematurely on encountering a lock
	    upgrade problem.

	#76880 (Job #16991) * **
	    Resolve logic to expand common change regions could cause
	    crashes or bad merges.  Changed to only rarely expand common
	    changes when changes align at start.

	#76510 (Job #16959) **
	    'p4 fix' of a job against a nonexistent changelist could
	    result in a server crash.  This has been fixed.

	#74828 (Job #16596) **
	    Resolve might cause a server crash or repeat the whole
	    file contents as a conflict in rare cases.  Fixed.

	#73359 (Job #16118, #16425, #16248) **
	    Job fix #72493 introduced another possible crash.
	    Revised that fix to avoid the crash.  Diffs may report
	    slightly differently with this revised fix.

	#73084 (Job #16205) **
	    With maxResults or maxScanRows set with 'p4 group', changing
	    your client view to map files to a different location could
	    result in being unable to refer to existing files in the
	    client workspace using depot syntax (//depot/name).  This
	    has been corrected.

	#72935 (Job #15831) **
	    Trying to sync a compressed binary file from a pre-2004.2
	    remote server would result in the error:

	    "Operation 'rmt-FileFetch' failed.
	    Unsupported librarian file type 7!"

	    This has been fixed.

	#72642 (Job #16141) **
	    Integrate might miss files which need integration
	    when there is a mix of cherry picked integrations
	    and those which are not in intermediate integrations
	    when searching for indirect integration credits.
	    Fixed.

	#72638 (Job #16142) * **
	    Resolve might not detect conflicts when the two files
	    have a change which starts as a duplicate, becomes
	    a conflict, then one file has a change.  Fixed.

	#72493 (Job #16118) * **
	    Resolve might cause the server to crash.  Crash was due
	    to reading past the end of the yours file.  Fixed.

	#71759 (Job #15968) * **
	    The new resolve logic might cause the server to crash.
	    Would happen on very complex merges with overlapping
	    changes and similar regions.  Fixed.

	#71497 (Job #15930) * **
	    The new resolve logic might loop consuming all CPU in the
	    server or merge tool when the two files being merged
	    are substantially the same but with many small fragments
	    in common with the base.  Fixed, but more cases may be
	    reported as conflicts than before this fix.

	#71324 (Job #15597) **
	    The variable '%change%' for submit triggers is no longer
	    available.  This change corrects this omission.

	#70948 (Job #15867) * **
	    The new resolve logic might loop consuming all CPU in the
	    server or merge tool when blocks of lines are shuffled with
	    few actual new lines or lines really removed.  Fixed.

	#70343 (Job #15751) * **
	    The new resolve logic might drop a line in the following
	    situation:

		* There is a change common to the 'theirs' and 'yours'
		  files.

		* Just after that change a line in all files matches
		  a line at the end of a change in one but not both
		  of the 'theirs' and 'yours' files.

	    When this problem happens that common line is lost at end
	    of the insert block which is not common.
	    Servers with versions between 69424 and this fix actually
	    reported a conflict in this case and the conflicting
	    base case would report lines already merged.  Fixed.

	#70281 (Job #15756) **
	    'p4 obliterate' cannot distinguish between an already deleted
	    archive file and failure to undo a lazy copy due to lack of
	    disk space, this can lead to archive data loss.  This has been
	    fixed by backing out change #45574.

	#69739 (Job #15657) **
	    'p4 monitor show' could crash the server on SGI due to
	    large pid value.  This has been fixed.

	#69731 (Job #15606) **
	    Client server would deadlock with the server on a Linux
	    machine.  Reverted change 55835 so that we once again
	    look at the OS TCP send buffer size rather than the receive
	    buffer and we reduced the maximum expected amount of
	    returned data to 16000 bytes.  (himark limit)

	#69727 (Job #15656) **
	    Integrations with source revisions ranges specified
	    (so called cherry picked integrations) might choose
	    the base on the target file instead of the source file.
	    Fixed.

	#69643 (Job #15640) **
	    The handling of 'p4 sync @=changelist' accidentally changed to
	    cause files not in the changelist to be removed from the
	    client.  This syntax is used by p4win to speed up syncing a
	    single change.  Now 'p4 sync @=changelist' again means the same
	    as 'p4 sync @changelist,changelist' as it should, and only
	    affects the files in the given changelist.

	#69424 (Job #15425) * **
	    The new resolve logic could report conflicting regions
	    as too small and those lines would appear to not
	    be conflicting.  If that happened, sometimes lines would
	    also be omitted from the end of the file.

	#69124 (Job #15538) *
	    Due to an inconsistent implementation of a specific system
	    call on LINUX, it was possible for p4 clients such as p4v
	    to consume lots of CPU and appear to hang. This has been
	    fixed.

	#69080 (Job #15502) * **
	    The new resolve logic could duplicate lines in the result
	    if accept theirs were selected interactively from a client.
	    Fixed, however there may be minor differences in the
	    report of fragment counts regarding differences during
	    result and differences in reported common lines.
	    Standalone GUI merge clients are affected.

	#65225 (Job #13257) **
	    The Perforce Windows Service now shuts down normally during a
	    system reboot.  Before it was terminated by the Service Control
	    Manager.

	#62199 (Job #11561) **
	    'p4 -G job -o' and 'p4 -R job -o' failed if the jobspec
	    contained required fields that deliberately defaulted to
	    invalid values. This has been fixed.

	#61038 (Job #14462) **
	    Saving a client spec with view arguments to depots which the
	    user has no access (i.e. no 'list' access or better as granted
	    by 'p4 protect') could cause the server to crash.

	#60787 (Job #14431) **
	    Some passwords greater than 16 characters would not be
	    recognized after being set by the user. This has been fixed.

	#60299 (Job #14461) **
	    The server will now recognize a license file called
	    "license.txt" as well as the default one "license".  This will
	    make installation easier on Windows platforms where often the
	    file has to be renamed before the server can be started
	    correctly.

	#59047 (Job #13954) **
	    Archive files with redundant versions of revision text and
	    ancestral revisions of such a revision can be read properly.

	#58393 (Job #7096, #11534) **
	    Mac OS X now uses Unix permissions instead of HFS locking
	    to prevent edits to a file. If it detects a file has the HFS
	    lock set, it will convert it to the new system. HFS locks will
	    never be set by Perforce.

	#58391 (Job #13639, #13640) **
	    Syncing or opening links for edit will no longer change
	    the flags on the files pointed to by the link, but will
	    affect the link itself. Mac OS X only.

	#58964 (Job #14229) **
	    Archive files with missing revision contents but revision
	    listed in archive header will no longer crash the server.

	#57966 (Job #14141) **
	    Jobs with empty names can no longer be created (but they can
	    be deleted).

	#57268 (Job #13931) **
	    'p4 login' tickets would not work against a proxy server,
	    this has been fixed.

	#57034 (Job #13096) **
	    After 'p4 verify -u' had been used against the revisions in a
	    spec depot, all new revisions would be reported as 'BAD' by
	    'p4 verify'. This was caused by the server incorrectly reusing
	    the checksum of the previous revision. This fault has now been
	    fixed.

	#57029 (Job #4796) *
	    Client connections would fail if P4PORT specified a hostname
	    starting with a digit. This has been fixed.

	#56972 (Job #13803) **
	    'p4 dirs' is no longer limited by the number of directories
	    it can report.

	#55835 (Job #13364) **
	    Client server would deadlock if the server's operating
	    system reported more TCP buffer space available than
	    was really available typically happens if a server has
	    been configured with very large TCP buffers.  p4d is now
	    more conservative and tries to keep less than 30000 bytes
	    expected in its receive buffer.  Also, measure the OS
	    TCP receive buffer rather than the send buffer for this
	    setting (himark limit).

	#55389 (Job #13628) **
	    Under certain conditions where old tempobjs and new tempobjs
	    were being submitted together it was possible that some of
	    the new tempobj archive files would not be deleted.  This
	    has been fixed.

	#54731 (Job #13279, #4104) **
	    During a 'p4 submit' operation it was possible for another
	    Perforce client (same P4USER, same P4CLIENT) to interfere
	    with the operation by (for example) reverting files currently
	    being submitted.  Checks have now been put in place that make
	    sure that this cannot happen. Should such a change be detected
	    'p4 submit' will issue the error message "Files newly opened or
	    reverted during submission" and abort.

	#54050 (Job #13346) **
	    Missing '%' character in a 'p4 triggers' command string could
	    cause a server crash during a submit.  This has been fixed.

	#53436 (Job #13228) * **
	    Text file diffs would rarely produce non-optimal diffs
	    on small files with short lines.

	#51219 (Job #12789) **
	    Merely adding or removing a "-" to the mapping of a trigger
	    table line of 'p4 triggers' would fail to be recognized as
	    a change to the table.  This has been fixed.

	#50451 (Job #1445) **
	    By remapping a file opened for edit to another depot file,
	    and then syncing that depot file using depot syntax, it was
	    possible to forget that the file was opened.  This has been
	    fixed.

	#50435 (Job #2127) * **
	    'p4 diff2' now always displays '<none>' to indicate "no file".
	    Previously '< none >' was used on the left side.  Users
	    requiring the old behaviour for scripts or applications can set
	    the protocol variable "api" to a pre 2004.2 value for example
	    -Zapi=56.

	#50078 (Job #13730) **
	    'p4 client' and similar commands that edit specs could
	    cause a server crash if a view argument was preceded
	    by a double-quote with no matching end quote.  This
	    has been fixed.

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

Major new functionality in 2003.2

	Performance Improvements

	2003.2 incorporates a number of changes addressed at the
	performance of large installations.  While these changes were
	tested against a server of 1M files they should, of course,
	benefit all servers to some degree.

	Optimization for frequent syncs - #47694 **

	    A narrow optimization was made for large client workspaces
	    that do frequent 'p4 sync' commands, typically automated
	    build or test client workspaces.  The syntax 'p4 sync
	    @changelist,#head' now makes use of a database index to make
	    its speed related to the number of files affected since the
	    named changelist, rather than the number of files already
	    in the client workspace.

	    To take advantage of this, scripted build or test clients
	    must remember a recent changelist number and sync to changes
	    since that changelist.  The provided changelist can be
	    earlier than that previously synced, but the closer it is
	    the faster.

	    This optimization is targeted towards automated client
	    workspaces, because they are in a position to track a recent
	    changelist number.  Further, interactive users typically
	    don't sync all of a large client workspace at once.

	Label use speedups - #47813, #47771 (Job #11540, #7225) **

	    Specifying revisions using file@label,label, where the label
	    doesn't contain the named file, no longer causes quadratic
	    behavior.

	    Specifying revisions using @label, where the label doesn't
	    contain revisions from a remote depot, will no longer access
	    the remote depot.

	Locking and memory use improvements - #47939, #47402, #46797
	(Job #9893) **

	    Concurrency and memory use on 'p4 sync' and 'p4 integrate'
	    have been improved by freeing up temporary resources earlier.

	    Subtle database locking improvements have been made.
	    Previously, any command that could expect a revision
	    specification locked tables (such as db.have and db.label)
	    in anticipation of needing them.  Now they are only locked
	    if the command actually makes use of them by including a
	    @client or @label revision.

	    'p4 sync' now batches its updates to benefit from the internal
	    cache and reduce lock contention.

	Speedups for large client views and protections tables - #48061 **

	    Large client views or protection tables should no longer slow
	    'p4 sync' or 'p4 integrate' quite so severely.

	Indirect integration much faster - #47038 (Job #10587) **

	    Performance of 'p4 integrate -I', which looks at intermediate
	    integrations when determining a base, has been significantly
	    improved.  Its performance should now be similar to the
	    normal direct integration only case.

Minor new functionality in 2003.2

	#50484 **
	    'p4 annotate' now sports a -c flag: output change numbers
	    instead of revision numbers with each line of the file.

	#48532 (Job #11969) **
	    Depots to which the user has no access (i.e. no 'list' access
	    or better as granted by 'p4 protect') no longer show up in
	    the output of 'p4 depots'.  Nor do they appear in the default
	    branch, client, and label views.

	#47719 (Job #2696) * **
	    The MD5 digest (fingerprint) of files are now computed and
	    stored during submit.  For best performance, use both a new
	    2003.2 client as well as server, as the new 2003.2 client
	    programs offload the MD5 computation from the server.

	#47373 (Job #11639) *
	    'p4 diff -db|-dw' now ignores line-ending differences as
	    well as whitespace.  This is very useful when used in a
	    mixed platform environment.

	#46947 (Job #4654) *
	    'p4 diff' can now ignore line-ending differences when used
	    with the flag "-dl". This is very useful when used in a
	    mixed platform environment.

	#46649 **
	    'p4 integ' has an additional option -D<flag>, which allows
	    the user to specify whether source or target deleted revisions
	    are okay to integrate around.  See 'p4 help integ' for
	    further details.

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

Major new functionality in 2003.1

	2003.1 includes a number of as yet undocumented internal changes
	required for versioning and configuring of p4 specs.

	NEW MONITOR COMMAND DISPLAYS STATUS OF RUNNING P4 PROCESSES -
	#41063 (Job #2931, #9889) **

	    The new 'p4 monitor' command displays the status of current
	    running p4 processes.  It is functionally similar to the UNIX
	    'ps' command.  A perforce administrator can also use monitor
	    to terminate long running processes.

	    See 'p4 help monitor' for usage.

Minor new functionality in 2003.1

	#43840 (Job #5547) * **
	    'p4 resolve -a' of a binary file where either "yours" or
	    "theirs" has changed from the base now does an automatic
	    "accept theirs/yours", a conflict will still require manual
	    selection.  Interactive resolve will now suggest "at/ay" as
	    appropriate.

	#39123 (Job #9887) **
	    The new option 'p4d -c command' runs the command while the
	    database tables are locked.

	#38864 (Job #3224) **
	    'p4 changes' has an additional option "-t" when specified
	    will display the time as well as the date.

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

Major new functionality in 2002.2

	INTEGRATE ACROSS DISTANT BRANCHES - #35537 (Job #413, #9323) **

	    'p4 integrate' now fully handles merging changes between
	    branches that don't have a direct parent/child relationship.
	    This occurs often when, say, both a release line and a
	    development line are branched from a main line and changes
	    must be merged directly from the development line to the
	    release line.

	    Previously, users had to rely on instructions in technical
	    note #9 to ensure that the Perforce server chose the right
	    base revision for merging.

	    Now an updated option to 'p4 integrate' does the work.  The
	    '-I' option looks for "indirect" integration history through
	    intermediate files when determining the base for merging.
	    This makes it able to handle files distantly related by
	    branching, not just those with a direct parent/child
	    relationship.

	    The new branch option 'indirect' implies 'p4 integrate -I'
	    for the branch, so that it need not be passed on the command
	    line.

	    While it is harmless to use the '-I' flag for directly
	    related branches, it is slower.

	    See 'p4 help integrate' and 'p4 help resolve' for updated
	    descriptions of their operation.

	NEW ANNOTATE COMMAND SHOWS HISTORY OF LINES IN A FILE - #35149
	(Job #574) **

	    The new 'p4 annotate' command displays the lines of a file
	    along with the number of the revision that introduced each
	    line.  It is functionally similar to the CVS annotate command,
	    except that it has the option to show deleted lines and
	    note both the revision of introduction and deletion.

	    See 'p4 help annotate' for usage.

	SHARING CLIENTS USING MULTIPLE CLIENT ROOTS - #34879 (Job #4471,
	#6200, #6243, #6275, #6521, #7268) **

	    Client workspaces that are shared across multiple platforms
	    can now be better accommodated by the ability to specify
	    multiple client roots.  If the same workspace is accessed
	    from different hosts, the same set of client workspace
	    files can appear with a different root directory.

	    Previously, only one root could be given in the client spec,
	    and the user had to change it manually as he moved among
	    platforms.

	    Now 'p4 client' supports up to three (3) client roots, one
	    main (named "Root") and two alternates (named "AltRoots" ).
	    The client's current working directory is tried against all
	    three, and the first one that matches is used.  If none
	    match, the main is used anyhow.  'p4 info' reports the
	    applicable root.

	    This support allows for client roots shared via multiple
	    UNIX paths with symlinks, shared via NFS or Windows shares,
	    or even between MacOS Classic and MacOS X.  When used with
	    the 'p4 client' LineEnd 'share' option, client workspaces
	    can be effectively shared between UNIX and Windows.

	    See 'p4 help client' for details on using multiple client roots.

	SPRUCING UP DIFFS

	The various commands that diff files have seen some enhancements
	to make them more compatible with the GNU diff and patch programs.

	Ignoring whitespace - #31144, #31078 (Job #879, #1671,
	#1932) * **

	    'p4 diff', 'p4 diff2', 'p4 describe', and 'p4 resolve' now
	    can ignore whitespace changes, as the GNU diff does.
	    The -db flag ignores changes in horizontal whitespace, and
	    the -dw flag ignores horizontal whitespace altogether.

	    'p4 resolve' also passes the flags to the diff option in
	    resolve dialog.  Note that 'p4 resolve' will use text from
	    the client (aka "yours") file where the files differ only
	    in whitespace.

	    'p4 diff' requires a p4 client upgrade; 'p4 diff2' and 'p4
	    describe' require a p4d server upgrade.  'p4 resolve' requires
	    both.

	Patch-friendly output - #35143 (Job #380) **

	    'p4 diff2 -u', which produces more patch-friendly output,
	    is now supported.  It has long been present but undocumented.

	TEMPOBJ FILETYPE REDUX - #36061 (Job #1025, #2642, #3888, #7775) **

	    The 'tempobj' filetype, which stores only the head revision
	    of the file (to conserve space), has been reimplemented to
	    remove some of the serious problems associated with using
	    this filetype.  It is now safe to use.

	    Previously, the server knew there were multiple revisions
	    but they all shared the same text.  This created problems
	    with 'p4 submit' (aborted submits would update the text
	    anyhow), 'p4 verify' (the revision fingerprint would change),
	    'p4 sync' (syncing a non-head rev would still give the head
	    rev's text), and 'p4 obliterate' (obliterating the non head
	    rev would remove the head rev's text).

	    Now the server associates text with each revision (just as
	    with non-tempobj files) and goes through the extra step of
	    purging the previous revision during 'p4 submit'.  'p4
	    filelog' will display non-head revisions as 'purged' and
	    they are treated like a deleted revision: 'p4 sync' will
	    remove the file on the client and 'p4 verify' will ignore
	    them.

	    With this change, the filetype modifier "+S" changes from a
	    storage type (uncompressed binary with only the head rev
	    stored) to a storage modifier (purge non-head revs).  Any
	    type of file (text, binary, compressed) may now take on the
	    "+S" modifier.  The filetype modifier "+M", which previously
	    indicated compressed binary with only the head rev stored,
	    has been supplanted by +S's new meaning.

	    This table might make it clearer:

		keyword		pre-2002.2	2002.2
		--------	----------	-----------
		tempobj		binary+Sw	binary+FSw
		xtempobj	binary+Swx	binary+FSwx
		ctempobj	binary+Mw	binary+Sw

		+F = uncompressed
		+S = binary head-rev only (pre-2002.2)
		+S = purge non-head-revs (2002.2)
		+M = compressed binary head-rev only (pre-2002.2)

		+w = client file always writable (all tempobjs)
		+x = executable bit set on client

	    The 2002.2 server will upgrade existing tempobj files to the
	    new.  This requires a database upgrade with 'p4d -xu'.

	NEW PROTECTION LEVEL FOR SEMI-SUPER USERS - #35832 (Job #3037,
	#1306, #2842, #3520, #5004.  This change only tangentially
	addresses some of these bugs.) **

	    A new 'p4 protect' level 'admin' has been introduced below
	    'super' to permit many administrative commands without
	    granting total superuser access.  The commands now requiring
	    only 'admin' access are:

		    p4 branch -f
		    p4 change -f
		    p4 client -f
		    p4 job -f
		    p4 jobspec
		    p4 label -f
		    p4 obliterate
		    p4 typemap
		    p4 unlock -f
		    p4 verify

	    The commands still requiring 'super' access are:

		    p4 admin
		    p4 counter -f
		    p4 depot
		    p4 group
		    p4 jobs -R
		    p4 passwd user
		    p4 protect
		    p4 triggers
		    p4 user -f

Minor new functionality in 2002.2

	#36081 (Job #6881) **
	    "p4 resolve" now writes its messages through the methods of
	    the ClientUser class rather than directly to stdout to allow
	    API users to capture and parse the output. This change is
	    only relevant to API users.

	#35972 **
	    'p4 resolve' now recognizes if the resulting file has been
	    edited to match either 'yours', 'theirs', or the automatically
	    merged result, and changes its default suggested action
	    appropriately.  In this way, if an external merge tool
	    produces exactly 'theirs' then 'p4 resolve' can still arrange
	    for a lazy copy in the server.

	#35391 (Job #13, #4974) **
	    'p4 describe' of a pending changelist now includes the
	    affected files.  This fixes our oldest open bug.

	#35390 **
	    The new option 'p4 revert -n' just displays which files
	    would be reverted without actually reverting them.

	#35368 (Job #409) **
	    Long running operations that have been canceled by the
	    client can now be detected and terminated in the server.
	    This feature may not be available on all platforms.

	#35145 **
	    The new options 'p4 files -a' and 'p4 print -a' display all
	    revisions in a revision range, rather than just the highest
	    revision.

	#35114 (Job #553) **
	    'p4 filelog' has an additional option "-t" when specified
	    will display the time as well as the date.

	#35063 *
	    Adding support for Mac OS Roman character set in i18n mode.
	    To use, set P4CHARSET to "macosroman".

	#34972 (Job #9359) **
	    p4 info now displays the offset from UTC of the server
	    timezone numerically and with a symbol if the symbol supplied
	    from the OS is ASCII.

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

Major new functionality in 2002.1

	Internationalization (I18N) and Localization (L10N)

	Release 2002.1 incorporates the I18N and L10N changes that went
	into the 2001.2 release (made available only in Japan).  As of
	2001.2, the Perforce clients and server have an optional mode
	of operation where all metadata and some file content are stored
	in the server in the UTF8 Unicode character set and are translated
	into the local character set on the client.

	Additionally, in 2002.1 all error and informational messages
	returned from the server may be localized by the Perforce
	administrator.

	See the accompanying i18nnotes.txt for a full description of
	Unicode and localization support.

	Large Installation Performance Enhancements

	A number of changes have been targeted at large installations
	(typically those with more than a million files under Perforce
	control).

	Labels Command Speedup - #30690 (Job #6531) **

	    The "p4 labels" command when supplied with a file argument
	    would run very slowly and potentially lock the system out to
	    all users due to the significant amount of scanning that was
	    required per label.  This command has now been optimized to
	    position the rev table rather than scan when looking for a
	    match.

	Pending Changes Speedup - #29365 **

	    Pending changes in the db.change table are now split into
	    a db.changex table, to speed up the performance of p4win's
	    frequent 'p4 changes -s pending' command invocation.  This
	    requires a database upgrade with 'p4d -xu'.

	Depot Syntax Speedup - #29329 (Job #7069) **

	    To speed p4win's frequent invocations of 'p4 fstat' on files
	    in the explorer tree, a special optimization has been
	    introduced.  Because p4win refers to files using depot
	    syntax, normally the server must scan the client's entire
	    list of files to find the named file.  This optimization
	    allows the server to find the file directly if and only if
	    the client's view still reflects the files on the client.
	    This is always the case if the client has done a full sync
	    since last changing the view.  Bottom line: if p4win's fstat
	    calls are going slow, try syncing the entire client.

	Larger Database Pagesize - #27795 **

	    The server's default database page size has been increased
	    from 4k bytes per page to 8k bytes per page.  For large
	    tables this results in more efficient packing with less
	    wasted disk space and better performance.  Existing databases
	    continue to work unchanged, but to see the improvement a
	    restore from a checkpoint is needed.

	New MaxScanRows in 'p4 group' - #27952 **

	    'p4 group' now has a 'MaxScanRows' field, which can be used
	    to limit the number of rows that can be retrieved from the
	    rev table during an operation. Use MaxScanRows when MaxResults
	    cannot help control lengthy operations (these operations
	    could typically be speeded up by defining the depot filepath
	    more precisely).

	    By default, users have no limit on the size of scans they
	    can perform.  Once a user belongs to one or more groups with
	    any limit, however, that user has the maximum of those
	    groups' limits.  This allows, for example, an administrator
	    to create a "novice" group with a low limit, thereby affecting
	    only certain users.

	    See 'p4 help group', 'p4 help maxresults' and 'p4 help
	    maxscanrows' for further information.

Minor new functionality in 2002.1

	#29455 (Job #1066) **
	    'p4 client -t' now copies client options as well as the
	    view.  Same for 'p4 label -t'.

	#28516 **
	    Server database journalling is now always on, unless explicitly
	    turned off with P4JOURNAL=off.  Previously, journalling was
	    disabled if P4JOURNAL was unset and there was no 'journal'
	    file in the server's root directory.  The absence of the
	    journal file no longer disables journalling.

	#28028 **
	    'p4 integrate' by default now syncs the target files to the
	    head revision before integrating.  To integrate using the
	    current revision had on the client, use the new 'p4 integrate
	    -h' flag.

	#27808 (Job #982, #1004, #1010, #5518) **
	    Jobs searching now allows for matching punctuation: in
	    addition to indexing all alphanumeric strings, the job
	    indexer now also indexes all whitespace separated words.
	    So words with embedded punctuation can be matched.  To match
	    characters that are normally jobs search expression operators
	    (=^&|()<>), escape them with a \ character.

	    When searching for words with embedded punctuation in text
	    fields, the wildcard (*) operator is useful, as English
	    words often have trailing punctuation (commas, periods,
	    etc).

	    Existing jobs must be reindexed with the 'p4 jobs -R' command
	    for words with punctuation to be found.  Warning: this can
	    take considerable time on a system with lots of jobs.  It
	    is harmless to interrupt this command or run it more than
	    once.

	#27227 (Job #449) **
	    "p4 submit" has a new option "-r",	this causes files that
	    have been opened for 'add' or 'edit' on the submitted
	    changelist to remain open after the submit has completed.

	#26931 (Job #2351, #5516) **
	    Labels can now contain deleted revisions.  You must give an
	    explicit revision specification in the file argument to 'p4
	    labelsync' for it to include deleted revisions, because
	    normally 'p4 labelsync' includes only files on the client
	    (and clients can't have deleted revisions).

	    By being able to contain deleted revisions, labels can be
	    better used to control the operation of 'p4 integrate' and
	    'p4 obliterate'.

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

Major new functionality in 2001.2

	INTERNATIONALIZATION (I18N) SUPPORT

	The Perforce clients and server have an optional mode of operation
	where all metadata and some file content are stored in the server
	in the UTF8 Unicode character set and are translated into the
	local character set on the client.

	When running in internationalized mode, all non-file data
	(identifiers, descriptions, and so on), as well as the content
	of all files of type "unicode" are translated between the
	character set specified by the P4CHARSET variable on the client
	and UTF8 in the server.

	See the accompanying i18nnotes.txt for a full description of
	Unicode support.

Minor new functionality in 2001.2

	#26052 **
	    "p4 unlock" now has a superuser option "-f",  this allows
	    a superuser to unlock any file,  usually "unlock" is restricted
	    to files locked by their owner.

	#25966 **
	    Performance of many small p4 commands issued rapidly together
	    as might happen with scripts declined in 2001.1.  Such
	    performance should be back to pre-2001.1 levels.

	#24988 **
	    The p4d server now logs the IP address of its client when
	    the connection is closed unexpectedly.

	#23682 **
	    'p4 changes' now sports -u user and -c client options, to
	    restrict the output to the named user and/or the client.

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

Major new functionality in 2001.1

	DEFECT TRACKING INTEGRATION SUPPORT

	In 2000.2 support was introduced for improved integration into
	external defect tracking systems.  This functionality is now
	supported for general use.

	PYTHON I/O - #21918 *
	    For ease of scripting the p4 command line client, it now
	    supports a -G flag which formats output and expects input
	    as marshaled Python dictionary objects.

	FIX STATUS - #21918 **
	    The jobs schema has been extended to include a 'fix' status,
	    which is a status associated between a job and a change.
	    When the change is submitted, the job takes on the fix's
	    status.  'p4 change', 'p4 submit' and 'p4 fix' now take a
	    -s flag to set a per-fix status, rather than using the
	    default "closed" status.

	CHANGELIST/JOB UPDATE LOGGING - #21918 **
	    The new 'p4 logger' command tracks updates to jobs and
	    changelists, enabling external scripting to export such
	    changes.  See 'p4 help logger' for more info.

	BY POPULAR REQUEST

	SELECTABLE LINE ENDING ON ALL PLATFORMS - #20967 (Job #2207) ** *
	    For users who share workspaces among platforms with different
	    line ending conventions, the Perforce clients now support
	    all common endings (cr/crlf/lf) on all platforms (Macintosh,
	    Windows, UNIX).

	    Specifically, the client option "crlf/nocrlf" has been
	    removed and a new LineEnd field added with a more flexible
	    set of options:  mac, unix, win, local, and share.  (The old
	    "crlf" is now "local", and the old "nocrlf" is "unix").
	    mac, unix, and win force files to be read and written with
	    platform-specific line endings (cr, lf, and crlf respectively).
	    "local" reverts to the client's native format.  "share"
	    writes unix style (lf) but reads either unix (lf) or windows
	    (crlf) style.

	EXCLUSIVE OPEN FILES - #20966 (Job #233, #594, #1944) **
	    Certain files under Perforce control are best not changed
	    concurrently: images, libraries, and other binary files that
	    are difficult or impossible to merge.  The Perforce server
	    has a new filetype modifier that disallows multiple opens
	    on the same file, serializing updates.  This modifier (+l)
	    can use be used directly on the command line (by 'p4 add',
	    'p4 edit', 'p4 reopen'), or can be used in the file mapping
	    table managed by 'p4 filetype'.  For example, this makes it
	    possible to ensure that all .gif files added are treated as
	    exclusive-open binary files.  See 'p4 help filetypes'.

	OBLITERATING OLD REVISIONS ONLY - #20978 (Job #929) **
	    'p4 obliterate' now allows a revision range, so that you
	    can obliterate specific revisions of files.  This makes it
	    easier to clear out old, unused revisions but keep the
	    latest, active ones.

	LABEL REPORTING - #21687 (Job #403) **
	    'p4 labels' can now take a file[revRange] argument, to limit
	    the list of labels to those with that particular file/revision.
	    This makes it easy to see what labels are on a particular
	    revision of a file.

Minor new functionality in 2001.1

	#22316 (Job #5367) **
	    #0 is now a synonym for #none when specifying (no) revisions.

	#21725 **
	    'p4 integrated' now reports a revision range on the target
	    files, rather than just the last revision integrated.  This
	    can only occur for reverse integration records (the ones
	    that reflect a target's contribution back to its source:
	    branch into, merge into, etc), because normal "forward"
	    integration records reflect the creation of the single,
	    newly submitted revision of the target file.

	#21715 ** *
	    A new 'p4 resolve' option has been introduced: 'ae' (for
	    'accept edit').  This is the suggested and default option
	    when the user edits the file (with the 'e' option), either
	    to remove conflicts or to make any edit.  It is also the
	    option used when merges with conflict markers in them are
	    forcibly accepted.  The old 'am' (for 'accept merge') now
	    indicates a purely automated merge, without original user
	    changes.  Resolves completed with 'ae' will show up in 'p4
	    filelog' as 'edit from' records.  This new distinction
	    between 'merge from' and 'edit from' assists in determining
	    whether the change should ever be integrated back: purely
	    automated changes need not be, while original user edits
	    should be.  Now if a user makes original edits, whether by
	    using the 'e' option in 'p4 resolve' or by re-opening the
	    file for edit with 'p4 edit', they will be candidates for
	    merging back to the source file.

	#21633 **
	    The db.have table has been split, with label entries moving
	    out to the new db.label table.  This eases database size
	    constraints in two ways: first, just splitting the data
	    means the individual tables will be smaller.  Second, having
	    a separate table for labels allows for a more compact storage
	    format: the new format requires about 60% of the old space.
	    This requires a database upgrade with 'p4d -xu'.

	#21574 **
	    One of the larger database tables, db.integ, has been split
	    into db.integed and db.resolve.  This requires a database
	    upgrade with 'p4d -xu'.

	#21089 (Job #1509) **
	    'p4 resolve -a' of a binary file where both versions are
	    identical now does an automatic "accept theirs."  If they
	    are not identical, a manual selection is still required.

	#21009 (Job #1074, 1339) **
	    All identifiers (user names, file names, etc) may now contain
	    characters previously considered unprintable, specifically
	    those in the range 0x80-0xFF.  Normal ASCII control characters
	    (such as backspace, bell, etc), as well as #, @, %, *, and ...
	    in filenames, are still disallowed.

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

Major new functionality in 2000.2

	2000.2 includes a number of as yet undocumented internal changes
	for use by the Perforce Defect Tracking Integration project.

	Otherwise, 2000.2 is a bugfix only release.

Minor new functionality in 2000.2

	#19047 (Job #163) **
	    'p4 integrate' now supports a new -t flag, which makes 'p4
	    integrate' propagate the source file's filetype to the target
	    file instead of retaining the target file's previous filetype.

	#18875 (Job #526) **
	    The default depot ("depot") no longer must be created before
	    creating other depots.  Previously, the default depot was
	    only implicit if there were no other depots defined, and
	    creating another depot would eclipse the default one.  Now,
	    the default depot "depot" is implicitly defined as a local
	    depot with mapping 'depot/...' whenever it isn't explicitly
	    defined by 'p4 depot'.

	#18796 **
	    The 'p4 jobspec' form has changed slightly: fields that
	    allow only selected values are now listed under a single
	    "Values" entry; fields with defaults are now listed under
	    a single "Presets" entry.  Previously, for each such field
	    there was a special entry "Values-<fieldname>" or
	    "Preset-<fieldname>", but that format made it hard to
	    automate the generation of the jobspec.

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

Major new functionality in 2000.1

	FILE HANDLING OPTIONS

	Mapped filetype selection - #15936 (Job #604, #3819) ** *
	    Filetypes for 'p4 add' can now be selected based on
	    the file's name.  The new 'p4 typemap' command manages
	    a file name-to-type mapping.  If a file's name matches
	    an entry in that table, it will be used in preference
	    over the type sensed by the client program.

	    Note that this change only requires an updated server to work,
	    but old clients will wrongfully report that empty or missing
	    files are being added as text, even when the typemap is used.
	    New clients are required for warning messages that mention
	    the correct type.

	More keyword expansion - #15900 (Job #387) **
	    More keywords are now available with ktext files:
	    in addition to $Id$ and $Header$, there is now:

		$Date$ - date of file submission
		$DateTime$ - date and time of file submission
		$Change$ - change of file submission
		$File$ - just the file name, sans revision
		$Revision$ - just the revision number, sans file name
		$Author$ - the user who submitted the file.

	    Notably absent is $Log$ (filelog).  It is still anticipated.

	    For compatibility, previously existing ktext files are now
	    named text+ko, which continues to expand just $Id$ and
	    $Header$.

	    In order to take advantage of the new keywords, files must
	    have their type changed with 'p4 edit -t ktext' and
	    resubmitted (presumably updated to include some new
	    keywords).

	    In order to produce valid values for $Change$ and $Date$ (at
	    least), the client program now refreshes ktext files _after_
	    the changed is committed, rather than just before.  If the
	    refresh is interrupted, either by network failure or the
	    user hitting ^C, files not refreshed will not be considered
	    by Perforce to be on the client filesystem, and must be
	    refreshed properly with a subsequent 'p4 sync'.

	File modification time preserved - #15891 (Job #844, #1254,
	#2457) ** *
	    File modification times can now be preserved.  The client
	    spec's 'modtime' option continues to cause 'p4 sync' to
	    update a file's modtime, but now to the modtime of the file
	    as of the 'p4 submit', rather than the time of the 'p4
	    submit' itself.

	    Additionally, files with the new +m modifier always have
	    their modtimes set on 'p4 sync', regardless of the client
	    spec's modtime option.

	    New client executables are required for the modtimes to be
	    detected upon 'p4 submit'.  Pre-2000.1 client programs will
	    continue to use the time of the 'p4 submit' as the modtime.

	JOB SEARCHING

	Wildcards - #14534 (Job #1190, #1414, #2262) **
	    'p4 jobs -e expr' now allows the wildcard * in its
	    expression, to allow for partial word matches.  This also
	    allows 'jobs' to check for the presence of a text field
	    being set at all ('field=*').  It also makes it easier to
	    search for all jobs except selected ones, as 'jobs -e'
	    doesn't allow a lone "not" (^) operator.  E.g.  the
	    expression 'job=* ^word' returns all jobs excluding those
	    with 'word' in it, because 'job=*' matches all jobs.  See
	    'p4 help jobview' for more details.

Minor new functionality in 2000.1

	#16617 **
	    The new option 'p4 print -o localFile' redirects the output
	    to the named file on the client filesystem.  The difference
	    between this and redirecting stdout (via the command shell)
	    is that this creates a file of the proper type (text, binary,
	    symlink, apple, xtext, etc).

	#16298 (Job #2923) **
	    'p4 info' now reports the date, time, and timezone on the
	    server machine.

	#14126 (Job #14126) **
	    'p4 labelsync' now supports a revision range on its file
	    argument, just as 'p4 sync' does.

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

Major new functionality in 99.2

	MORE MACINTOSH FILE SUPPORT

	New 'apple' filetype - #13015 (Job #858, #863, #2699) ** *
	    There is now an alternative mechanism for storing the resource
	    fork and type/creator information of files originating on
	    the Macintosh.  The new filetype 'apple' stores the following
	    all under a single depot file name:	 the data fork, the
	    resource fork, the Finder info (including the type/creator
	    information), and the comment string.  These files are
	    encoded into AppleSingle format for storing on the server.

	    The previous mechanism, which stores the data fork under
	    the regular file name and the resource fork and type/creator
	    information under a separate .file name with type 'resource',
	    is still available.

	    When 'apple' type files are synced onto non-Macintosh 99.2
	    clients, they are decoded into AppleDouble format, with the
	    non-data portion written into a %file.  Unlike the 'resource'
	    type .file, the %file is manifested only on the client: the
	    server only knows of the file by its normal name.

	    If a pre-99.2 client syncs an 'apple' type file, it will be
	    unaware of the encoding and get the raw binary contents,
	    which is in AppleSingle format. Users of CWPerforce 99.1
	    may want to wait for CWPerforce 99.2 before starting to use
	    the 'apple' file type.

	    It is permissible to submit AppleDouble format files from
	    99.2 non-Macintosh clients or AppleSingle format files from
	    pre-99.2 clients, but the 99.2 Macintosh AppleSingle
	    implementation decodes only DATA, RESOURCE, COMMENT, and
	    FINDERINFO entries.

	Support for Macintosh Internet Config - #11821 *
	    Internet Config (part of the MacOS 8.x "Internet" control
	    panel) is now used by 'p4 sync' on the Macintosh to map file
	    extensions to Macintosh type/creator.  This is overridden by
	    type/creator information stored in 'apple' type files or in
	    companion 'resource' .file's.

	BRANCHING AND INTEGRATION IMPROVEMENTS

	'p4 filelog' follows branch history - #12482 (Job #599, #634,
	#1690, #2192) **
	    'p4 filelog' can now follow branch history.  If a file was
	    created by branching, 'p4 filelog -i' displays the revisions
	    of the source file (but only revisions up to the branch
	    point).  It properly handles files that were branched
	    from other files which themselves were branched from still
	    other files.

	No more 2-way text merges - #12354 **
	    'p4 integrate' now refuses to arrange a baseless merge
	    unless passed the -i flag.  A baseless merge arises when
	    both the source and target files already exist but are not
	    directly related by branching.  Previously, 'p4 integrate'
	    would schedule a baseless merge, which 'p4 resolve' would
	    then present as a 2-way text merge.

	    If 'p4 integrate' is forced to schedule a baseless merge,
	    'p4 resolve' now uses the first rev being merged as the
	    base, rather than attempting a 2-way text merge.  This
	    eliminates 2-way text merges altogether.

	'p4 integrate' resists mistaken branching - #13292 (Job #2672) **
	    'p4 integrate' now specifically disallows branching a file
	    from a non-add revision.  This means that it will no longer
	    attempt to re-branch a source file on top of a deleted target
	    file when the source file changes.  It also won't delete
	    the target file of an integration if it has changed since
	    it was last integrated into the source.  'p4 integrate -d'
	    overrides this, reverting to pre-99.2 behavior, where it
	    was permitted to mix edits with a deleted file.

	Reverse integration records always created now - #10627 **
	    A reverse integration record (one that shows up in 'p4
	    filelog' as 'xxx into') is now created for each forward
	    integration record (one that shows up in 'p4 filelog' as
	    'xxx from').  Previously, an "impure" integration -- a branch
	    downgraded to add, or integrate downgraded to edit, or
	    integrate from multiple sources, didn't generate a reverse
	    integration record.  This was meant to signal that the
	    target file's changes still needed to be merged back into
	    the source file, but the lack of integration record was
	    confusing to users.  Now special "add into" and "edit into"
	    reverse integration records are created.  This only affects
	    reporting.

	ADMINISTRATION

	New 'p4 admin' command - #11701 **
	    The new 'p4 admin' command allows the superuser to stop or
	    checkpoint the server.  See 'p4 help admin' for command
	    details.

	Subgroups - #12240 (Job #2301) **
	    'p4 group' now allows other groups, rather than just users,
	    to be members of a user group.

	Journal format changes - #11722, #13174 **
	    Server journal files are now marked with a version line
	    to prevent them from being used to update a database created
	    from a different checkpoint.

	    Journal files now distinguish between new records being
	    written (with the @pv@ mark) from existing records being
	    replaced (with the new @rv@ mark).

	Checkpoint naming changed - #11759 (Job #1059) **
	    The argument to 'p4d -jc' is now a prefix for the name of
	    the checkpoint and journal files, rather than just the name
	    of the checkpoint file.  ".ckp.N" and ".jnl.N" are appended
	    to the prefix to generate the checkpoint and journal file
	    names.  The prefix path is relative to the server's root
	    directory.

	    NOTE: THIS IS A CHANGE FROM THE USE OF THIS FLAG IN 99.1
	    AND BEFORE.

	Journal only flag - #13176 **
	    'p4d -jj' copies and truncates the journal, just as 'p4d -jc'
	    does, but without making a checkpoint.  This enables a
	    checkpoint to be made offline by building a second database
	    from a previous checkpoint and the newly saved journal (and
	    checkpointing the resulting, second database).

	Server runs in background - #13167 (Job #729) **
	    The new 'p4d -d' flag causes it to fork first before accepting
	    connections, so as to act more like a typical UNIX daemon
	    program.  The exit status of the parent indicates whether it
	    successfully started up.

	REMOTE DEPOT SUPPORT BETWEEN UNIX AND NT - #12114 (Job #867) **

	    Remote depot interaction between UNIX and NT is now usable,
	    but still not complete.  In particular, browsing in the
	    Windows GUI is not possible because 'p4 dirs' does not yet
	    work correctly between UNIX and NT.

	LOCKING WORKSPACES TO A SPECIFIC HOST - #12409 (Job #1242) * **

	    Client workspace access can now be restricted to a given
	    host by setting the "Host" field in the 'p4 client' form.
	    By default, new client workspaces are now created with the
	    "Host" field set.  Delete the field from the form to allow
	    unrestricted access.

	    This functionality requires a 99.2 client and server.  The
	    client will take the following as the host name, in order
	    of preference: a name passed as 'p4 -H host' on the command
	    line, the value of $P4HOST in the client's environment, the
	    client host's "hostname" (which is generally platform
	    specific).

	    The restriction is not a security mechanism, as it can be
	    circumvented with the 'p4 -H host' option.  It is meant to
	    prevent accidental misuse of a client workspace from the
	    wrong machine.

	    'p4 info' displays the client host name as determined by the
	    'p4' command.

Minor New Functionality in 99.2

	#12805 (Job #708) **
	    'p4d -V' now uses $P4ROOT or the '-r root' option to find the
	    license file, so that it can properly display the licensing
	    information.

	    The server root directory now defaults to the current directory
	    if $P4ROOT is unset and '-r root' is not used.  Previously, it
	    was a fatal error not to provide a root directory.

	#12243 **
	    'p4 branch' now rejects attempts to save the default view
	    as the actual branch view.  The default view is just a sample
	    that won't work.

	#12103 (Job #2661) *
	    The BEOS p4 client now supports symlinks (as the UNIX p4
	    clients do).

	#12073 **
	    The new 'p4 jobs -r' flag sorts jobs in reverse order by name.
	    Normally, they are sorted in ascending order.

	#11903 **
	    'p4 diff' and 'p4 diff2' now take a -t flag to force a
	    textual diff even for non-text (binary) files.  The 'p4
	    resolve -b' flag has been renamed '-t' to match.

	#11889 (Job #601) ** *
	    The new client option 'rmdir' causes the p4 client program
	    to attempt to delete the enclosing directory if all files
	    therein have been removed by 'p4 sync', 'p4 integrate', or
	    'p4 revert'.  This action is recursive, in that if removing
	    the directory makes the parent directory empty, that parent
	    directory will be removed as well.

	#11888 **
	    'p4 filelog' now takes a '-m maxRev' flag to limit the number
	    of revisions per file output.

	#11825 (Job #1405) ** *
	    'p4 revert' now supports a -a flag, which reverts only
	    unchanged files that are opened for edit or integrate, and
	    that don't have any resolved integration records.

	    'p4 revert' now avoids refreshing client files which haven't
	    changed.  This requires a new p4 client executable.

       #11486 (Job #2539) **
	    A branch view that mapped a file back onto itself could, in
	    rare circumstances, cause 'p4 integrate' to attempt to merge
	    the file with itself.  Normally, 'p4 integrate' ignores
	    these self-mappings.  This confused the logic in 'p4 submit',
	    which assumed a file couldn't be integrated from itself,
	    and lead to bogus integration records and revision records
	    with null fields being created.  This has been corrected.

	#11289 **
	    'p4 flush', a command that fakes a 'p4 sync' without moving
	    files, is now part of the documented and supported command
	    list.

	#11271 **
	    Branch specifications can now be locked, via an option on
	    the branch specification, just as client and label specs
	    can be locked.

	#11197
	    'p4 diff -sx file#rev' now implies -f, namely that it will
	    do the checksum comparison even if the client has the file
	    at the named rev.  Normally, 'p4 diff' skips files if the
	    client has the named rev, but -sx is generally used to verify
	    that the client has the right text, so it makes sense to
	    force the comparison.

	#10769 **
	    You now only need 'list' access, not 'review', just to view
	    a counter with the 'p4 counter' command.  You still need
	    'review' access to delete or change the counter.

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

Major new functionality in 99.1

	PRESUBMIT TRIGGERS - #8594 **

	    Pre-submit triggers are now supported.  These are commands
	    run on the server after the change is created and the files
	    are locked but prior to file transfers taking place, used
	    to provide user-validation of the change being submitted.

	    See 'p4 help triggers' or the manual for more information.

	LINE COMPRESSION - #8622 (Job #1000) * **

	    The new client option 'compress' turns on compression of
	    the client/server connection.  Both client and server must
	    be 99.1 for this to work.  If either client or server are
	    older, this option is silently ignored.

	    Line compression's effectiveness depends on two factors:
	    the nature of the data being transferred and the speed of
	    the link balanced against the processor speed at each end.

	    Because of the repetitive nature of Perforce file names
	    (e.g.  //depot/this/that/theotherthing/...), among other
	    factors, compression yields a 10:1 gain on the basic protocol.
	    If text or binary files are being transferred, the gain is
	    roughly the same as compressing the files before submitting
	    them into Perforce.

	    Because compressing data takes CPU cycles, line compression
	    is only effective if the processors can compress faster than
	    the link can pass the data.  As a rule of thumb, compression
	    is best for WANs (wide area networks bridging remote locations)
	    and not so good for LANs (local area networks, such as
	    Ethernet).

	EDITABLE CHANGELISTS - #8744 (Job #14) **

	    'p4 change' of a pending changelist now presents the jobs and
	    files associated with the changelist, and allows you to
	    add/delete those jobs and files.  Only files from the default
	    changelist can be added, and removing a file causes it to
	    return to the default changelist.

	    'p4 change' of a submitted changelist now presents the jobs,
	    and allows you to add/delete jobs.  Adding a job closes the
	    job as with 'p4 fix'.

	FLEXIBLE FILETYPES - #7724 **

	    User-definable filetypes are now supported: individual bits
	    that control how a file is manipulated and stored can now
	    be set when specifying the filetype during 'p4 add', 'edit',
	    or 'reopen'.  See 'p4 help filetypes' for more information.

	NEWLINE TRANSLATION SUPPRESSION - #7880 (Job #333, #695,
	#940) ** *

	    The new client option 'nocrlf' suppresses newline translation
	    on Macintosh and Windows clients.  If this option is set,
	    text files are read and written as binary files on the client,
	    meaning that the newline is passed through untouched.
	    Normally, newline is translated to carriage-return/newline
	    on Windows and carriage-return on Macintosh.

	    Note that the Perforce server uses newlines, not
	    carriage-return/newline, in text files.  This is true even
	    with the server on Windows/NT.

	    This option works with pre-99.1 client programs, but 'p4
	    diff' and 'p4 resolve' will not diff what they think are
	    binary files, and they won't set the execute bit for xtext
	    files.  Upgrade to 99.1 clients for full support of 'nocrlf'.

	P4 DIFF2 OVERHAUL

	Summary Line - #9151 (Job #1311) **
	    The header line has been changed to include a (one word)
	    summary indicating content or type mismatches.

	Comparing binary files - #9127 (Job #1607) **
	    Diff2 now compares binary files and prints out the line
	    "(... files differ...)" if they are not identical.

	Quiet flag - #8494 (Job #693, #550) **
	    Diff2 now takes a '-q' flag to suppress all output for
	    files known to be identical (because they are the same file
	    or because they were branched).  Also, 'p4 help diff2' now
	    attempts to explain the output of diff2.

	Using a branch view - #8306 (Job #799) **
	    Diff2 can now take -b branch name to specify the pairs of
	    files to be compared.  If file arguments are also present,
	    they can further limit the files and specify the revisions
	    for comparison.

	BIG INSTALLATION ADMINISTRATION

	MaxResults avoids unwieldy operations - #8720 (Job #1189) **
	    'p4 group' now has a 'MaxResults' field, which can be used
	    to limit the size of operations for users in that group.
	    This enables large installations to prevent users from
	    swamping the server with inadvertent, oversized requests
	    (such as 'p4 files //depot/...').

	    By default, users have no limit on the size of operations
	    they can perform.  Once a user belongs to one or more groups
	    with any limit, however, that user has the maximum of those
	    groups' limits.  This allows, for example, an administrator
	    to create a "novice" group with a low limit, thereby affecting
	    only certain users.

	    See 'p4 help group' and 'p4 help maxresults' for further
	    info.

	Access times for clients, branches, labels - #8276, #9648
	(Job #1236) **
	    Branches, clients, and labels now all have last access dates
	    to facilitate finding and deleting old, unused ones.

	    - For branches, the last access is the last time the branch
	      was used with 'p4 integrate' or 'p4 diff2'.

	    - For clients, it is the last time the client was used for
	      any command that _required_ a client (many commands, such
	      as 'p4 describe', 'p4 changes', etc. do not), or when the
	      client was used as a revision specification (@client).

	    - For labels, it is the last time the label was updated with
	      'p4 labelsync' or when the label was used as a revision
	      specification (@label).

	Archive validation - #8587 (Job #861) **
	    'p4 verify' now can save the MD5 digest (fingerprint) of
	    file revisions and later compare them to verify archive
	    contents.  This can be used, for example, to verify that
	    the server's archive is consistent with the metadata after
	    a restore from backup.

	    The saved digests are also used by 'p4 diff' and 'p4 diff2'
	    to avoid having to compute them for their normal operation.
	    This can considerably lighten the server load if these commands
	    are used frequently.

	    See 'p4 help verify' for information.

	Compressed checkpoints/journals - #8558 (Job #61) **
	    The server can now generate and read compressed (gzip)
	    checkpoints and journals when the -z flag is used with -jc,
	    -jd, or -jr.  The live journal of database updates remains
	    uncompressed.

Minor New Functionality in 99.1

	#9627, #9754 **
	    'p4 integrate' now supports a '-s from' flag, which specifies
	    the source files of an integration when a branch view is
	    used (normally only the target files are allowed).  -s also
	    tells it to use the union of the branch view and its reverse
	    (with the target and source files exchanged).

	#9662 **
	    The 'p4 fstat' command, long present but undocumented, is
	    now supported.  See 'p4 help fstat' for info.

	    The 'p4 -s' flag, also long present but undocumented, is
	    now supported.  See 'p4 help usage'.

	#9260 **
	    'p4 jobs' now has a '-m max' flag, like 'p4 changes', to limit
	    the output to the first 'max' jobs.

	#9240 (Job #1319, #1670) **
	    'p4 jobspec' has been altered to handle read-only fields,
	    Required fields, and Default values differently.  Now a single
	    'field-type' flag on the field definition line determines how a
	    field is set (automatically, or otherwise).  See 'p4 help
	    jobspec'.

	#9139, #9649 * **
	    'p4 resolve' now takes a -b flag to force it to attempt a
	    3 way merge, even if the files are binary.  It also makes
	    the files editable/diffable in the resolve dialog.  When
	    resolving binary files, Perforce uses an 8-bit clean path.

	    This option works with pre-99.1 client programs, but 'p4
	    resolve' will not or edit diff what it thinks are binary
	    files.

	#8951 **
	    The 'p4 client' and 'p4 label' commands now allow you to use
	    '-t template' for existing as well as new clients and labels.
	    This copies a client or label's view from another client or
	    label.

	#8878 * **
	    The new 'p4 passwd' command enables you to set the user's
	    password without having it appear on the screen as editing
	    the form for 'p4 user' does.  On Windows clients, 'p4 passwd'
	    also sets the password in the registry in the same way that
	    'p4 set P4PASSWD' does.

	#8803 **
	    You can now directly edit any (unlocked) client.  Previously,
	    the Perforce server wouldn't allow you to edit a client other
	    than the current one, but that could easily be circumvented by
	    saying "p4 -c xxx client".  Now the more direct "p4 client xxx"
	    works.  To protect a client against inadvertent updates by
	    other users, you can use the upgraded lock mechanism
	    (see #7787).

	#8713 (Job #812) **
	    The new 'p4 counter' command allows users with 'review' access
	    to set and delete counters directly.

	#8557 (Job #459) **
	    'p4 add' now allows you to re-add a file that has been deleted
	    if your client has 'p4 sync'ed to something other than the
	    (deleted) head rev.

	#8556 (Job #420, #429) **
	    File patterns in client, label, and branch views can now be
	    quoted (") to allow embedded spaces.  The quotes must surround
	    the file pattern.  Client roots must now be quoted if they
	    contain spaces.

	#7848 **
	    The logging done by setting P4DEBUG to "server=1" now puts
	    all info for each operation on a single line.

	#7787 (Job #850, #962, #1043, #1144) **
	    Locking of clients is now possible, and locking of labels and
	    clients has converged to mean: it can't be deleted, and its
	    spec can't be updated except by the owner.  As before, 'p4
	    labelsync' can't be used on locked labels.  Now, no commands
	    that affect a client can be used on a locked client, _except by
	    the owner_.

	    The client option 'allwrite', present since 98.2, has now been
	    documented in 'p4 help client'.  This option leaves all client
	    files writable.

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

Major new functionality in 98.2

	NEW JOBS FUNCTIONALITY - #6542 **

	    Jobs have been upgraded.  Two major shortcomings have been
	    rectified: lack of configurability and lack of searching.

	    1.	Jobs may now contain user defined fields, rather than a
		fixed set of fields.  This is controlled by the jobspec,
		which is set by the superuser.  The default jobspec is
		compatible with 97.3 jobs.  See 'p4 help jobspec' for
		redefining the jobspec.

	    2.	Jobs now support a fast searching mechanism.  As jobs
		are entered or updated, text and dates are indexed.
		The index can be searched by passing the 'p4 jobs'
		command a search expression with the new '-e jobview'
		flag.  The jobview field in 'p4 user' is likewise now
		a search expression.  See 'p4 help jobs', 'p4 help
		jobview', 'p4 help user' for more information.

	EASE OF USE

	P4CONFIG Names Client Config File - #5955 (Job #349, #773) *
	    The new variable P4CONFIG names a file containing variable
	    settings for the client.  If the file can't be found in the
	    current directory, then parent directories are searched for
	    the file.  Each variable setting is alone on a line and of
	    the form: P4VAR=value.  The variables that can be set for
	    the client are currently:

			P4CLIENT
			P4DIFF
			P4EDITOR
			P4MERGE
			P4PASSWD
			P4PORT
			P4USER

	New Revision Specification @date - #5628 **
	    Wherever revision specifications are supported, @date and
	    "@datetime" can now be used in addition to @change and
	    @label.  The format for date is YYYY/MM/DD, and the format
	    for datetime is YYYY/MM/DD:HH:MM:SS.  If no time is given,
	    midnight is assumed.

	Syncing Specific Revisions - #5808 **
	    'p4 sync', 'p4 files', and 'p4 print' now allow their file
	    specifications to include a revision range, which limits their
	    operation to files affected within that range.  Previously,
	    only the top revision could be specified, and all files as of
	    that revision were considered.  This makes it possible to
	    take a single change ('p4 sync @n,n') or to display the
	    files affected between two labels ('p4 files @lab1,lab2').

	PROTECTIONS/GROUP

	User Authentication - #6323 * **
	    Simple user authentication is now supported.  Each user may
	    have an optional password set via 'p4 user'.  The password is
	    provided by the client either by setting the new $P4PASSWD
	    variable or by using p4's new '-P passwd' flag.  To make use
	    of passwords, both the client and server must be 98.2 or
	    later.  If an older client attempts to connect to the server
	    and the user has a password, the server will reject the
	    connection.

	    SETTING THE PASSWORD WITH 'P4 USER' WILL TRANSMIT THE PASSWORD
	    IN THE CLEAR, AND SHOULD BE DONE LOCALLY ON THE SERVER MACHINE
	    OR OVER NETWORKS THAT ARE TRUSTED.  The authentication
	    protocol itself does not transmit the password.

	Protection Groups - #6355 (Job #637) **
	    User groups are now supported for use with the 'p4 protect'
	    command.  Groups are created, updated, and displayed with
	    the new 'p4 group' and 'p4 groups' command.  Lines in the
	    protection table managed by 'p4 protect' now have an indicator
	    as to whether they apply to individual users or to a group.

	Unauthorized Access Doesn't Use a License - #6427 **
	    Entries in the user table are now created only after the
	    access level check completes, so that if a user does not
	    have access to the server, then he will not accidentally
	    consume a user license.

	Protection Levels Make More Sense - #6484, #6471, #5310 **
	    Non-superusers can now use the depot/group/jobspec commands
	    with the -o flag, as that makes them display only commands.

	    A superuser (a user with 'super' access granted by
	    'p4 protect') can now create a new user with
	    'p4 user -f username'.

	    If a user has 'list' but not 'read' access to a file (as
	    granted by 'p4 protect') and attempts to 'p4 sync' the file,
	    the file will now be deleted.  Previously, it just pretended
	    the client didn't have the file (and did nothing to it).
	    This allows for part of the depot to be made obsolescent by
	    granting only list access.

	New "Force" Flags Empower Superusers - #5511 **
	    The 'branch', 'client', 'label', 'job', and 'user' commands
	    all now take a -f flag to force actions: deleting entities not
	    owned by the current user and setting the modified date of
	    entities.  The -f flag requires superuser access.

	Directly Invoking p4d - #2884 * **
	    UNIX ONLY.  The p4 client program can now directly invoke
	    the p4d server program by setting P4PORT to "rsh:p4d -ir
	    _root_".  The "rsh:" instructs the client to run the program
	    following the :, and the -i flag makes p4d run once with
	    its stdin/stdout as the communications pipe.  By setting
	    P4PORT to "rsh:rsh host cmd" it is possible to invoke a
	    server on a remote machine, if "cmd" is either the invocation
	    of p4d or a wrapper script which does as much.

	DATABASE UPGRADES

	New database format with flexnames - #5312 **
	    All identifiers may now be of arbitrary lengths.  Previously,
	    identifiers were limited to lengths of 32 (user names), 64
	    (client/label/branch/job names), or 128 (file name) bytes.
	    Because the data is now manipulated using the actual size
	    of the data, rather than the maximum size, the disk and
	    memory usage for the Perforce server has shrunk considerably.
	    Databases are typically 1/3 to 1/2 of their former size,
	    and memory use is commensurately smaller.  Because much less
	    data is moved around, the server Performs much better,
	    especially on large queries which previously caused the
	    server to page.

	Big Databases for SGI Irix - #5713 **
	    The p4d server now supports database files in excess of 2GB
	    on SGI Irix.  Typically, it is the db.have ("have" and label
	    lists) that grows the most, and on large installations these
	    database files have approached the 2GB limit.  Now the internal
	    limit for database files is 8TB (8000 GB) for SGI Irix.

	Upwardly Compatible Checkpoints/Journals - #5313 **
	    Checkpoint and journal files now have a version number on
	    each line that indicates the format of the line.  This will
	    allow checkpoints from previous releases and journals made
	    from multiple releases to be handled properly.  Previously,
	    a server could read checkpoints and journals only from the
	    same release level.

	    Most database upgrades are handled by compatibility code for
	    the binary database itself.  In some cases, however, it will
	    be necessary to checkpoint and restore in order to upgrade
	    releases.  In those cases the compatibility of checkpoints (and
	    journals) will come into play.

	LIBRARIAN

	Lazy Copy on Resolve - #5320 **
	    'p4 resolve' 'accept theirs' now gets the text of the new
	    revision of the file by doing a lazy copy from the integrated
	    file, rather than taking the text from the client.  When
	    using 'p4 integrate' to copy one set of files on top of
	    another, the lazy copy can save space.

	Compressed File Types - #6120 **
	    Compressed file types are now supported for text and binary
	    files. The existing binary, xbinary, and resource types have
	    become compressed types, with the old uncompressed types
	    being renamed to ubinary, uxbinary, and uresource.  There
	    is also a new ctext and cxtext for storing compressed text.
	    Compressed types are stored in gzip format on the server,
	    but otherwise behave like regular text and binary files on
	    the client.

	New "Temporary Object" File Types - #6113 **
	    Two new file types are now supported: tempobj and xtempobj.
	    Both are binary files that are always left writable on the
	    client and only have the head revision stored in the server.
	    xtempobj also has the execute permission set on the client.

	$Id:$ Now Expands More Like RCS - #6042 (Job #819) **
	    $Id:$ in ktext and kxtext files are now expanded with a space
	    before the final $, so as to be compatible with RCS and its
	    "ident" program.  This makes current ktext files look
	    different according to 'p4 diff -se', so users of that
	    command should refresh their ktext files with 'p4 sync -f'.

	$Header:$ Mimics $Id:$ - #5608 **
	    The keyword $Header:$ is now supported for ktext type files.
	    It expands the same as $Id:$.

Minor New Functionality in 98.2

	#6559 **
	    The p4d server process id is now logged in the error log
	    along with the date, client, command, etc when command
	    logging is turned on.  Turn command logging on by setting
	    P4DEBUG to "server=1".

	#6360 **
	    'p4 opened' now sports a '-c changelist#' to restrict output
	    to the given changelist number.

	#6021 (Job #833) **
	    'p4 where' now also outputs the local name of the mapped
	    file.  This is in addition to displaying the name in both
	    depot and client form in Perforce syntax.

	#5381 (Job #709) **
	    'p4 filelog' now includes the filetype at each rev.

	#5369 (Job #694) **
	    All ASCII forms are now more tolerant of indenting.  Except for
	    text blocks (where the indent is exactly the first white
	    space), values in the forms may be arbitrarily indented, as
	    long as they are indented at all.  This makes 'p4 submit' more
	    immune to accidental alterations to the 'Files:' list.
	    'p4 submit' now has a kinder, gentler message when a file
	    appears in the list that wasn't part of the default changelist.

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

Upgrading from 97.3 and earlier.

	1.	NEW DATABASE FORMAT WITH FLEXNAMES.  The 98.2+ database
		is not compatible with earlier databases.  You must convert
		it using a 97.3 checkpoint (checkpoints from earlier
		releases will not be compatible):

			/path/to/97.3/p4d -r$P4ROOT -jc checkpoint.97.3
			(remove the $P4ROOT/db.* files)
			/path/to/98.2/p4d -r$P4ROOT -jr checkpoint.97.3

		The Windows/NT installer will perform this upgrade
		automatically for you if you do not do it yourself.

		See change #5312 for details on flexnames.

	2.	NEW JOBS SUPPORT.  Jobs data (if any) must be upgraded
		after restarting from pre-98.2.   To convert, issue the
		client command:

			p4 jobs -R

		You must have 'superuser' access, as granted by
		'p4 protect' to use this flag.  It is harmless to run this
		more than once.

		Note: the jobview field of the user form is not
		automatically converted.  Users must replace their jobviews.
		The new jobviews that correspond to the old ones are:

			Old JobView	New JobView
			-----------	-----------
			all		status=open
			mine		user=username status=open

		replacing 'username' as appropriate.

	3.	The new password support (see change #6323) requires 98.2
		or newer clients and servers.  You cannot set the password
		if the client program is earlier than 98.2, and once the
		password is set you cannot connect at all with old client
		programs.

	4.	You cannot mix a 98.2 server with a lower version server
		using remote depots.   Further, remote depots between
		Unix and NT do not work correctly because of the different
		sort ordering.

	5.	$Id:$ EXPANSION CHANGED.  $Id:$ in ktext files now expands
		with a space before the final $, like RCS.  This makes
		current ktext files look different according to 'p4 diff
		-se', so users of that command should refresh their
		ktext files with 'p4 sync -f'.
