@@ -38,6 +38,10 @@ func main() {
3838 logger .Get ().Warn ("invalid number of writers, using default" , zap .Int ("default" , numOfWriters ))
3939 }
4040
41+ // Timeout configuration
42+ connWriteTimeout := 10 * time .Second
43+ hSetExpireTimeout := 1 * time .Second
44+
4145 metricsWg := sync.WaitGroup {}
4246 opts := & metrics.PushOptions {
4347 WaitGroup : & metricsWg ,
@@ -53,7 +57,7 @@ func main() {
5357 writers := make ([]* Writer , numOfWriters )
5458 for i := 0 ; i < numOfWriters ; i ++ {
5559 logger .Get ().Info ("creating writers" , zap .Int ("num" , i ))
56- writer , err := NewWriter ()
60+ writer , err := NewWriter (connWriteTimeout )
5761 if err != nil {
5862 logger .Get ().Error ("unable to get rueidis client" , zap .Error (err ))
5963 return
@@ -81,9 +85,11 @@ func main() {
8185 // Create and increment initialization counter with configuration metrics
8286 // Convert delay to milliseconds for readability
8387 delayMs := int64 (* writeDelay / time .Millisecond )
88+ connWriteTimeoutMs := int64 (connWriteTimeout / time .Millisecond )
89+ hSetExpireTimeoutMs := int64 (hSetExpireTimeout / time .Millisecond )
8490 initCounter := metrics .GetOrCreateCounter (fmt .Sprintf (
85- `kvrocks_writer_initialized_total{writers="%d",delay_ms="%d",payload_size_bytes="%d",total_size_per_key_bytes="%d"}` ,
86- numOfWriters , delayMs , payloadSize , totalSizePerKey ,
91+ `kvrocks_writer_initialized_total{writers="%d",delay_ms="%d",payload_size_bytes="%d",total_size_per_key_bytes="%d",conn_write_timeout_ms="%d",hsetexpire_timeout_ms="%d" }` ,
92+ numOfWriters , delayMs , payloadSize , totalSizePerKey , connWriteTimeoutMs , hSetExpireTimeoutMs ,
8793 ))
8894 initCounter .Inc ()
8995
@@ -92,7 +98,7 @@ func main() {
9298 logger .Get ().Info ("starting writers" , zap .Int ("start_index" , * start ))
9399 for i , writer := range writers {
94100 wg .Add (1 )
95- go writer .Start (ctx , & wg , data , cols , * writeDelay , int64 (* start ), i , numOfWriters )
101+ go writer .Start (ctx , & wg , data , cols , * writeDelay , int64 (* start ), i , numOfWriters , hSetExpireTimeout )
96102 }
97103
98104 logger .Get ().Info ("service running, waiting for shutdown signal" )
@@ -125,12 +131,12 @@ type Writer struct {
125131 client rueidis.Client
126132}
127133
128- func NewWriter () (* Writer , error ) {
134+ func NewWriter (connWriteTimeout time. Duration ) (* Writer , error ) {
129135 client , err := rueidis .NewClient (
130136 rueidis.ClientOption {
131137 InitAddress : []string {"kvrocks-byron-test.us-east-1.stackadapt:6379" },
132138 ShuffleInit : true ,
133- ConnWriteTimeout : 10 * time . Second ,
139+ ConnWriteTimeout : connWriteTimeout ,
134140 DisableCache : true , // client cache is not enabled on kvrocks
135141 PipelineMultiplex : 5 ,
136142 MaxFlushDelay : 50 * time .Microsecond ,
@@ -165,7 +171,7 @@ func intToAlphabetKey(n int64) string {
165171 return string (result )
166172}
167173
168- func (w * Writer ) Start (ctx context.Context , wg * sync.WaitGroup , data map [string ][]byte , cols []string , sleep time.Duration , startIndex int64 , writerIndex int , numWriters int ) {
174+ func (w * Writer ) Start (ctx context.Context , wg * sync.WaitGroup , data map [string ][]byte , cols []string , sleep time.Duration , startIndex int64 , writerIndex int , numWriters int , hSetExpireTimeout time. Duration ) {
169175 defer wg .Done ()
170176 // Each writer starts at startIndex + writerIndex, then increments by numWriters
171177 // This ensures no two writers write to the same key
@@ -182,7 +188,7 @@ func (w *Writer) Start(ctx context.Context, wg *sync.WaitGroup, data map[string]
182188
183189 // Convert integer keyIndex to alphabet-only key before passing to hSetExpire
184190 alphabetKey := intToAlphabetKey (keyIndex )
185- err := hSetExpire (ctx , time . Millisecond * 1000 , w .client , alphabetKey , cols , data , time .Hour * 24 * 7 )
191+ err := hSetExpire (ctx , hSetExpireTimeout , w .client , alphabetKey , cols , data , time .Hour * 24 * 7 )
186192 if err != nil {
187193 // Check if error is due to context cancellation
188194 if ctx .Err () != nil {
0 commit comments