Disable prefetch of entire head object when GET request with range header.
The current behavior for the RGW is getting the whole object although the client asked only for a small bytes offset.
For example: If the client asked for bytes=0-1, The RGW will anyway fetch 0-
4194304
Fixes: https://tracker.ceph.com/issues/44508
Signed-off-by: Or Friedmann <ofriedma@redhat.com>
(cherry picked from commit
2be5af0006169cb54547034aa98b7eacb8751d59)
return false;
}
- bool prefetch_first_chunk = true;
range_str = s->info.env->get("HTTP_RANGE");
-
+ // TODO: add range prefetch
if (range_str) {
- int r = parse_range();
- /* error on parsing the range, stop prefetch and will fail in execute() */
- if (r < 0) {
- return false; /* range_parsed==false */
- }
- /* range get goes to shadow objects, stop prefetch */
- if (ofs >= s->cct->_conf->rgw_max_chunk_size) {
- prefetch_first_chunk = false;
- }
+ parse_range();
+ return false;
}
- return get_data && prefetch_first_chunk;
+ return get_data;
}
void RGWGetObj::pre_exec()