# [PATCH v1] git-p4: add config to retry p4 commands; retry 3 times by default

4 messages from 2016-12-04 to 2016-12-05. Participants: larsxschneider@gmail.com, Lars Schneider, Luke Diamand, Ori Rawlings.
Thread: https://gitlist.dev/t/44612

## larsxschneider@gmail.com, 2016-12-04 14:03

Subject: [PATCH v1] git-p4: add config to retry p4 commands; retry 3 times by default
Message-ID: <20161204140311.26269-1-larsxschneider@gmail.com>
URL: https://gitlist.dev/e/20161204140311.26269-1-larsxschneider%40gmail.com

```
From: Lars Schneider <lars.schneider@autodesk.com>

P4 commands can fail due to random network issues. P4 users can counter
these issues by using a retry flag supported by all p4 commands [1].

Add an integer Git config value `git-p4.retries` to define the number of
retries for all p4 invocations. If the config is not defined then set
the default retry count to 3.

[1] https://www.perforce.com/perforce/doc.current/manuals/cmdref/global.options.html

Signed-off-by: Lars Schneider <larsxschneider@gmail.com>
---

Notes:
    Base Commit: 454cb6b (v2.11.0)
    Diff on Web: https://github.com/git/git/compare/454cb6b...larsxschneider:654c727
    Checkout:    git fetch https://github.com/larsxschneider/git git-p4/retries-v1 && git checkout 654c727

 Documentation/git-p4.txt | 4 ++++
 git-p4.py                | 5 +++++
 2 files changed, 9 insertions(+)

diff --git a/Documentation/git-p4.txt b/Documentation/git-p4.txt
index c83aaf39c3..656587248c 100644
--- a/Documentation/git-p4.txt
+++ b/Documentation/git-p4.txt
@@ -467,6 +467,10 @@ git-p4.client::
 	Client specified as an option to all p4 commands, with
 	'-c <client>', including the client spec.
 
+git-p4.retries::
+	Specifies the number of times to retry a p4 command (notably,
+	'p4 sync') if the network times out. The default value is 3.
+
 Clone and sync variables
 ~~~~~~~~~~~~~~~~~~~~~~~~
 git-p4.syncFromOrigin::
diff --git a/git-p4.py b/git-p4.py
index fd5ca52462..2422178210 100755
--- a/git-p4.py
+++ b/git-p4.py
@@ -78,6 +78,11 @@ def p4_build_cmd(cmd):
     if len(client) > 0:
         real_cmd += ["-c", client]
 
+    retries = gitConfigInt("git-p4.retries")
+    if retries is None:
+        # Perform 3 retries by default
+        retries = 3
+    real_cmd += ["-r", str(retries)]
 
     if isinstance(cmd,basestring):
         real_cmd = ' '.join(real_cmd) + ' ' + cmd
-- 
2.11.0


```

## Lars Schneider, 2016-12-05 09:09

Subject: Re: [PATCH v1] git-p4: add config to retry p4 commands; retry 3 times by default
Message-ID: <EFB6754A-8205-4B5C-BD2E-13D2AA211369@gmail.com>
URL: https://gitlist.dev/e/EFB6754A-8205-4B5C-BD2E-13D2AA211369%40gmail.com
In-Reply-To: <20161204140311.26269-1-larsxschneider@gmail.com>

```

> On 04 Dec 2016, at 15:03, larsxschneider@gmail.com wrote:
> 
> From: Lars Schneider <lars.schneider@autodesk.com>

Hi Junio,

if you decide to queue this patch and/or the "git-p4: fix empty file 
processing for large file system backend GitLFS", please use my 
signed-off address. I accidentally messed up the author field in
both.

Thanks,
Lars


> 
> P4 commands can fail due to random network issues. P4 users can counter
> these issues by using a retry flag supported by all p4 commands [1].
> 
> Add an integer Git config value `git-p4.retries` to define the number of
> retries for all p4 invocations. If the config is not defined then set
> the default retry count to 3.
> 
> [1] https://www.perforce.com/perforce/doc.current/manuals/cmdref/global.options.html
> 
> Signed-off-by: Lars Schneider <larsxschneider@gmail.com>


```

