Managing commit-edge installations

Commit-edge architecture raises certain issues that you must be aware of and learn to manage.

  • Each edge server maintains a unique set of workspace and work-in-progress data that must be backed up separately from the commit server. See Backup and recovery planning for more information.
  • Exclusive locks are global: establishing an exclusive lock requires communication with the commit server, which might incur network latency.
  • Parallel submits from an edge server to a commit server use standard pull threads to transfer the files. The administrator must ensure that pull threads can be run on the commit server by doing the following:

    • Make sure that the service user used by the commit server is logged into the edge server.
    • Make sure the ExternalAddress field of the edge server’s server spec is set to the address that will be used by the commit server’s pull threads to connect to the edge server.

      If the commit and edge servers communicate on a network separate from the network used by clients to communicate with the edge server, the ExternalAddress field must specify the edge server ip address and port number that is used for connections from the commit server. Furthermore, the edge server must listen on the two (or more) networks.

      See the p4 help submit command for more information.

  • Shelving changes in a distributed environment typically occurs on an edge server. Shelving can occur on a commit server only while using a client workspace bound to the commit server. Normally, changelists shelved on an edge server are not shared between edge servers.

    You can promote changelists shelved on an edge server to the commit server, making them available to other edge servers. See Promoting shelved changelists for details.

  • Auto-creation of users is not possible on edge servers.
  • You must use a command like the following to delete a client that is bound to an edge server: It is not sufficient to simply use the -d and -f options.

    $ p4 client -d -f --serverid=thatserver thatclient

    This prevents your inadvertently deleting a client from an edge server. Likewise, you must specify the server id and the changelist number when trying to delete a changelist whose client is bound to an edge server.

    $ p4 change -d -f --serverid=thatserver 6321
    Note

    An edge server that is used only for automated processing, such as builds, can be deployed without a backup/recovery solution because the edge local data is critical only during build-time.