Skip to content

Commit a31b26a

Browse files
committed
refactor: optimize code following Google Go best practices
- Simplify error wrapping to avoid redundant double wrapping - Add clear documentation for intentional error ignoring in fingerprint generation - Improve error messages with specific context instead of generic sentinel errors - Follow Google Go style guide recommendations for error handling
1 parent 6c086f0 commit a31b26a

File tree

4 files changed

+12
-8
lines changed

4 files changed

+12
-8
lines changed

client.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ func NewClient(redisConfig *RedisConfig, opts ...ClientOption) (*Client, error)
3434
return nil, ErrInvalidRedisConfig
3535
}
3636
if err := redisConfig.Validate(); err != nil {
37-
return nil, fmt.Errorf("%w: %w", ErrInvalidRedisConfig, err)
37+
return nil, fmt.Errorf("invalid redis config: %w", err)
3838
}
3939

4040
asynqClient := asynq.NewClient(redisConfig.ToAsynqRedisOpt())

job.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ func (j *Job) ConvertToAsynqTask() (*asynq.Task, []asynq.Option, error) {
9999

100100
payloadBytes, err := json.Marshal(j.Payload)
101101
if err != nil {
102-
return nil, nil, fmt.Errorf("%w: %w", ErrSerializationFailure, err)
102+
return nil, nil, fmt.Errorf("failed to serialize payload: %w", err)
103103
}
104104

105105
opts := j.ConvertToAsynqOptions()
@@ -142,6 +142,10 @@ func (j *Job) fingerprint() {
142142

143143
hash := md5.New() //nolint:gosec
144144
hash.Write([]byte(j.Type))
145+
146+
// Marshal payload and options for fingerprint generation.
147+
// Errors are intentionally ignored - partial JSON is acceptable for fingerprinting.
148+
// The fingerprint is used for deduplication and debugging, not data integrity.
145149
payloadBytes, _ := json.Marshal(j.Payload)
146150
hash.Write(payloadBytes)
147151
optionsBytes, _ := json.Marshal(j.Options)
@@ -154,7 +158,7 @@ func (j *Job) fingerprint() {
154158
func (j *Job) DecodePayload(v any) error {
155159
payloadBytes, err := json.Marshal(j.Payload)
156160
if err != nil {
157-
return fmt.Errorf("%w: %w", ErrSerializationFailure, err)
161+
return fmt.Errorf("failed to serialize payload: %w", err)
158162
}
159163
return json.Unmarshal(payloadBytes, v)
160164
}
@@ -179,12 +183,12 @@ func (j *Job) WriteResult(result any) error {
179183

180184
resultBytes, err := json.Marshal(result)
181185
if err != nil {
182-
return fmt.Errorf("%w: %w", ErrSerializationFailure, err)
186+
return fmt.Errorf("failed to serialize result: %w", err)
183187
}
184188

185189
_, err = j.resultWriter.Write(resultBytes)
186190
if err != nil {
187-
return fmt.Errorf("%w: %w", ErrFailedToWriteResult, err)
191+
return fmt.Errorf("failed to write result: %w", err)
188192
}
189193

190194
return nil

scheduler.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ func NewScheduler(redisConfig *RedisConfig, opts ...SchedulerOption) (*Scheduler
8282
return nil, ErrInvalidRedisConfig
8383
}
8484
if err := redisConfig.Validate(); err != nil {
85-
return nil, fmt.Errorf("%w: %w", ErrInvalidRedisConfig, err)
85+
return nil, fmt.Errorf("invalid redis config: %w", err)
8686
}
8787

8888
asynqClientOpt := redisConfig.ToAsynqRedisOpt()

worker.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ func NewWorker(redisConfig *RedisConfig, opts ...WorkerOption) (*Worker, error)
7777
return nil, ErrInvalidRedisConfig
7878
}
7979
if err := redisConfig.Validate(); err != nil {
80-
return nil, fmt.Errorf("%w: %w", ErrInvalidRedisConfig, err)
80+
return nil, fmt.Errorf("invalid redis config: %w", err)
8181
}
8282

8383
// Apply default configuration and options.
@@ -97,7 +97,7 @@ func NewWorker(redisConfig *RedisConfig, opts ...WorkerOption) (*Worker, error)
9797

9898
// Validate the WorkerConfig.
9999
if err := config.Validate(); err != nil {
100-
return nil, fmt.Errorf("%w: %w", ErrInvalidWorkerConfig, err)
100+
return nil, fmt.Errorf("invalid worker config: %w", err)
101101
}
102102

103103
// Setup the Worker instance.

0 commit comments

Comments
 (0)