p4 server

Create, modify, or delete a Helix Server specification.

Syntax conventions

p4 [g-opts] server serverID
p4 [g-opts] server -g
p4 [g-opts] server -d serverID
p4 [g-opts] server -o [-l] serverID
p4 [g-opts] server -i [-c edge-server|commit-server]
p4 [g-opts] server -c edge-server|commit-server serverID

Description

A server specification describes the high-level configuration and intended usage of a Helix Server. For installations with only one Helix Server, the server specification is optional.

The p4 server command puts the server spec into a temporary file and invokes the editor configured by the P4EDITOR variable. Saving the file creates or saves changes to the server specification.

An operator type user cannot execute this command. (The three user types are explained in the description of p4 user.)

Filtering

The ClientDataFilter:, RevisionDataFilter:, and ArchiveDataFilter: fields are for replicated environments where you filter out unnecessary data. For instance, a build server does not need to replicate the have list for every open client workspace on the master server. See "Filtering metadata during replication or edge-to-edge chaining" in Helix Core Server Administrator Guide.

Warning

It is best if ArchiveDataFilter: is kept static. You must reseed the server if you change this filter.

Tip

(2019.1 and later) For a convenient way to adjust the configuration, see the DistributedConfig: field.

Form Fields

Field Name Type Description

ServerID:

Read-only

A unique identifier for this server. This must match the contents of the server’s server.id file as defined by the p4 serverid command.

Important

To avoid configuration problems, the value of serverID should always match the value of P4NAME if both are set. We recommend setting serverID, but support P4NAME for backward compatibility.

Type:

Writable

Server executable type. One of the following:

Type Notes
server  
proxy provides a p4p caching proxy
broker provides a p4broker proces
connector provides a git-connector - p4gconn caching proxy

Each type can offer one or more services.

Services:

Writable

The server type server provides the following services:

  • standard - a standard Helix Server
  • replica - a read-only replica server
  • commit-server - central server in a multi-server installation
  • edge-server - node in multi-server installation
  • forwarding-replica - a replica configured to forward commands that involve database writes to a master server
  • build-server - a replica that supports build automation and builder server (or build farm) integration
  • P4AUTH - a server that provides authentication
  • P4CHANGE - a server that provides change numbering
  • standby - read-only replica server that uses p4 journalcopy
  • forwarding-standby - forwarding replica server that uses p4 journalcopy
  • local - personal DVCS server created by p4 init

For more information on these services, see "Deployment architecture" in the Helix Core Server Administrator Guide.

To assign a service to a server, the administrator uses the Services: field that appears with the p4 server command:

Service Description Notes

standard

standard Perforce server

The server that supports directly-connected clients in a single-server environment. (This is the default and does not require explicit assignment in p4 server form.)

replica read-only replica server
  • Maintains copies of target server metadata and file content.

  • Services commands that read metadata

  • Rejects commands that would update metadata.
  • Use with a broker. See Using P4Broker to redirect read-only commands)

  • Enables Offline Checkpoints to prevent target server downtime for checkpoint or backup.

  • Can be used as a warm stand-by server for disaster recovery

See Configuring a read-only replica in Helix Core Server Administrator Guide.

forwarding-replica replica that forwards update commands
commit-server central server in a multi-server installation
  • A multi-server Helix service consists of a combination of a commit server and one or more edge servers.
  • A commit server stores the canonical archives and permanent metadata.
  • Similar to a Perforce master server, but might not contain all workspace information.

(See Commit-edge in Helix Core Server Administrator Guide.)

edge-server node in a multi-server installation
  • Performance can improve if clients connect to a regional edge server that is geographically closer than the remote commit server. (See Commit-edge in Helix Core Server Administrator Guide.)
  • Geographically separated edge servers can form a chain that ultimately arrives at the commit server.
  • Maintains a copy of commit server metadata, file content as controlled by the lbr.replication setting of the edge server, and local metadata for edge workspace "work-in-progress" data. (See the Knowledge Base article, "Edge Servers", especially the section on "p4 submit".)

build-server replica that supports builder server (or build farm) integration

In addition to supporting read-only commands, allows the p4 client and p4 sync commands to be used to create clients and sync files on the build server.

  • Supports read-only commands
  • Also supports the p4 client and p4 sync commands to create clients and sync files on the build server. See Build server.
standby read-only replica server that uses journalcopy

Same as a read-only replica except:

forwarding-standby

 

forwarding-replica that uses journalcopy

 

Same as the fowarding-replica except:

local

 

personal server in the DVCS environment

See Using Helix Core Server for Distributed Versioning.

 

P4AUTH server that provides central authentication A federated architecture of independent servers can share a single server for authentication. See Centralized authorization server (P4AUTH).
P4CHANGE server that provides central change numbers A federated architecture of independent servers can share a single server for changelist numbers. See Centralized changelist server (P4CHANGE)
Tip

For additional details, see:

Options: Writable
  • mandatory: A standby or forwarding-standby server that persists journalcopy'ed metadata before that metadata is replicated to other replicas. A standby or forwarding-standby server with this option set can be used for failover whether or not the server from which it is journalcopy'ing is available at the time of the failover.

  • nomandatory: (default) Replication to other replicas can occur before the metadata has been persisted by this standby or forwarding-standby server. Failover can occur to this standby or forwarding-standby server only if the server from which it is journalcopy'ing is available at the time of the failover.

ReplicatingFrom: Writable Server ID of the server from which this server is replicating or journalcopy'ing. This field is required when the server is a standby or forwarding-standby server and the mandatory option is set for either.

