@@ -2,6 +2,7 @@ package main
2
2
3
3
import (
4
4
"context"
5
+ "errors"
5
6
"fmt"
6
7
"log"
7
8
"os"
@@ -49,7 +50,11 @@ func main() {
49
50
50
51
svisor := supervisor .New ("flypg" , 5 * time .Minute )
51
52
52
- go scaleToZeroWorker (ctx , node , svisor )
53
+ go func () {
54
+ if err := scaleToZeroWorker (ctx , node , svisor ); err != nil {
55
+ os .Exit (0 )
56
+ }
57
+ }()
53
58
54
59
svisor .AddProcess ("postgres" , fmt .Sprintf ("gosu postgres postgres -D %s -p %d" , node .DataDir , node .Port ))
55
60
@@ -91,16 +96,16 @@ func main() {
91
96
}
92
97
}
93
98
94
- func scaleToZeroWorker (ctx context.Context , node * flypg.Node , svisor * supervisor.Supervisor ) {
99
+ func scaleToZeroWorker (ctx context.Context , node * flypg.Node , svisor * supervisor.Supervisor ) error {
95
100
rawTimeout , exists := os .LookupEnv ("FLY_SCALE_TO_ZERO" )
96
101
if ! exists {
97
- return
102
+ return nil
98
103
}
99
104
100
105
duration , err := time .ParseDuration (rawTimeout )
101
106
if err != nil {
102
107
fmt .Printf ("failed to parse FLY_SCALE_TO_ZERO duration %s\n " , err )
103
- return
108
+ return nil
104
109
}
105
110
106
111
fmt .Printf ("Configured scale to zero with duration of %s\n " , duration .String ())
@@ -110,7 +115,7 @@ func scaleToZeroWorker(ctx context.Context, node *flypg.Node, svisor *supervisor
110
115
for {
111
116
select {
112
117
case <- ctx .Done ():
113
- return
118
+ return nil
114
119
case <- ticker .C :
115
120
current , err := getCurrentConnCount (ctx , node )
116
121
if err != nil {
@@ -122,8 +127,7 @@ func scaleToZeroWorker(ctx context.Context, node *flypg.Node, svisor *supervisor
122
127
continue
123
128
}
124
129
svisor .Stop ()
125
- // skipcq: CRT-D0011, RVV-A0003
126
- os .Exit (0 )
130
+ return errors .New ("scale to zero condition hit" )
127
131
}
128
132
}
129
133
}
0 commit comments