## Luke Diamand, 2016-12-05 11:02

Subject: Re: [PATCH v1] git-p4: add config to retry p4 commands; retry 3 times by default
Message-ID: <CAE5ih7-+TZVMhbF5b4TxhvZv3=eXFntN+MJqP6iDq0HyA6Ntfg@mail.gmail.com>
URL: https://gitlist.dev/e/CAE5ih7-%2BTZVMhbF5b4TxhvZv3%3DeXFntN%2BMJqP6iDq0HyA6Ntfg%40mail.gmail.com
In-Reply-To: <20161204140311.26269-1-larsxschneider@gmail.com>

```
On 4 December 2016 at 14:03,  <larsxschneider@gmail.com> wrote:
> From: Lars Schneider <lars.schneider@autodesk.com>
>
> P4 commands can fail due to random network issues. P4 users can counter
> these issues by using a retry flag supported by all p4 commands [1].
>
> Add an integer Git config value `git-p4.retries` to define the number of
> retries for all p4 invocations. If the config is not defined then set
> the default retry count to 3.

Looks good to me, ack.

>
> [1] https://www.perforce.com/perforce/doc.current/manuals/cmdref/global.options.html
>
> Signed-off-by: Lars Schneider <larsxschneider@gmail.com>
> ---
>
> Notes:
>     Base Commit: 454cb6b (v2.11.0)
>     Diff on Web: https://github.com/git/git/compare/454cb6b...larsxschneider:654c727
>     Checkout:    git fetch https://github.com/larsxschneider/git git-p4/retries-v1 && git checkout 654c727
>
>  Documentation/git-p4.txt | 4 ++++
>  git-p4.py                | 5 +++++
>  2 files changed, 9 insertions(+)
>
> diff --git a/Documentation/git-p4.txt b/Documentation/git-p4.txt
> index c83aaf39c3..656587248c 100644
> --- a/Documentation/git-p4.txt
> +++ b/Documentation/git-p4.txt
> @@ -467,6 +467,10 @@ git-p4.client::
>         Client specified as an option to all p4 commands, with
>         '-c <client>', including the client spec.
>
> +git-p4.retries::
> +       Specifies the number of times to retry a p4 command (notably,
> +       'p4 sync') if the network times out. The default value is 3.
> +
>  Clone and sync variables
>  ~~~~~~~~~~~~~~~~~~~~~~~~
>  git-p4.syncFromOrigin::
> diff --git a/git-p4.py b/git-p4.py
> index fd5ca52462..2422178210 100755
> --- a/git-p4.py
> +++ b/git-p4.py
> @@ -78,6 +78,11 @@ def p4_build_cmd(cmd):
>      if len(client) > 0:
>          real_cmd += ["-c", client]
>
> +    retries = gitConfigInt("git-p4.retries")
> +    if retries is None:
> +        # Perform 3 retries by default
> +        retries = 3
> +    real_cmd += ["-r", str(retries)]
>
>      if isinstance(cmd,basestring):
>          real_cmd = ' '.join(real_cmd) + ' ' + cmd
> --
> 2.11.0
>

```

## Ori Rawlings, 2016-12-05 21:19

Subject: Re: [PATCH v1] git-p4: add config to retry p4 commands; retry 3 times by default
Message-ID: <CAPv0x+Ps9YiMgHsJ0_VKzjbXRtqybDoJryt2NcVmE38JvUCeWA@mail.gmail.com>
URL: https://gitlist.dev/e/CAPv0x%2BPs9YiMgHsJ0_VKzjbXRtqybDoJryt2NcVmE38JvUCeWA%40mail.gmail.com
In-Reply-To: <20161204140311.26269-1-larsxschneider@gmail.com>

```
Looks good to me, too.

-r flag seems to be supported as far back as I can search in the Helix
release notes.

Ori Rawlings

```