Name:

Writable

The P4NAME associated with this server.

You can leave this blank or you can set it to the same value as the serverid.

Address:

Writable

The P4PORT used by this server.

Commit and edge servers require this field if you want to use p4 reload in this way:

p4 reload -c client-name -p serverID

ExternalAddress:

Writable

  • This field contains the external address the commit server uses to connect to the edge server. Set to the P4PORT used during the commit-edge setup to create the service user login ticket from the commit server to the edge server. If the edge server uses ssl, the port must include the ssl prefix.

  • This field is required for parallel submit in a multi-server environment.
    For example: tokyo-edge.your-company.com:1666
  • Prior to 2019.2, for a Git Connector server, this optional field could contain a list of repos to be updated, with a space before each repo name. Beginning in 2019.2, UpdateCachedRepos is the field to use for this purpose.

UpdateCachedRepos:

Writable

Beginning in 2019.2, this optional field can contain a list of repos to be updated, with each repo name on a separate line. See the Upgrading Git Connector and Configuring Git Connector to Poll Repos from Helix4Git topics in the Helix4Git Administration Guide.

Description:

Writable

An optional description for this server.

User:

Writable

The service user name used by the server. For additional information about the use of this field, see the section on "Service users" in Helix Core Server Administrator Guide.

AllowedAddresses:

Writable A list of addresses that are valid this server. At security level 6, this field is used to associate intermediary servers with specified service users. Connections through intermediary servers without matching server specs will be blocked.

ClientDataFilter:

Writable

For a replica server, this optional field can contain one or more patterns describing how active client workspace metadata is to be filtered. Active client workspace data includes have lists, working records, and pending resolves.

To include client data, use the syntax:

//client-pattern/...

To exclude client data, use the syntax:

-//client-pattern/...

All patterns are specified in client syntax.

RevisionDataFilter:

Writable

For a replica server, this optional field can contain one or more patterns describing how submitted revision metadata is to be filtered. Submitted revision data includes revision records, integration records, label contents, and the files listed in submitted changelists.

To include depot data, use the syntax:

//depot/pattern/...

To exclude depot data, use the syntax:

-//depot/pattern/...

All patterns are specified in depot syntax.

ArchiveDataFilter:

Writable

For a replica server, this optional field can contain one or more patterns describing the policy for automatically scheduling the replication of file content. If this field is present, only those files described by the pattern are automatically transferred to the replica. Other files are not transferred until they are referenced by a replica command that needs the file content.

Files specified in the ArchiveDataFilter: field are transferred to the replica regardless of whether any users of the replica have made requests for their content.

To automatically transfer files on submit, use the syntax:

//depot/pattern/...

To exclude files from automatic transfer, use the syntax:

-//depot/pattern/...

All patterns are specified in depot syntax.

If you want to include most depot paths, use this pattern:

//...
-//depot/projA/...
-//depot/projB/...

which begins by including all paths.

If you want to include only a few specific depot paths, use this pattern:

//depot/projA/...
//depot/projB/...

which implicitly excludes all paths that are not explicitly included.

Warning

If you change ArchiveDataFilter, the replica or edge server must be restarted to pick up the changes.

DistributedConfig:

Writable

For all server types, this field shows a line for each configurable that is set to a non-default value. In this field, the admin can edit certain values, add a new line to set certain configurables to a non-default value, or delete a line to reset certain configurables to their default value.

Note that:

  • the commit server's any# values, for example, any#monitor=30, apply throughout the multi-server environment, unless overridden locally.
  • this server's local values, for example, monitor=40, override the any# values.

When p4 server is invoked with the -c flag, the configuration values are populated with currently configured values, recommended default values if unset, or unset for unset values with no default.

If this field is present when invoked with -c, the configuration commands in this field are run on the current server using the scope of the server specified in the serverID field.

For an edge or commit server, this optional field, which is displayed only when you use the -c flag shows current configuration values, recommended default values for fields that are not set, or unset for fields that are not set and do not have default values.

Tip

If there is a line under a field, indent that line. For example,

Description:
    Created by maria

Options

-c edge-server | commit-server

Allow the user to set, change or display configuration values used to set up the multi-server environment on an edge or commit server by using the DistributedConfig: field.

Configuration fields are initially populated with:

  • the configured values if set
  • default values if unset, or
  • unset for unset values with no default

After exiting from the form, any configuration commands in the DistributedConfig: field will be run on the current server for the scope of the serverID.

The commands only apply to the serverID server, and so the server# prefix is not allowed in these commands. The only supported services are edge-server and commit-server. The service dictates which configuration values are used to initially populate the form the first time that the server command is run.

-d serverID

Delete the named server specification.

-g

Generate a new serverID as part of the form.

-i

Read a server specification from standard input.

You can combine this option with the -c option to generate and run configuration variables used to set up an edge or commit server. When used with -c, only the fields explicitly set in standard input from the DistributedConfig: field will be configured.

-l

Deprecated because of the functionality of the DistributedConfig: field.

-o

Write the named server specification to standard output.

g-opts

See Global options.

Usage Notes

Can File Arguments Use Revision Specifier? Can File Arguments Use Revision Range? Minimal Access Level Required

N/A

N/A

see discussion below

Only super can run p4 server in update mode (using -i, -g, and -d options). Non-operators can run p4 server in non-update mode (using -o or -o -g options). Operators cannot run p4 server at all.

Related Commands

To change a server’s ID after creation

p4 serverid

To list all known servers

p4 servers