Perforce Public Knowledge Base - P4D -xf Flag
Downloads Blog Company Integrations Careers Contact Try Free
Menu Search
Reset Search



P4D -xf Flag

« Go Back


The -xf flag is used with a specific job number argument to address issues with your server metadata. The job numbers reference built-in server fixes to problems arising from older server bugs, or fixes to a few common problems that can't easily be resolved without a specialized command.

Note, the command below should be run from the P4ROOT directory.

Current valid -xf arguments are:

857 (checkpoint and restore tiny.db)

Note: only use if tiny.db is enabled.
The tiny.db table is not backed up with a normal checkpoint. A checkpoint of tiny.db can be created using:

p4d -xf 857 > tiny.ckp

Checkpoint restore is done with:

p4d -xf 857 tiny.ckp

925 (working and locks table out of sync)

If Perforce is unable to completely write to both "db.working" and "db.locks" while a user checks out files, some files may be marked as open for that user, but corresponding lock records may not exist. This results in a the error:
Working and locked tables out of sync!
This is most likely to occur after running out of disk space on the drive that contains the Perforce root directory. This problem can prevent users from reverting or submitting files:
p4d -xf 925

3104 (early 99.2 resolve bug)

Rarely used. Addresses an issue with resolves in 99.2 prior to build 13782. When resolving several files with different resolve statuses (for instance: 'accept theirs' and 'accept merge'), and then submitting them, the resolve status of the source file is set incorrectly (for example, the p4 filelog of that file will indicate "copy into" instead of "merge into"):
p4d -xf 3104

4164 (early 2000.1 submit bug)

Rarely used. Addresses an issue with resolves in 2000.1 prior to build 17666. An inconsistency between "db.integ" and "db.rev" can produce resolution results that are different between the server and local  file:
p4d -xf 4164
An illustration of this problem could be reproduced by adding three files with differing contents (a, b and c) and then integrating them:
p4 integ -i a c
p4 resolve -ay
p4 integ -i b c
p4 resolve -at
p4 submit
File "c" will have the contents of "b" in the local workspace, but the contents of "a" in the server.

12904 (replace forward slashes with underscores in client names)

Prior to version 2006.2 it was possible to create client names with forward slashes ("/"). This would cause problems when deleting clients that began with the same characters followed by the slash. Subsequent to revision 2006.2 forward slashes were no longer permitted in newly created client names, but existing clients were not re-named. This command replaces any forward slash in existing client names ("xyz/abc") with an underscore ("xyz_abc"):
p4d -xf 12904

18362 (replace 'auth-check' trigger command)

Beginning with version 2005.2 of the server, a trigger can be added to use external authentication, such as LDAP. A potential problem with this functionality is that it makes it possible to completely lock anyone out of Perforce, including "super" users, if the "auth-check" trigger table entry was incorrectly entered. This command enables replacing the trigger table entry with a corrected entry:
p4d -xf 18362 "runcommand %args%"
where "runcommand" is a script or other tool and "%args" are the arguments to be passed. Note that this -xf argument can only be used to replace an existing "auth-check" trigger, not to add a new one. Starting with 2011.1 the command also resets auth-check-sso and service-check triggers.

One way to get back into a server using this command is to create a trigger table entry that always succeeds. For example:
p4d -xf 18362 "echo 0"
Since this command always returns "0", the trigger always succeeds. As a result any password entered will work.

When using this command to regain access to a server, the server should be launched in "localhost mode" using the "-p localhost:1666" server flag to prevent external connections until the problem with the "auth-check" trigger has been corrected.

43361 (create have records from db.working)

Starting with Perforce server 2012.2, this command can be used to create new db.have records from existing db.working records. The db.working table contains records for work in progress so this command will only generate db.have records for files that are open.

p4d -xf 43361

57689 (mark all stream client views stale)

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. In Perforce server 2013.1 or later 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.

64384/index.domain.owner (index domain table)

Installations 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. To create the index in Perforce server 2012.2 or later use:

p4d -xf index.domain.owner

71819 (clear charset values)

The command:
p4d -xf 71819
may be used to clear invalid or unnecessary charset values from the database in Perforce server version 2013.2 or later.  Note that this will scan the entire revision table; plan accordingly.

71917 (commit server shelves promotion)

In version 2014.1 of the server, shelving functions between edge servers.
Edge servers need to 'promote' shelves using the new 'shelve -p' command to make them available on any edge server. 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 this command on the commit server to promote the shelves:
p4d -xf 71917
In the shared archive edge server configuration, shelves are automatically promoted to the commit server and need not be promoted.

update.change.identity (Add change identity to existing changes)

p4d -xf update.change.identity //path/to/files/...
Retrospectively applies the server's configured submit.identity algorithm to generate identities for changes that may have touched the specified files and have not yet been assigned an identity.
Related Links



Was this article helpful?



Please tell us how we can make this article more useful.

Characters Remaining: 255