diff --git a/internal/governor/conn.go b/internal/governor/conn.go index 864cff6..fd00f13 100644 --- a/internal/governor/conn.go +++ b/internal/governor/conn.go @@ -211,6 +211,10 @@ func readSockstat(environ []string) updateData { res.GroupLeader = sockstat.GetBool(parts[1]) case "is_importing": res.IsImporting = sockstat.BoolValue(parts[1]) + case "import_skip_push_limit": + res.ImportSkipPushLimit = sockstat.BoolValue(parts[1]) + case "import_soft_throttling": + res.ImportSoftThrottling = sockstat.BoolValue(parts[1]) } } diff --git a/internal/governor/governor.go b/internal/governor/governor.go index 5354b87..7c3db1d 100644 --- a/internal/governor/governor.go +++ b/internal/governor/governor.go @@ -76,6 +76,12 @@ type updateData struct { CommandID string `json:"command_id,omitempty"` // IsImporting is true if the command is an import. IsImporting bool `json:"is_importing,omitempty"` + // ImportSkipPushLimit is true if the command is an import and + // we want to skip the push limit for a command. + ImportSkipPushLimit bool `json:"import_skip_push_limit,omitempty"` + // ImportSoftThrottling is true if the command is an import and + // we want to apply it some soft throttling policies. + ImportSoftThrottling bool `json:"import_soft_throttling,omitempty"` } func update(w io.Writer, ud updateData) error { diff --git a/internal/spokes/spokes.go b/internal/spokes/spokes.go index e4254f2..b74cee9 100644 --- a/internal/spokes/spokes.go +++ b/internal/spokes/spokes.go @@ -955,7 +955,7 @@ func (r *spokesReceivePack) isFsckConfigEnabled() bool { } func (r *spokesReceivePack) getMaxInputSize() (int, error) { - if isImporting() { + if skipPushLimit() { return 80 * 1024 * 1024 * 1024, nil /* 80 GB */ } @@ -1234,6 +1234,10 @@ func isImporting() bool { return sockstat.GetBool("is_importing") } +func skipPushLimit() bool { + return sockstat.GetBool("import_skip_push_limit") +} + func allowBadDate() bool { return isImporting() && sockstat.GetBool("allow_baddate_in_import") }