Skip to content

Commit 0ea4d95

Browse files
YEXINGZHE54stefanvassilev
authored andcommitted
Check elasticsearch response nil in bulk processor (jaegertracing#1467)
* Avoid process crash when elasticsearch response is nil Add nil pointer check in elasticsearch bulkprocessor's after callback, defined inside pkg/es/config/config.go. In some rare cases, elasticsearch request will return error with nil response, and then nil response will be passed into after callback, and using of nil pointer will cause process crash. Signed-off-by: Li Zhaoxing <lizhaoxing@4paradigm.com> * Remove unnecessary wrap arround nil pointer in log Signed-off-by: Li Zhaoxing <lizhaoxing@4paradigm.com> Signed-off-by: stefan vassilev <stefanvassilev1@gmail.com>
1 parent 151a729 commit 0ea4d95

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

pkg/es/config/config.go

+7-2
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ func (c *Configuration) NewClient(logger *zap.Logger, metricsFactory metrics.Fac
114114
m.Delete(id)
115115

116116
// log individual errors, note that err might be false and these errors still present
117-
if response.Errors {
117+
if response != nil && response.Errors {
118118
for _, it := range response.Items {
119119
for key, val := range it {
120120
if val.Error != nil {
@@ -127,7 +127,12 @@ func (c *Configuration) NewClient(logger *zap.Logger, metricsFactory metrics.Fac
127127

128128
sm.Emit(err, time.Since(start.(time.Time)))
129129
if err != nil {
130-
failed := len(response.Failed())
130+
var failed int
131+
if response == nil {
132+
failed = 0
133+
} else {
134+
failed = len(response.Failed())
135+
}
131136
total := len(requests)
132137
logger.Error("Elasticsearch could not process bulk request",
133138
zap.Int("request_count", total),

0 commit comments

Comments
 (0)