Project

General

Profile

Actions

Bug #20098

closed

rgw: connection reset or radosgw crashed when download large zero object with compression enable

Added by fang yuxiang almost 7 years ago. Updated over 6 years ago.

Status:
Resolved
Priority:
High
Assignee:
Target version:
-
% Done:

0%

Source:
Tags:
Backport:
kraken
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):

Description

large zero object has a large compression rate, even 4M compressed data can decompress several GB data. Handle so much data in single process lead strange issue.

a) if you upload a zero object with size 4G, then connection reset will happen when you download it (civetweb return error, when send response to client)

b) if you upload a zero object with size 10G, then radosgw will crashed with below info:

/home/fyx/github/ceph/src/common/buffer.cc: 1010: FAILED assert(o+l <= len) ceph version 12.0.2-1605-g2f9ee0b (2f9ee0badd190c63946395869d3c72321127839a) 1: (ceph::_ceph_assert_fail(char const*, char const*, int, char const*)+0x110) [0x7f79c8784030] 2: (ceph::buffer::ptr::copy_in(unsigned int, unsigned int, char const*, bool)+0x235) [0x7f79d1e76295] 3: (ceph::buffer::list::rebuild(ceph::buffer::ptr&)+0x4c) [0x7f79d1e76b9c] 4: (ceph::buffer::list::rebuild()+0x8b) [0x7f79d1e7754b] 5: (ceph::buffer::list::c_str()+0x19) [0x7f79d1e775e9] 6: (RGWGetObj_ObjStore_S3::send_response_data(ceph::buffer::list&, long, long)+0x4c2) [0x7f79d26cf5b2] 7: (RGWGetObj::get_data_cb(ceph::buffer::list&, long, long)+0x5b) [0x7f79d25c0f5b] 8: (RGWGetObj_Decompress::handle_data(ceph::buffer::list&, long, long)+0x3b2) [0x7f79d274ec12] 9: (RGWRados::flush_read_list(get_obj_data*)+0xae) [0x7f79d260dc0e] 10: (RGWRados::Object::Read::iterate(long, long, RGWGetDataCB*)+0x345) [0x7f79d2652685] 11: (RGWGetObj::execute()+0xd18) [0x7f79d25e4da8] 12: (rgw_process_authenticated(RGWHandler_REST*, RGWOp*&, RGWRequest*, req_state*, bool)+0x162) [0x7f79d25fb422] 13: (process_request(RGWRados*, RGWREST*, RGWRequest*, std::string const&, rgw::auth::StrategyRegistry const&, RGWRestfulIO*, OpsLogSocket*)+0xb66) [0x7f79d25fc1b6] 14: (RGWCivetWebFrontend::process(mg_connection*)+0x31c) [0x7f79d24e141c] 15: (()+0x1e0c6f) [0x7f79d251ac6f] 16: (()+0x1e25fb) [0x7f79d251c5fb] 17: (()+0x7df5) [0x7f79c80dadf5] 18: (clone()+0x6d) [0x7f79c5d6a1ad]


Related issues 1 (0 open1 closed)

Copied to rgw - Backport #20479: kraken: rgw: connection reset or radosgw crashed when download large zero object with compression enableRejectedActions
Actions

Also available in: Atom PDF