Perforce Public Knowledge Base - Troubleshooting p4gf_submit_trigger.py
× PRODUCTS SOLUTIONS CUSTOMERS LEARN SUPPORT
Downloads Company Partners Careers Contact Free Trials
Menu Search
Perforce
Reset Search
 

 

Article

Troubleshooting p4gf_submit_trigger.py

« Go Back

Information

 
Problem

I am experiencing errors when the p4gf_submit_trigger.py trigger script is run.

Solution

Perforce password (P4PASSWD) invalid or unset.

This is the most common error.  That you need to create login tickets for git-fusion-user and services user on the P4D host.  See Subitem 'd' for the following step in the Git Fusion Guide.

   Configure Git Fusion submit triggers in the Perforce service to support atomic pushes


If you created the login tickets but still see this error, the problem lies in one of two areas.

1. The ticket you are creating is not right for the script.

   In the trigger table entry, the P4PORT the script uses for p4 commands is passed in through the "%serverport%" argument. 

GF-pre-submit change-submit //... "/usr/bin/python /perforce/triggers/p4gf_submit_trigger.py change-submit %changelist% %user% %client% %serverport%"

If your Git Fusion host is different than your P4D host, then the P4PORT passed to the script will be "ipaddr:port" or "hostname:port".  If Git Fusion runs on the same host as P4D, or it connects through a P4Broker running on the same host as P4D, then the P4PORT will be "localhost:port".  Create your login ticket accordingly.  You may need both tickets for both P4PORT forms if you submit files from the Perforce server host.

Example if Git Fusion is on a different host than P4D and connects directly:

p4 -p perforce1.mycompany.com:1666 -u git-fusion-user login

Another option is to just put the P4PORT in the trigger table entries in place of %serverport%.  Create the login ticket for whatever you hardcode in the trigger table.

NOTE: As of 2014.1/857837, p4gf_submit_trigger.py started using DEFAULT_P4PORT=localhost which effectively sets the host used in P4PORT to "localhost" regardless of what gets passed in through %serverport%.  The following format is always correct.

p4 -p localhost:1666 -u git-fusion-user login

2. The script is not using the same tickets file the login tickets are being written to.

 - Are you logged in as the system user that runs p4d?  By default, the tickets file is written to '.p4tickets' or 'p4tickets.txt' in your home directory.

  See the Command Reference for more information on P4TICKETS.

 - Is P4TICKETS set for p4d's environment?  

   The Server Deployment Package provided by Consulting does this (Check /p4/common/bin/p4_vars).

 - The Perforce service on Windows typically runs as the Local System account.  The %USERPROFILE% for LocalSystem account is here:

C:\Windows\System32\Config\systemprofile\p4tickets.txt

 - For Windows 2003 and XP, the default tickets location is in the Default User home.

C:\Documents and Settings\Default User\p4tickets.txt

Another option is to set P4TICKETS in the environment inside p4gf_submit_trigger.py.  Set your P4TICKETS to the same value when creating the login tickets.

os.environ["P4TICKETS"] = "C:\perforce\p4tickets.txt"


Git Fusion submit triggers are not installed. Please contact your admin. 
 
 To verify that the triggers are installed, Git Fusion looks up a counter. Your counter is not set.  See "Configure Git Fusion submit triggers in the Perforce service to support atomic pushes" in the Installation steps.

 To set the counter:
 
p4gf_submit_trigger.py --set-version-counter P4PORT
 
 
GF-pre-submit' validation failed: 
Execution Failed: /users/perforce/GIT/python /users/perforce/2014/p4gf_submit_trigger.py change-submit 13 jdoe ssh_auth 10.10.10.10:1666: Permission denied
 
'GF-pre-submit' validation failed: 
Execution Failed: C:\Python27 C:\p4gf_submit_trigger.py change-submit 22 git-fusion-user git-fusion-user 10.10.10.10:1666: Access is denied

 Either your path to python or the path to p4gf_submit_trigger.py is incorrect.

 
'GF-pre-submit' validation failed: Git Fusion pre-submit trigger failed.
Exception: bad marshal data (unknown type code)

 The error suggests that the Perforce Helix service sent back incorrect marshal data (-G global flag), or the data got corrupted somehow.  The more likely cause is that your python binary used a 'marshal' module for a different version of Python.


'GF-pre-submit' validation failed: Git Fusion post-submit trigger failed.
('value',)

This nondescript error means that a p4 command was run and the data dictionary returned had nothing in it.  This is likely due to the command not actually connecting to the server port used.  Maybe your server requires SSL and it used the wrong protocol.  Did you connect through a proxy or broker?
 
'GF-pre-submit' validation failed: Invalid trigger type: change-submit
 
P4D has been upgraded to 2014.1 or later and the change-submit trigger type is no longer used by Git Fusion.  Use 'p4gf_submit_trigger.py --generate-trigger-entries' to create new the trigger table entries and then copy them into your trigger table as below: 

    p4gf_submit_trigger.py --generate-trigger-entries [--config-path=/absolute/path/to/config] "/absolute/path/to/python[3]" "/absolute/path/to/p4gf_submit_trigger.py" "P4PORT"

(see 'p4gf_submit_trigger --help', "Installing Triggers" for more information).

Command unavailable: external authentication 'auth-set' trigger not found.

When you change a password through the P4Admin GUI, you might see this error if you do not have an "auth-set" trigger enabled to allow p4 passwd to run.  The AD and LDAP interfaces are commonly used for maintaing passwords.  The git-fusion-* users need to have AD or LDAP accounts.  If it is against your company's policy to maintain such service accounts in AD/LDAP, then they must be accounted for in the external authentication trigger script.  You can refer to Authentication Triggers: Creating special users that bypass Active Directory for a simple example implementation. 
 
Related Links

Feedback

 

Was this article helpful?


   

Feedback

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

Characters Remaining: 255