Skip to content

Commit b799942

Browse files
committed
Refactor the way timeouts are handled
`{Task,Pipeline}Run` now handle timeouts via `EnqueueAfter` on the workqueue. `pkg/timeout` is now removed.
1 parent e995e7c commit b799942

File tree

34 files changed

+2709
-901
lines changed

34 files changed

+2709
-901
lines changed

go.mod

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module github.com/tektoncd/pipeline
33
go 1.13
44

55
require (
6-
cloud.google.com/go/storage v1.11.0
6+
cloud.google.com/go/storage v1.11.0 // indirect
77
github.com/GoogleCloudPlatform/cloud-builders/gcs-fetcher v0.0.0-20191203181535-308b93ad1f39
88
github.com/cloudevents/sdk-go/v2 v2.1.0
99
github.com/ghodss/yaml v1.0.0
@@ -22,11 +22,11 @@ require (
2222
golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a // indirect
2323
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d
2424
gomodules.xyz/jsonpatch/v2 v2.1.0
25-
google.golang.org/api v0.31.0
2625
k8s.io/api v0.18.8
2726
k8s.io/apimachinery v0.19.0
2827
k8s.io/client-go v11.0.1-0.20190805182717-6502b5e7b1b5+incompatible
2928
k8s.io/code-generator v0.18.8
29+
k8s.io/klog v1.0.0
3030
k8s.io/kube-openapi v0.0.0-20200410145947-bcb3869e6f29
3131
knative.dev/pkg v0.0.0-20200922164940-4bf40ad82aab
3232
)

go.sum

+15
Original file line numberDiff line numberDiff line change
@@ -635,7 +635,9 @@ github.com/google/licenseclassifier v0.0.0-20200402202327-879cb1424de0/go.mod h1
635635
github.com/google/licenseclassifier v0.0.0-20200708223521-3d09a0ea2f39/go.mod h1:qsqn2hxC+vURpyBRygGUuinTO42MFRLcsmQ/P8v94+M=
636636
github.com/google/mako v0.0.0-20190821191249-122f8dcef9e3/go.mod h1:YzLcVlL+NqWnmUEPuhS1LxDDwGO9WNbVlEXaF4IH35g=
637637
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
638+
github.com/google/martian v2.1.1-0.20190517191504-25dcb96d9e51+incompatible h1:xmapqc1AyLoB+ddYT6r04bD9lIjlOqGaREovi0SzFaE=
638639
github.com/google/martian v2.1.1-0.20190517191504-25dcb96d9e51+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
640+
github.com/google/martian/v3 v3.0.0 h1:pMen7vLs8nvgEYhywH3KDWJIJTeEr2ULsVWHWYHQyBs=
639641
github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
640642
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
641643
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
@@ -827,6 +829,7 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
827829
github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA=
828830
github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw=
829831
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
832+
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
830833
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
831834
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
832835
github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
@@ -928,11 +931,14 @@ github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxzi
928931
github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w=
929932
github.com/nats-io/nuid v1.0.0/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
930933
github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
934+
github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32 h1:W6apQkHrMkS0Muv8G/TipAy/FJl/rCYT0+EuS8+Z0z4=
931935
github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms=
932936
github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d/go.mod h1:o96djdrsSGy3AWPyBgZMAGfxZNfgntdJG+11KU4QvbU=
933937
github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM=
938+
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
934939
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
935940
github.com/nwaples/rardecode v1.0.0/go.mod h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0=
941+
github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78=
936942
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
937943
github.com/octago/sflags v0.2.0/go.mod h1:G0bjdxh4qPRycF74a2B8pU36iTp9QHGx0w0dFZXPt80=
938944
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
@@ -945,6 +951,7 @@ github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+
945951
github.com/onsi/ginkgo v1.10.2/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
946952
github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
947953
github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg=
954+
github.com/onsi/ginkgo v1.12.1 h1:mFwc4LvZ0xpSvDZ3E+k8Yte0hLOMxXUlP+yXtJqkYfQ=
948955
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
949956
github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
950957
github.com/onsi/gomega v1.4.2/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
@@ -954,6 +961,7 @@ github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1Cpa
954961
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
955962
github.com/onsi/gomega v1.8.1/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA=
956963
github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA=
964+
github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE=
957965
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
958966
github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk=
959967
github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s=
@@ -994,6 +1002,7 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
9941002
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
9951003
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
9961004
github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA=
1005+
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
9971006
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
9981007
github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
9991008
github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA=
@@ -1140,6 +1149,7 @@ github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoH
11401149
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
11411150
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
11421151
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
1152+
github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4=
11431153
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
11441154
github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
11451155
github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww=
@@ -1179,6 +1189,7 @@ github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/
11791189
github.com/urfave/cli v1.18.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
11801190
github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
11811191
github.com/uudashr/gocognit v1.0.1/go.mod h1:j44Ayx2KW4+oB6SWMv8KsmHzZrOInQav7D3cQMJ5JUM=
1192+
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
11821193
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
11831194
github.com/valyala/fasthttp v1.2.0/go.mod h1:4vX61m6KN+xDduDNwXrhIAVZaZaZiQ1luJk8LWSxF3s=
11841195
github.com/valyala/quicktemplate v1.2.0/go.mod h1:EH+4AkTd43SvgIbQHYu59/cJyxDoOVRUAfrukLPuGJ4=
@@ -1243,6 +1254,7 @@ go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+
12431254
go.uber.org/multierr v1.4.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=
12441255
go.uber.org/multierr v1.5.0 h1:KCa4XfM8CWFCpxXRGok+Q0SS/0XBhMDbHHGABQLvD2A=
12451256
go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU=
1257+
go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4=
12461258
go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
12471259
go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
12481260
go.uber.org/zap v1.9.2-0.20180814183419-67bc79d13d15/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
@@ -1732,6 +1744,7 @@ gopkg.in/check.v1 v1.0.0-20141024133853-64131543e789/go.mod h1:Co6ibVJAznAaIkqp8
17321744
gopkg.in/check.v1 v1.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
17331745
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
17341746
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
1747+
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
17351748
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
17361749
gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
17371750
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
@@ -1756,6 +1769,7 @@ gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76
17561769
gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzEk0GjC98=
17571770
gopkg.in/src-d/go-git-fixtures.v3 v3.5.0/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g=
17581771
gopkg.in/src-d/go-git.v4 v4.13.1/go.mod h1:nx5NYcxdKxq5fpltdHnPa2Exj4Sx0EclMWZQbYDu2z8=
1772+
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
17591773
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
17601774
gopkg.in/warnings.v0 v0.1.1/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
17611775
gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
@@ -1770,6 +1784,7 @@ gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
17701784
gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
17711785
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
17721786
gopkg.in/yaml.v3 v3.0.0-20190709130402-674ba3eaed22/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
1787+
gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo=
17731788
gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
17741789
helm.sh/helm/v3 v3.1.1/go.mod h1:WYsFJuMASa/4XUqLyv54s0U/f3mlAaRErGmyy4z921g=
17751790
honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=

pkg/reconciler/pipelinerun/controller.go

+8-5
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,12 @@ import (
3333
resourceinformer "github.com/tektoncd/pipeline/pkg/client/resource/injection/informers/resource/v1alpha1/pipelineresource"
3434
cloudeventclient "github.com/tektoncd/pipeline/pkg/reconciler/events/cloudevent"
3535
"github.com/tektoncd/pipeline/pkg/reconciler/volumeclaim"
36-
"github.com/tektoncd/pipeline/pkg/timeout"
36+
"k8s.io/apimachinery/pkg/types"
3737
"k8s.io/client-go/tools/cache"
3838
kubeclient "knative.dev/pkg/client/injection/kube/client"
3939
"knative.dev/pkg/configmap"
4040
"knative.dev/pkg/controller"
41+
"knative.dev/pkg/kmeta"
4142
"knative.dev/pkg/logging"
4243
"knative.dev/pkg/tracker"
4344
)
@@ -55,7 +56,6 @@ func NewController(namespace string, images pipeline.Images) func(context.Contex
5556
pipelineInformer := pipelineinformer.Get(ctx)
5657
resourceInformer := resourceinformer.Get(ctx)
5758
conditionInformer := conditioninformer.Get(ctx)
58-
timeoutHandler := timeout.NewHandler(ctx.Done(), logger)
5959
metrics, err := NewRecorder()
6060
if err != nil {
6161
logger.Errorf("Failed to create pipelinerun metrics recorder %v", err)
@@ -72,7 +72,6 @@ func NewController(namespace string, images pipeline.Images) func(context.Contex
7272
taskRunLister: taskRunInformer.Lister(),
7373
resourceLister: resourceInformer.Lister(),
7474
conditionLister: conditionInformer.Lister(),
75-
timeoutHandler: timeoutHandler,
7675
cloudEventClient: cloudeventclient.Get(ctx),
7776
metrics: metrics,
7877
pvcHandler: volumeclaim.NewPVCHandler(kubeclientset, logger),
@@ -86,8 +85,12 @@ func NewController(namespace string, images pipeline.Images) func(context.Contex
8685
}
8786
})
8887

89-
timeoutHandler.SetCallbackFunc(impl.EnqueueKey)
90-
go timeoutHandler.CheckTimeouts(ctx, namespace, kubeclientset, pipelineclientset)
88+
c.snooze = func(acc kmeta.Accessor, amnt time.Duration) {
89+
impl.EnqueueKeyAfter(types.NamespacedName{
90+
Namespace: acc.GetNamespace(),
91+
Name: acc.GetName(),
92+
}, amnt)
93+
}
9194

9295
logger.Info("Setting up event handlers")
9396
pipelineRunInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{

pkg/reconciler/pipelinerun/pipelinerun.go

+15-8
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ import (
4646
"github.com/tektoncd/pipeline/pkg/reconciler/taskrun"
4747
tresources "github.com/tektoncd/pipeline/pkg/reconciler/taskrun/resources"
4848
"github.com/tektoncd/pipeline/pkg/reconciler/volumeclaim"
49-
"github.com/tektoncd/pipeline/pkg/timeout"
5049
"github.com/tektoncd/pipeline/pkg/workspace"
5150
"go.uber.org/zap"
5251
corev1 "k8s.io/api/core/v1"
@@ -56,6 +55,7 @@ import (
5655
"k8s.io/client-go/kubernetes"
5756
"knative.dev/pkg/apis"
5857
"knative.dev/pkg/controller"
58+
"knative.dev/pkg/kmeta"
5959
"knative.dev/pkg/logging"
6060
pkgreconciler "knative.dev/pkg/reconciler"
6161
"knative.dev/pkg/tracker"
@@ -121,9 +121,10 @@ type Reconciler struct {
121121
conditionLister listersv1alpha1.ConditionLister
122122
cloudEventClient cloudevent.CEClient
123123
tracker tracker.Interface
124-
timeoutHandler *timeout.Handler
125124
metrics *Recorder
126125
pvcHandler volumeclaim.PvcHandler
126+
127+
snooze func(kmeta.Accessor, time.Duration)
127128
}
128129

129130
var (
@@ -149,8 +150,6 @@ func (c *Reconciler) ReconcileKind(ctx context.Context, pr *v1beta1.PipelineRun)
149150
pr.Status.StartTime = &pr.CreationTimestamp
150151
}
151152

152-
// start goroutine to track pipelinerun timeout only startTime is not set
153-
go c.timeoutHandler.Wait(pr.GetNamespacedName(), *pr.Status.StartTime, getPipelineRunTimeout(ctx, pr))
154153
// Emit events. During the first reconcile the status of the PipelineRun may change twice
155154
// from not Started to Started and then to Running, so we need to sent the event here
156155
// and at the end of 'Reconcile' again.
@@ -185,7 +184,6 @@ func (c *Reconciler) ReconcileKind(ctx context.Context, pr *v1beta1.PipelineRun)
185184
logger.Errorf("Failed to delete StatefulSet for PipelineRun %s: %v", pr.Name, err)
186185
return c.finishReconcileUpdateEmitEvents(ctx, pr, before, err)
187186
}
188-
c.timeoutHandler.Release(pr.GetNamespacedName())
189187
if err := c.updateTaskRunsStatusDirectly(pr); err != nil {
190188
logger.Errorf("Failed to update TaskRun status for PipelineRun %s: %v", pr.Name, err)
191189
return c.finishReconcileUpdateEmitEvents(ctx, pr, before, err)
@@ -217,6 +215,15 @@ func (c *Reconciler) ReconcileKind(ctx context.Context, pr *v1beta1.PipelineRun)
217215
logger.Errorf("Error while syncing the pipelinerun status: %v", err.Error())
218216
return c.finishReconcileUpdateEmitEvents(ctx, pr, before, err)
219217
}
218+
defer func() {
219+
if pr.Status.StartTime == nil || pr.Spec.Timeout == nil {
220+
return
221+
}
222+
// Compute the time since the task started.
223+
elapsed := time.Since(pr.Status.StartTime.Time)
224+
// Snooze this resource until the timeout has elapsed.
225+
c.snooze(pr, getPipelineRunTimeout(ctx, pr)-elapsed)
226+
}()
220227

221228
// Reconcile this copy of the pipelinerun and then write back any status or label
222229
// updates regardless of whether the reconciliation errored out.
@@ -797,12 +804,12 @@ func combineTaskRunAndTaskSpecAnnotations(pr *v1beta1.PipelineRun, pipelineTask
797804
return annotations
798805
}
799806

800-
func getPipelineRunTimeout(ctx context.Context, pr *v1beta1.PipelineRun) metav1.Duration {
807+
func getPipelineRunTimeout(ctx context.Context, pr *v1beta1.PipelineRun) time.Duration {
801808
if pr.Spec.Timeout == nil {
802809
defaultTimeout := time.Duration(config.FromContextOrDefaults(ctx).Defaults.DefaultTimeoutMinutes)
803-
return metav1.Duration{Duration: defaultTimeout * time.Minute}
810+
return defaultTimeout * time.Minute
804811
}
805-
return *pr.Spec.Timeout
812+
return pr.Spec.Timeout.Duration
806813
}
807814

808815
func getTaskRunTimeout(ctx context.Context, pr *v1beta1.PipelineRun, rprt *resources.ResolvedPipelineRunTask) *metav1.Duration {

pkg/reconciler/taskrun/controller.go

+9-5
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package taskrun
1818

1919
import (
2020
"context"
21+
"time"
2122

2223
"github.com/tektoncd/pipeline/pkg/apis/config"
2324
"github.com/tektoncd/pipeline/pkg/apis/pipeline"
@@ -31,12 +32,13 @@ import (
3132
"github.com/tektoncd/pipeline/pkg/pod"
3233
cloudeventclient "github.com/tektoncd/pipeline/pkg/reconciler/events/cloudevent"
3334
"github.com/tektoncd/pipeline/pkg/reconciler/volumeclaim"
34-
"github.com/tektoncd/pipeline/pkg/timeout"
35+
"k8s.io/apimachinery/pkg/types"
3536
"k8s.io/client-go/tools/cache"
3637
kubeclient "knative.dev/pkg/client/injection/kube/client"
3738
podinformer "knative.dev/pkg/client/injection/kube/informers/core/v1/pod"
3839
"knative.dev/pkg/configmap"
3940
"knative.dev/pkg/controller"
41+
"knative.dev/pkg/kmeta"
4042
"knative.dev/pkg/logging"
4143
"knative.dev/pkg/tracker"
4244
)
@@ -52,7 +54,6 @@ func NewController(namespace string, images pipeline.Images) func(context.Contex
5254
clusterTaskInformer := clustertaskinformer.Get(ctx)
5355
podInformer := podinformer.Get(ctx)
5456
resourceInformer := resourceinformer.Get(ctx)
55-
timeoutHandler := timeout.NewHandler(ctx.Done(), logger)
5657
metrics, err := NewRecorder()
5758
if err != nil {
5859
logger.Errorf("Failed to create taskrun metrics recorder %v", err)
@@ -71,7 +72,6 @@ func NewController(namespace string, images pipeline.Images) func(context.Contex
7172
taskLister: taskInformer.Lister(),
7273
clusterTaskLister: clusterTaskInformer.Lister(),
7374
resourceLister: resourceInformer.Lister(),
74-
timeoutHandler: timeoutHandler,
7575
cloudEventClient: cloudeventclient.Get(ctx),
7676
metrics: metrics,
7777
entrypointCache: entrypointCache,
@@ -87,8 +87,12 @@ func NewController(namespace string, images pipeline.Images) func(context.Contex
8787
}
8888
})
8989

90-
timeoutHandler.SetCallbackFunc(impl.EnqueueKey)
91-
go timeoutHandler.CheckTimeouts(ctx, namespace, kubeclientset, pipelineclientset)
90+
c.snooze = func(acc kmeta.Accessor, amnt time.Duration) {
91+
impl.EnqueueKeyAfter(types.NamespacedName{
92+
Namespace: acc.GetNamespace(),
93+
Name: acc.GetName(),
94+
}, amnt)
95+
}
9296

9397
logger.Info("Setting up event handlers")
9498
taskRunInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{

0 commit comments

Comments
 (0)