feat: LimitedWriter: write as much as possible
This commit is contained in:
parent
c36d68eddd
commit
dd86ed8b5a
@ -6,6 +6,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"git.0x7f.app/WOJ/woj-server/pkg/file"
|
"git.0x7f.app/WOJ/woj-server/pkg/file"
|
||||||
"git.0x7f.app/WOJ/woj-server/pkg/utils"
|
"git.0x7f.app/WOJ/woj-server/pkg/utils"
|
||||||
|
"go.uber.org/zap"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"time"
|
"time"
|
||||||
@ -88,6 +89,7 @@ func (s *service) podmanRun(arg *podmanArgs) error {
|
|||||||
limit: utils.If(arg.limit == 0, 4*1024, arg.limit),
|
limit: utils.If(arg.limit == 0, 4*1024, arg.limit),
|
||||||
timeout: utils.If(arg.timeout == 0, 10*time.Second, arg.timeout),
|
timeout: utils.If(arg.timeout == 0, 10*time.Second, arg.timeout),
|
||||||
kill: func() error {
|
kill: func() error {
|
||||||
|
s.log.Warn("[podman] timeout killer", zap.String("name", name))
|
||||||
if arg.kill != nil {
|
if arg.kill != nil {
|
||||||
_ = arg.kill()
|
_ = arg.kill()
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package file
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"git.0x7f.app/WOJ/woj-server/pkg/utils"
|
||||||
"os"
|
"os"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -11,11 +12,23 @@ type LimitedWriter struct {
|
|||||||
n int64
|
n int64
|
||||||
}
|
}
|
||||||
|
|
||||||
func (lw *LimitedWriter) Write(p []byte) (n int, err error) {
|
func (lw *LimitedWriter) Write(p []byte) (int, error) {
|
||||||
if lw.n+int64(len(p)) > lw.Limit {
|
remaining := lw.Limit - lw.n
|
||||||
return 0, fmt.Errorf("output limit exceeded")
|
if remaining <= 0 {
|
||||||
|
return 0, fmt.Errorf("write limit exceeded")
|
||||||
}
|
}
|
||||||
n, err = lw.File.Write(p)
|
|
||||||
|
var err, err2 error
|
||||||
|
var n int
|
||||||
|
|
||||||
|
writeLen := int64(len(p))
|
||||||
|
if writeLen > remaining {
|
||||||
|
err = fmt.Errorf("write limit exceeded")
|
||||||
|
writeLen = remaining
|
||||||
|
}
|
||||||
|
|
||||||
|
n, err2 = lw.File.Write(p[:writeLen])
|
||||||
lw.n += int64(n)
|
lw.n += int64(n)
|
||||||
return
|
|
||||||
|
return n, utils.If(err2 != nil, err2, err)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user