Ceph : Issues
https://tracker.ceph.com/
https://tracker.ceph.com/favicon.ico
2019-02-15T03:56:14Z
Ceph
Redmine
rgw - Bug #38327 (Resolved): rgw_file: can't retrieve etag of empty object written through NFS
https://tracker.ceph.com/issues/38327
2019-02-15T03:56:14Z
Tao CHEN
<p>Hi all, it seems that empty file written by NFS will get a empty etag and acls.</p>
<p>ceph version: V12.2.5<br />nfs-ganesha version: V2.6.2</p>
<a name="Way-to-reproduce"></a>
<h2 ><strong>Way to reproduce:</strong><a href="#Way-to-reproduce" class="wiki-anchor">¶</a></h2>
<p>1.start nfs-ganesha server<br />2.mount export to local, like /mnt<br />3.cd /mnt && touch empty_file</p>
<p>run a python script in order to get object infoļ¼</p>
<pre><code class="python syntaxhl"><span class="CodeRay"><span class="keyword">import</span> <span class="include">boto3</span>
s3 = boto3.client(
<span class="string"><span class="delimiter">'</span><span class="content">s3</span><span class="delimiter">'</span></span>,
aws_access_key_id=<span class="string"><span class="delimiter">"</span><span class="content">xxx</span><span class="delimiter">"</span></span>,
aws_secret_access_key=<span class="string"><span class="delimiter">"</span><span class="content">xxx</span><span class="delimiter">"</span></span>,
endpoint_url=<span class="string"><span class="delimiter">"</span><span class="content">rgw_endpoint_addr</span><span class="delimiter">"</span></span>)
response = s3.list_objects(
Bucket=<span class="string"><span class="delimiter">'</span><span class="content">bucket_name</span><span class="delimiter">'</span></span>
)
print(response)
</span></code></pre>
<p>here is the results:</p>
<pre><code class="json syntaxhl"><span class="CodeRay">{
<span class="error">'</span><span class="error">N</span><span class="error">a</span><span class="error">m</span><span class="error">e</span><span class="error">'</span>:<span class="error">'</span><span class="error">b</span><span class="error">u</span><span class="error">c</span><span class="error">k</span><span class="error">e</span><span class="error">t</span><span class="integer">1</span><span class="error">'</span>,
<span class="error">'</span><span class="error">R</span><span class="error">e</span><span class="error">s</span><span class="error">p</span><span class="error">o</span><span class="error">n</span><span class="error">s</span><span class="error">e</span><span class="error">M</span><span class="error">e</span><span class="error">t</span><span class="error">a</span><span class="error">d</span><span class="error">a</span><span class="error">t</span><span class="error">a</span><span class="error">'</span>:{
<span class="error">'</span><span class="error">H</span><span class="error">T</span><span class="error">T</span><span class="error">P</span><span class="error">S</span><span class="error">t</span><span class="error">a</span><span class="error">t</span><span class="error">u</span><span class="error">s</span><span class="error">C</span><span class="error">o</span><span class="error">d</span><span class="error">e</span><span class="error">'</span>:<span class="integer">200</span>,
<span class="error">'</span><span class="error">R</span><span class="error">e</span><span class="error">t</span><span class="error">r</span><span class="error">y</span><span class="error">A</span><span class="error">t</span><span class="error">t</span><span class="error">e</span><span class="error">m</span><span class="error">p</span><span class="error">t</span><span class="error">s</span><span class="error">'</span>:<span class="integer">0</span>,
<span class="error">'</span><span class="error">H</span><span class="error">o</span><span class="error">s</span><span class="error">t</span><span class="error">I</span><span class="error">d</span><span class="error">'</span>:<span class="error">'</span><span class="error">'</span>,
<span class="error">'</span><span class="error">R</span><span class="error">e</span><span class="error">q</span><span class="error">u</span><span class="error">e</span><span class="error">s</span><span class="error">t</span><span class="error">I</span><span class="error">d</span><span class="error">'</span>:<span class="error">'</span><span class="error">t</span><span class="error">x</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="error">d</span><span class="integer">-0</span><span class="integer">0</span><span class="integer">5</span><span class="error">c</span><span class="integer">663612</span><span class="integer">-114</span><span class="error">b</span><span class="error">-</span><span class="error">d</span><span class="error">e</span><span class="error">f</span><span class="error">a</span><span class="error">u</span><span class="error">l</span><span class="error">t</span><span class="error">'</span>,
<span class="error">'</span><span class="error">H</span><span class="error">T</span><span class="error">T</span><span class="error">P</span><span class="error">H</span><span class="error">e</span><span class="error">a</span><span class="error">d</span><span class="error">e</span><span class="error">r</span><span class="error">s</span><span class="error">'</span>:{
<span class="error">'</span><span class="error">t</span><span class="error">r</span><span class="error">a</span><span class="error">n</span><span class="error">s</span><span class="error">f</span><span class="error">e</span><span class="error">r</span><span class="error">-</span><span class="error">e</span><span class="error">n</span><span class="error">c</span><span class="error">o</span><span class="error">d</span><span class="error">i</span><span class="error">n</span><span class="error">g</span><span class="error">'</span>:<span class="error">'</span><span class="error">c</span><span class="error">h</span><span class="error">u</span><span class="error">n</span><span class="error">k</span><span class="error">e</span><span class="error">d</span><span class="error">'</span>,
<span class="error">'</span><span class="error">d</span><span class="error">a</span><span class="error">t</span><span class="error">e</span><span class="error">'</span>:<span class="error">'</span><span class="error">F</span><span class="error">r</span><span class="error">i</span>, <span class="integer">15</span> <span class="error">F</span><span class="error">e</span><span class="error">b</span> <span class="integer">2019</span> <span class="integer">0</span><span class="integer">3</span>:<span class="integer">46</span>:<span class="integer">26</span> <span class="error">G</span><span class="error">M</span><span class="error">T</span><span class="error">'</span>,
<span class="error">'</span><span class="error">x</span><span class="error">-</span><span class="error">a</span><span class="error">m</span><span class="error">z</span><span class="error">-</span><span class="error">r</span><span class="error">e</span><span class="error">q</span><span class="error">u</span><span class="error">e</span><span class="error">s</span><span class="error">t</span><span class="error">-</span><span class="error">i</span><span class="error">d</span><span class="error">'</span>:<span class="error">'</span><span class="error">t</span><span class="error">x</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="integer">0</span><span class="error">d</span><span class="integer">-0</span><span class="integer">0</span><span class="integer">5</span><span class="error">c</span><span class="integer">663612</span><span class="integer">-114</span><span class="error">b</span><span class="error">-</span><span class="error">d</span><span class="error">e</span><span class="error">f</span><span class="error">a</span><span class="error">u</span><span class="error">l</span><span class="error">t</span><span class="error">'</span>,
<span class="error">'</span><span class="error">c</span><span class="error">o</span><span class="error">n</span><span class="error">t</span><span class="error">e</span><span class="error">n</span><span class="error">t</span><span class="error">-</span><span class="error">t</span><span class="error">y</span><span class="error">p</span><span class="error">e</span><span class="error">'</span>:<span class="error">'</span><span class="error">a</span><span class="error">p</span><span class="error">p</span><span class="error">l</span><span class="error">i</span><span class="error">c</span><span class="error">a</span><span class="error">t</span><span class="error">i</span><span class="error">o</span><span class="error">n</span><span class="error">/</span><span class="error">x</span><span class="error">m</span><span class="error">l</span><span class="error">'</span>
}
},
<span class="error">'</span><span class="error">M</span><span class="error">a</span><span class="error">x</span><span class="error">K</span><span class="error">e</span><span class="error">y</span><span class="error">s</span><span class="error">'</span>:<span class="integer">1000</span>,
<span class="error">'</span><span class="error">P</span><span class="error">r</span><span class="error">e</span><span class="error">f</span><span class="error">i</span><span class="error">x</span><span class="error">'</span>:<span class="error">'</span><span class="error">'</span>,
<span class="error">'</span><span class="error">M</span><span class="error">a</span><span class="error">r</span><span class="error">k</span><span class="error">e</span><span class="error">r</span><span class="error">'</span>:<span class="error">'</span><span class="error">'</span>,
<span class="error">'</span><span class="error">E</span><span class="error">n</span><span class="error">c</span><span class="error">o</span><span class="error">d</span><span class="error">i</span><span class="error">n</span><span class="error">g</span><span class="error">T</span><span class="error">y</span><span class="error">p</span><span class="error">e</span><span class="error">'</span>:<span class="error">'</span><span class="error">u</span><span class="error">r</span><span class="error">l</span><span class="error">'</span>,
<span class="error">'</span><span class="error">I</span><span class="error">s</span><span class="error">T</span><span class="error">r</span><span class="error">u</span><span class="error">n</span><span class="error">c</span><span class="error">a</span><span class="error">t</span><span class="error">e</span><span class="error">d</span><span class="error">'</span>:<span class="error">F</span><span class="error">a</span><span class="error">l</span><span class="error">s</span><span class="error">e</span>,
<span class="error">'</span><span class="error">C</span><span class="error">o</span><span class="error">n</span><span class="error">t</span><span class="error">e</span><span class="error">n</span><span class="error">t</span><span class="error">s</span><span class="error">'</span>:[
{
<span class="error">'</span><span class="error">L</span><span class="error">a</span><span class="error">s</span><span class="error">t</span><span class="error">M</span><span class="error">o</span><span class="error">d</span><span class="error">i</span><span class="error">f</span><span class="error">i</span><span class="error">e</span><span class="error">d</span><span class="error">'</span>:<span class="error">d</span><span class="error">a</span><span class="error">t</span><span class="error">e</span><span class="error">t</span><span class="error">i</span><span class="error">m</span><span class="error">e</span><span class="error">.</span><span class="error">d</span><span class="error">a</span><span class="error">t</span><span class="error">e</span><span class="error">t</span><span class="error">i</span><span class="error">m</span><span class="error">e</span><span class="error">(</span><span class="integer">2019</span>,<span class="integer">2</span>,<span class="integer">13</span>,<span class="integer">6</span>,<span class="integer">34</span>,<span class="integer">52</span>,<span class="integer">478000</span>,<span class="error">t</span><span class="error">z</span><span class="error">i</span><span class="error">n</span><span class="error">f</span><span class="error">o</span><span class="error">=</span><span class="error">t</span><span class="error">z</span><span class="error">u</span><span class="error">t</span><span class="error">c</span><span class="error">(</span><span class="error">)</span><span class="error">)</span>,
<span class="error">'</span><span class="error">E</span><span class="error">T</span><span class="error">a</span><span class="error">g</span><span class="error">'</span>:<span class="error">'</span><span class="string"><span class="delimiter">"</span><span class="delimiter">"</span></span><span class="error">'</span>,
<span class="error">'</span><span class="error">S</span><span class="error">t</span><span class="error">o</span><span class="error">r</span><span class="error">a</span><span class="error">g</span><span class="error">e</span><span class="error">C</span><span class="error">l</span><span class="error">a</span><span class="error">s</span><span class="error">s</span><span class="error">'</span>:<span class="error">'</span><span class="error">S</span><span class="error">T</span><span class="error">A</span><span class="error">N</span><span class="error">D</span><span class="error">A</span><span class="error">R</span><span class="error">D</span><span class="error">'</span>,
<span class="error">'</span><span class="error">K</span><span class="error">e</span><span class="error">y</span><span class="error">'</span>:<span class="error">'</span><span class="error">c</span><span class="error">c</span><span class="error">c</span><span class="error">'</span>,
<span class="error">'</span><span class="error">O</span><span class="error">w</span><span class="error">n</span><span class="error">e</span><span class="error">r</span><span class="error">'</span>:{
<span class="error">'</span><span class="error">D</span><span class="error">i</span><span class="error">s</span><span class="error">p</span><span class="error">l</span><span class="error">a</span><span class="error">y</span><span class="error">N</span><span class="error">a</span><span class="error">m</span><span class="error">e</span><span class="error">'</span>:<span class="error">'</span><span class="error">'</span>,
<span class="error">'</span><span class="error">I</span><span class="error">D</span><span class="error">'</span>:<span class="error">'</span><span class="error">'</span>
},
<span class="error">'</span><span class="error">S</span><span class="error">i</span><span class="error">z</span><span class="error">e</span><span class="error">'</span>:<span class="integer">0</span>
}
]
}
</span></code></pre>
<p>ETag got nothing.</p>
<a name="Way-to-resolve"></a>
<h2 ><strong>Way to resolve</strong><a href="#Way-to-resolve" class="wiki-anchor">¶</a></h2>
<p>NFS will send a setattr request to backend when create request is done.<br />In rgw_setattr function, only RGW_ATTR_UNIX_KEY1 and RGW_ATTR_UNIX1 are saved to request, RGW_ATTR_ETAG and RGW_ATTR_ACL are forgotten. though RGW_ATTR_ETAG and RGW_ATTR_ACL are written in rgw_create step, by these two attrs will be efface in rgw_setattr:</p>
<pre><code class="c syntaxhl"><span class="CodeRay"><span class="predefined-type">int</span> RGWLibFS::setattr(RGWFileHandle* rgw_fh, <span class="keyword">struct</span> stat* st, uint32_t mask,
uint32_t flags)
{
<span class="predefined-type">int</span> rc, rc2;
buffer::list ux_key, ux_attrs;
lock_guard guard(rgw_fh->mtx);
<span class="keyword">switch</span>(rgw_fh->fh.fh_type) {
<span class="keyword">case</span> RGW_FS_TYPE_FILE:
{
<span class="keyword">if</span> (rgw_fh->deleted())
<span class="keyword">return</span> -ESTALE;
}
<span class="keyword">break</span>;
<span class="keyword">default</span>:
<span class="keyword">break</span>;
};
string obj_name{rgw_fh->relative_object_name()};
<span class="keyword">if</span> (rgw_fh->is_dir() &&
(likely(! rgw_fh->is_bucket()))) {
obj_name += <span class="string"><span class="delimiter">"</span><span class="content">/</span><span class="delimiter">"</span></span>;
}
RGWSetAttrsRequest req(cct, get_user(), rgw_fh->bucket_name(), obj_name);
rgw_fh->create_stat(st, mask);
rgw_fh->encode_attrs(ux_key, ux_attrs);
<span class="comment">/* save attrs */</span>
req.emplace_attr(RGW_ATTR_UNIX_KEY1, std::move(ux_key));
req.emplace_attr(RGW_ATTR_UNIX1, std::move(ux_attrs));
rc = rgwlib.get_fe()->execute_req(&req);
rc2 = req.get_ret();
<span class="keyword">if</span> (rc == -ENOENT) {
<span class="comment">/* special case: materialize placeholder dir */</span>
buffer::list bl;
RGWPutObjRequest req(get_context(), get_user(), rgw_fh->bucket_name(),
obj_name, bl);
rgw_fh->encode_attrs(ux_key, ux_attrs); <span class="comment">/* because std::moved */</span>
<span class="comment">/* save attrs */</span>
req.emplace_attr(RGW_ATTR_UNIX_KEY1, std::move(ux_key));
req.emplace_attr(RGW_ATTR_UNIX1, std::move(ux_attrs));
rc = rgwlib.get_fe()->execute_req(&req);
rc2 = req.get_ret();
}
<span class="keyword">if</span> ((rc != <span class="integer">0</span>) || (rc2 != <span class="integer">0</span>)) {
<span class="keyword">return</span> -EIO;
}
rgw_fh->set_ctime(real_clock::to_timespec(real_clock::now()));
<span class="keyword">return</span> <span class="integer">0</span>;
} <span class="comment">/* RGWLibFS::setattr */</span>
</span></code></pre>
<p>So I think it will be better to save RGW_ATTR_ETAG and RGW_ATTR_ACL attr in rgw_setattr function.</p>
rgw - Bug #38013 (Resolved): librgw: unexpected crash when creating bucket
https://tracker.ceph.com/issues/38013
2019-01-23T09:53:55Z
Tao CHEN
<p>I run librgw unintest and librgw crashed when creating bucket:</p>
<pre><code class="c syntaxhl"><span class="CodeRay">./bin/ceph_test_librgw_file_aw --access=user1 --secret=user1 --create
[==========] Running <span class="integer">12</span> tests from <span class="integer">1</span> test <span class="keyword">case</span>.
[----------] Global test environment set-up.
[----------] <span class="integer">12</span> tests from LibRGW
[ RUN ] LibRGW.INIT
<span class="integer">2019</span>-<span class="octal">01</span>-<span class="integer">23</span> <span class="octal">01</span>:<span class="integer">43</span>:<span class="integer">3</span><span class="float">0</span><span class="float">.854</span> <span class="float">7f</span>c94a8a0a00 -<span class="integer">1</span> WARNING: all dangerous and experimental features are enabled.
<span class="integer">2019</span>-<span class="octal">01</span>-<span class="integer">23</span> <span class="octal">01</span>:<span class="integer">43</span>:<span class="integer">3</span><span class="float">0</span><span class="float">.904</span> <span class="float">7f</span>c94a8a0a00 -<span class="integer">1</span> WARNING: all dangerous and experimental features are enabled.
<span class="integer">2019</span>-<span class="octal">01</span>-<span class="integer">23</span> <span class="octal">01</span>:<span class="integer">43</span>:<span class="integer">3</span><span class="float">0</span><span class="float">.934</span> <span class="float">7f</span>c94a8a0a00 -<span class="integer">1</span> WARNING: all dangerous and experimental features are enabled.
[ OK ] LibRGW.INIT (<span class="integer">609</span> ms)
[ RUN ] LibRGW.MOUNT
[ OK ] LibRGW.MOUNT (<span class="integer">9</span> ms)
[ RUN ] LibRGW.CREATE_BUCKET
*** Caught signal (Segmentation fault) **
in thread <span class="float">7f</span>c94a8a0a00 thread_name:ceph_test_librg
ceph version ccdc79 (<span class="integer">0</span>ccdc799384801faa728d5429e82b522ee3b618b) nautilus (dev)
<span class="integer">1</span>: (()+<span class="hex">0xf307ce</span>) [<span class="hex">0x7fc94a0a37ce</span>]
<span class="integer">2</span>: (()+<span class="hex">0xf5d0</span>) [<span class="hex">0x7fc93e8b65d0</span>]
<span class="integer">3</span>: (RGWSysObjectCtx::get_obj(rgw_raw_obj const&)+<span class="hex">0x27</span>) [<span class="hex">0x7fc949b22b95</span>]
<span class="integer">4</span>: (rgw_get_system_obj(RGWRados*, RGWSysObjectCtx&, rgw_pool const&, std::string const&, ceph::buffer::list&, RGWObjVersionTracker*, std::chrono::time_point<ceph::time_detail::real_clock, std::chrono::duration<<span class="predefined-type">unsigned</span> <span class="predefined-type">long</span>, std::ratio<<span class="integer">1</span>l, <span class="integer">1000000000</span>l> > >*, std::map<std::string, ceph::buffer::list, std::less<std::string>, std::allocator<std::pair<std::string <span class="directive">const</span>, ceph::buffer::list> > >*, rgw_cache_entry_info*, boost::optional<obj_version>)+<span class="hex">0x124</span>) [<span class="hex">0x7fc949d8b348</span>]
<span class="integer">5</span>: (RGWRados::get_bucket_entrypoint_info(RGWSysObjectCtx&, std::string const&, std::string const&, RGWBucketEntryPoint&, RGWObjVersionTracker*, std::chrono::time_point<ceph::time_detail::real_clock, std::chrono::duration<<span class="predefined-type">unsigned</span> <span class="predefined-type">long</span>, std::ratio<<span class="integer">1</span>l, <span class="integer">1000000000</span>l> > >*, std::map<std::string, ceph::buffer::list, std::less<std::string>, std::allocator<std::pair<std::string <span class="directive">const</span>, ceph::buffer::list> > >*, rgw_cache_entry_info*, boost::optional<obj_version>)+<span class="hex">0x121</span>) [<span class="hex">0x7fc949d14933</span>]
<span class="integer">6</span>: (RGWRados::_get_bucket_info(RGWSysObjectCtx&, std::string const&, std::string const&, RGWBucketInfo&, std::chrono::time_point<ceph::time_detail::real_clock, std::chrono::duration<<span class="predefined-type">unsigned</span> <span class="predefined-type">long</span>, std::ratio<<span class="integer">1</span>l, <span class="integer">1000000000</span>l> > >*, std::map<std::string, ceph::buffer::list, std::less<std::string>, std::allocator<std::pair<std::string <span class="directive">const</span>, ceph::buffer::list> > >*, boost::optional<obj_version>)+<span class="hex">0x3ce</span>) [<span class="hex">0x7fc949d1568a</span>]
<span class="integer">7</span>: (RGWRados::get_bucket_info(RGWSysObjectCtx&, std::string const&, std::string const&, RGWBucketInfo&, std::chrono::time_point<ceph::time_detail::real_clock, std::chrono::duration<<span class="predefined-type">unsigned</span> <span class="predefined-type">long</span>, std::ratio<<span class="integer">1</span>l, <span class="integer">1000000000</span>l> > >*, std::map<std::string, ceph::buffer::list, std::less<std::string>, std::allocator<std::pair<std::string <span class="directive">const</span>, ceph::buffer::list> > >*)+<span class="hex">0x76</span>) [<span class="hex">0x7fc949d1610c</span>]
<span class="integer">8</span>: (RGWCreateBucket::execute()+<span class="hex">0xa08</span>) [<span class="hex">0x7fc949c7d24a</span>]
<span class="integer">9</span>: (rgw::RGWLibProcess::process_request(rgw::RGWLibRequest*, rgw::RGWLibIO*)+<span class="hex">0x19aa</span>) [<span class="hex">0x7fc949a72112</span>]
<span class="integer">10</span>: (rgw::RGWLibProcess::process_request(rgw::RGWLibRequest*)+<span class="hex">0x58</span>) [<span class="hex">0x7fc949a6ff30</span>]
<span class="integer">11</span>: (rgw::RGWLibFrontend::execute_req(rgw::RGWLibRequest*)+<span class="hex">0x27</span>) [<span class="hex">0x7fc949ac0999</span>]
<span class="integer">12</span>: (rgw::RGWLibFS::mkdir(rgw::RGWFileHandle*, <span class="predefined-type">char</span> <span class="directive">const</span>*, stat*, <span class="predefined-type">unsigned</span> <span class="predefined-type">int</span>, <span class="predefined-type">unsigned</span> <span class="predefined-type">int</span>)+<span class="hex">0x523</span>) [<span class="hex">0x7fc949aa38fb</span>]
<span class="integer">13</span>: (rgw_mkdir()+<span class="hex">0x81</span>) [<span class="hex">0x7fc949aab138</span>]
<span class="integer">14</span>: (LibRGW_CREATE_BUCKET_Test::TestBody()+<span class="hex">0xa2</span>) [<span class="hex">0x5581b6b13f2c</span>]
<span class="integer">15</span>: (<span class="directive">void</span> testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, <span class="directive">void</span>>(testing::Test*, <span class="directive">void</span> (testing::Test::*)(), <span class="predefined-type">char</span> <span class="directive">const</span>*)+<span class="hex">0x65</span>) [<span class="hex">0x5581b6b4b0a7</span>]
<span class="integer">16</span>: (<span class="directive">void</span> testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, <span class="directive">void</span>>(testing::Test*, <span class="directive">void</span> (testing::Test::*)(), <span class="predefined-type">char</span> <span class="directive">const</span>*)+<span class="hex">0x5a</span>) [<span class="hex">0x5581b6b44781</span>]
<span class="integer">17</span>: (testing::Test::Run()+<span class="hex">0xd2</span>) [<span class="hex">0x5581b6b28a84</span>]
<span class="integer">18</span>: (testing::TestInfo::Run()+<span class="hex">0x104</span>) [<span class="hex">0x5581b6b2935a</span>]
<span class="integer">19</span>: (testing::TestCase::Run()+<span class="hex">0x107</span>) [<span class="hex">0x5581b6b299f3</span>]
<span class="integer">20</span>: (testing::internal::UnitTestImpl::RunAllTests()+<span class="hex">0x2d2</span>) [<span class="hex">0x5581b6b304d8</span>]
<span class="integer">21</span>: (<span class="predefined-type">bool</span> testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, <span class="predefined-type">bool</span>>(testing::internal::UnitTestImpl*, <span class="predefined-type">bool</span> (testing::internal::UnitTestImpl::*)(), <span class="predefined-type">char</span> <span class="directive">const</span>*)+<span class="hex">0x65</span>) [<span class="hex">0x5581b6b4c297</span>]
<span class="integer">22</span>: (<span class="predefined-type">bool</span> testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, <span class="predefined-type">bool</span>>(testing::internal::UnitTestImpl*, <span class="predefined-type">bool</span> (testing::internal::UnitTestImpl::*)(), <span class="predefined-type">char</span> <span class="directive">const</span>*)+<span class="hex">0x5a</span>) [<span class="hex">0x5581b6b4584d</span>]
<span class="integer">23</span>: (testing::UnitTest::Run()+<span class="hex">0xc9</span>) [<span class="hex">0x5581b6b2f0cf</span>]
<span class="integer">24</span>: (RUN_ALL_TESTS()+<span class="hex">0x11</span>) [<span class="hex">0x5581b6b17f5a</span>]
<span class="integer">25</span>: (main()+<span class="hex">0x440</span>) [<span class="hex">0x5581b6b15b00</span>]
<span class="integer">26</span>: (__libc_start_main()+<span class="hex">0xf5</span>) [<span class="hex">0x7fc93b0f03d5</span>]
<span class="integer">27</span>: (()+<span class="hex">0x5e0f9</span>) [<span class="hex">0x5581b6b130f9</span>]
<span class="integer">2019</span>-<span class="octal">01</span>-<span class="integer">23</span> <span class="octal">01</span>:<span class="integer">43</span>:<span class="integer">3</span><span class="float">1</span><span class="float">.441</span> <span class="float">7f</span>c94a8a0a00 -<span class="integer">1</span> *** Caught signal (Segmentation fault) **
in thread <span class="float">7f</span>c94a8a0a00 thread_name:ceph_test_librg
ceph version ccdc79 (<span class="integer">0</span>ccdc799384801faa728d5429e82b522ee3b618b) nautilus (dev)
<span class="integer">1</span>: (()+<span class="hex">0xf307ce</span>) [<span class="hex">0x7fc94a0a37ce</span>]
<span class="integer">2</span>: (()+<span class="hex">0xf5d0</span>) [<span class="hex">0x7fc93e8b65d0</span>]
<span class="integer">3</span>: (RGWSysObjectCtx::get_obj(rgw_raw_obj const&)+<span class="hex">0x27</span>) [<span class="hex">0x7fc949b22b95</span>]
<span class="integer">4</span>: (rgw_get_system_obj(RGWRados*, RGWSysObjectCtx&, rgw_pool const&, std::string const&, ceph::buffer::list&, RGWObjVersionTracker*, std::chrono::time_point<ceph::time_detail::real_clock, std::chrono::duration<<span class="predefined-type">unsigned</span> <span class="predefined-type">long</span>, std::ratio<<span class="integer">1</span>l, <span class="integer">1000000000</span>l> > >*, std::map<std::string, ceph::buffer::list, std::less<std::string>, std::allocator<std::pair<std::string <span class="directive">const</span>, ceph::buffer::list> > >*, rgw_cache_entry_info*, boost::optional<obj_version>)+<span class="hex">0x124</span>) [<span class="hex">0x7fc949d8b348</span>]
<span class="integer">5</span>: (RGWRados::get_bucket_entrypoint_info(RGWSysObjectCtx&, std::string const&, std::string const&, RGWBucketEntryPoint&, RGWObjVersionTracker*, std::chrono::time_point<ceph::time_detail::real_clock, std::chrono::duration<<span class="predefined-type">unsigned</span> <span class="predefined-type">long</span>, std::ratio<<span class="integer">1</span>l, <span class="integer">1000000000</span>l> > >*, std::map<std::string, ceph::buffer::list, std::less<std::string>, std::allocator<std::pair<std::string <span class="directive">const</span>, ceph::buffer::list> > >*, rgw_cache_entry_info*, boost::optional<obj_version>)+<span class="hex">0x121</span>) [<span class="hex">0x7fc949d14933</span>]
<span class="integer">6</span>: (RGWRados::_get_bucket_info(RGWSysObjectCtx&, std::string const&, std::string const&, RGWBucketInfo&, std::chrono::time_point<ceph::time_detail::real_clock, std::chrono::duration<<span class="predefined-type">unsigned</span> <span class="predefined-type">long</span>, std::ratio<<span class="integer">1</span>l, <span class="integer">1000000000</span>l> > >*, std::map<std::string, ceph::buffer::list, std::less<std::string>, std::allocator<std::pair<std::string <span class="directive">const</span>, ceph::buffer::list> > >*, boost::optional<obj_version>)+<span class="hex">0x3ce</span>) [<span class="hex">0x7fc949d1568a</span>]
<span class="integer">7</span>: (RGWRados::get_bucket_info(RGWSysObjectCtx&, std::string const&, std::string const&, RGWBucketInfo&, std::chrono::time_point<ceph::time_detail::real_clock, std::chrono::duration<<span class="predefined-type">unsigned</span> <span class="predefined-type">long</span>, std::ratio<<span class="integer">1</span>l, <span class="integer">1000000000</span>l> > >*, std::map<std::string, ceph::buffer::list, std::less<std::string>, std::allocator<std::pair<std::string <span class="directive">const</span>, ceph::buffer::list> > >*)+<span class="hex">0x76</span>) [<span class="hex">0x7fc949d1610c</span>]
<span class="integer">8</span>: (RGWCreateBucket::execute()+<span class="hex">0xa08</span>) [<span class="hex">0x7fc949c7d24a</span>]
<span class="integer">9</span>: (rgw::RGWLibProcess::process_request(rgw::RGWLibRequest*, rgw::RGWLibIO*)+<span class="hex">0x19aa</span>) [<span class="hex">0x7fc949a72112</span>]
<span class="integer">10</span>: (rgw::RGWLibProcess::process_request(rgw::RGWLibRequest*)+<span class="hex">0x58</span>) [<span class="hex">0x7fc949a6ff30</span>]
<span class="integer">11</span>: (rgw::RGWLibFrontend::execute_req(rgw::RGWLibRequest*)+<span class="hex">0x27</span>) [<span class="hex">0x7fc949ac0999</span>]
<span class="integer">12</span>: (rgw::RGWLibFS::mkdir(rgw::RGWFileHandle*, <span class="predefined-type">char</span> <span class="directive">const</span>*, stat*, <span class="predefined-type">unsigned</span> <span class="predefined-type">int</span>, <span class="predefined-type">unsigned</span> <span class="predefined-type">int</span>)+<span class="hex">0x523</span>) [<span class="hex">0x7fc949aa38fb</span>]
<span class="integer">13</span>: (rgw_mkdir()+<span class="hex">0x81</span>) [<span class="hex">0x7fc949aab138</span>]
<span class="integer">14</span>: (LibRGW_CREATE_BUCKET_Test::TestBody()+<span class="hex">0xa2</span>) [<span class="hex">0x5581b6b13f2c</span>]
<span class="integer">15</span>: (<span class="directive">void</span> testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, <span class="directive">void</span>>(testing::Test*, <span class="directive">void</span> (testing::Test::*)(), <span class="predefined-type">char</span> <span class="directive">const</span>*)+<span class="hex">0x65</span>) [<span class="hex">0x5581b6b4b0a7</span>]
<span class="integer">16</span>: (<span class="directive">void</span> testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, <span class="directive">void</span>>(testing::Test*, <span class="directive">void</span> (testing::Test::*)(), <span class="predefined-type">char</span> <span class="directive">const</span>*)+<span class="hex">0x5a</span>) [<span class="hex">0x5581b6b44781</span>]
<span class="integer">17</span>: (testing::Test::Run()+<span class="hex">0xd2</span>) [<span class="hex">0x5581b6b28a84</span>]
<span class="integer">18</span>: (testing::TestInfo::Run()+<span class="hex">0x104</span>) [<span class="hex">0x5581b6b2935a</span>]
<span class="integer">19</span>: (testing::TestCase::Run()+<span class="hex">0x107</span>) [<span class="hex">0x5581b6b299f3</span>]
<span class="integer">20</span>: (testing::internal::UnitTestImpl::RunAllTests()+<span class="hex">0x2d2</span>) [<span class="hex">0x5581b6b304d8</span>]
<span class="integer">21</span>: (<span class="predefined-type">bool</span> testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, <span class="predefined-type">bool</span>>(testing::internal::UnitTestImpl*, <span class="predefined-type">bool</span> (testing::internal::UnitTestImpl::*)(), <span class="predefined-type">char</span> <span class="directive">const</span>*)+<span class="hex">0x65</span>) [<span class="hex">0x5581b6b4c297</span>]
<span class="integer">22</span>: (<span class="predefined-type">bool</span> testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, <span class="predefined-type">bool</span>>(testing::internal::UnitTestImpl*, <span class="predefined-type">bool</span> (testing::internal::UnitTestImpl::*)(), <span class="predefined-type">char</span> <span class="directive">const</span>*)+<span class="hex">0x5a</span>) [<span class="hex">0x5581b6b4584d</span>]
<span class="integer">23</span>: (testing::UnitTest::Run()+<span class="hex">0xc9</span>) [<span class="hex">0x5581b6b2f0cf</span>]
<span class="integer">24</span>: (RUN_ALL_TESTS()+<span class="hex">0x11</span>) [<span class="hex">0x5581b6b17f5a</span>]
<span class="integer">25</span>: (main()+<span class="hex">0x440</span>) [<span class="hex">0x5581b6b15b00</span>]
<span class="integer">26</span>: (__libc_start_main()+<span class="hex">0xf5</span>) [<span class="hex">0x7fc93b0f03d5</span>]
<span class="integer">27</span>: (()+<span class="hex">0x5e0f9</span>) [<span class="hex">0x5581b6b130f9</span>]
NOTE: a copy of the executable, or <span class="error">`</span>objdump -rdS <executable><span class="error">`</span> is needed to interpret this.
-<span class="integer">1536</span>> <span class="integer">2019</span>-<span class="octal">01</span>-<span class="integer">23</span> <span class="octal">01</span>:<span class="integer">43</span>:<span class="integer">3</span><span class="float">0</span><span class="float">.854</span> <span class="float">7f</span>c94a8a0a00 -<span class="integer">1</span> WARNING: all dangerous and experimental features are enabled.
-<span class="integer">1425</span>> <span class="integer">2019</span>-<span class="octal">01</span>-<span class="integer">23</span> <span class="octal">01</span>:<span class="integer">43</span>:<span class="integer">3</span><span class="float">0</span><span class="float">.904</span> <span class="float">7f</span>c94a8a0a00 -<span class="integer">1</span> WARNING: all dangerous and experimental features are enabled.
-<span class="integer">1417</span>> <span class="integer">2019</span>-<span class="octal">01</span>-<span class="integer">23</span> <span class="octal">01</span>:<span class="integer">43</span>:<span class="integer">3</span><span class="float">0</span><span class="float">.934</span> <span class="float">7f</span>c94a8a0a00 -<span class="integer">1</span> WARNING: all dangerous and experimental features are enabled.
<span class="integer">0</span>> <span class="integer">2019</span>-<span class="octal">01</span>-<span class="integer">23</span> <span class="octal">01</span>:<span class="integer">43</span>:<span class="integer">3</span><span class="float">1</span><span class="float">.441</span> <span class="float">7f</span>c94a8a0a00 -<span class="integer">1</span> *** Caught signal (Segmentation fault) **
in thread <span class="float">7f</span>c94a8a0a00 thread_name:ceph_test_librg
ceph version ccdc79 (<span class="integer">0</span>ccdc799384801faa728d5429e82b522ee3b618b) nautilus (dev)
<span class="integer">1</span>: (()+<span class="hex">0xf307ce</span>) [<span class="hex">0x7fc94a0a37ce</span>]
<span class="integer">2</span>: (()+<span class="hex">0xf5d0</span>) [<span class="hex">0x7fc93e8b65d0</span>]
<span class="integer">3</span>: (RGWSysObjectCtx::get_obj(rgw_raw_obj const&)+<span class="hex">0x27</span>) [<span class="hex">0x7fc949b22b95</span>]
<span class="integer">4</span>: (rgw_get_system_obj(RGWRados*, RGWSysObjectCtx&, rgw_pool const&, std::string const&, ceph::buffer::list&, RGWObjVersionTracker*, std::chrono::time_point<ceph::time_detail::real_clock, std::chrono::duration<<span class="predefined-type">unsigned</span> <span class="predefined-type">long</span>, std::ratio<<span class="integer">1</span>l, <span class="integer">1000000000</span>l> > >*, std::map<std::string, ceph::buffer::list, std::less<std::string>, std::allocator<std::pair<std::string <span class="directive">const</span>, ceph::buffer::list> > >*, rgw_cache_entry_info*, boost::optional<obj_version>)+<span class="hex">0x124</span>) [<span class="hex">0x7fc949d8b348</span>]
<span class="integer">5</span>: (RGWRados::get_bucket_entrypoint_info(RGWSysObjectCtx&, std::string const&, std::string const&, RGWBucketEntryPoint&, RGWObjVersionTracker*, std::chrono::time_point<ceph::time_detail::real_clock, std::chrono::duration<<span class="predefined-type">unsigned</span> <span class="predefined-type">long</span>, std::ratio<<span class="integer">1</span>l, <span class="integer">1000000000</span>l> > >*, std::map<std::string, ceph::buffer::list, std::less<std::string>, std::allocator<std::pair<std::string <span class="directive">const</span>, ceph::buffer::list> > >*, rgw_cache_entry_info*, boost::optional<obj_version>)+<span class="hex">0x121</span>) [<span class="hex">0x7fc949d14933</span>]
<span class="integer">6</span>: (RGWRados::_get_bucket_info(RGWSysObjectCtx&, std::string const&, std::string const&, RGWBucketInfo&, std::chrono::time_point<ceph::time_detail::real_clock, std::chrono::duration<<span class="predefined-type">unsigned</span> <span class="predefined-type">long</span>, std::ratio<<span class="integer">1</span>l, <span class="integer">1000000000</span>l> > >*, std::map<std::string, ceph::buffer::list, std::less<std::string>, std::allocator<std::pair<std::string <span class="directive">const</span>, ceph::buffer::list> > >*, boost::optional<obj_version>)+<span class="hex">0x3ce</span>) [<span class="hex">0x7fc949d1568a</span>]
<span class="integer">7</span>: (RGWRados::get_bucket_info(RGWSysObjectCtx&, std::string const&, std::string const&, RGWBucketInfo&, std::chrono::time_point<ceph::time_detail::real_clock, std::chrono::duration<<span class="predefined-type">unsigned</span> <span class="predefined-type">long</span>, std::ratio<<span class="integer">1</span>l, <span class="integer">1000000000</span>l> > >*, std::map<std::string, ceph::buffer::list, std::less<std::string>, std::allocator<std::pair<std::string <span class="directive">const</span>, ceph::buffer::list> > >*)+<span class="hex">0x76</span>) [<span class="hex">0x7fc949d1610c</span>]
<span class="integer">8</span>: (RGWCreateBucket::execute()+<span class="hex">0xa08</span>) [<span class="hex">0x7fc949c7d24a</span>]
<span class="integer">9</span>: (rgw::RGWLibProcess::process_request(rgw::RGWLibRequest*, rgw::RGWLibIO*)+<span class="hex">0x19aa</span>) [<span class="hex">0x7fc949a72112</span>]
<span class="integer">10</span>: (rgw::RGWLibProcess::process_request(rgw::RGWLibRequest*)+<span class="hex">0x58</span>) [<span class="hex">0x7fc949a6ff30</span>]
<span class="integer">11</span>: (rgw::RGWLibFrontend::execute_req(rgw::RGWLibRequest*)+<span class="hex">0x27</span>) [<span class="hex">0x7fc949ac0999</span>]
<span class="integer">12</span>: (rgw::RGWLibFS::mkdir(rgw::RGWFileHandle*, <span class="predefined-type">char</span> <span class="directive">const</span>*, stat*, <span class="predefined-type">unsigned</span> <span class="predefined-type">int</span>, <span class="predefined-type">unsigned</span> <span class="predefined-type">int</span>)+<span class="hex">0x523</span>) [<span class="hex">0x7fc949aa38fb</span>]
<span class="integer">13</span>: (rgw_mkdir()+<span class="hex">0x81</span>) [<span class="hex">0x7fc949aab138</span>]
<span class="integer">14</span>: (LibRGW_CREATE_BUCKET_Test::TestBody()+<span class="hex">0xa2</span>) [<span class="hex">0x5581b6b13f2c</span>]
<span class="integer">15</span>: (<span class="directive">void</span> testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, <span class="directive">void</span>>(testing::Test*, <span class="directive">void</span> (testing::Test::*)(), <span class="predefined-type">char</span> <span class="directive">const</span>*)+<span class="hex">0x65</span>) [<span class="hex">0x5581b6b4b0a7</span>]
<span class="integer">16</span>: (<span class="directive">void</span> testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, <span class="directive">void</span>>(testing::Test*, <span class="directive">void</span> (testing::Test::*)(), <span class="predefined-type">char</span> <span class="directive">const</span>*)+<span class="hex">0x5a</span>) [<span class="hex">0x5581b6b44781</span>]
<span class="integer">17</span>: (testing::Test::Run()+<span class="hex">0xd2</span>) [<span class="hex">0x5581b6b28a84</span>]
<span class="integer">18</span>: (testing::TestInfo::Run()+<span class="hex">0x104</span>) [<span class="hex">0x5581b6b2935a</span>]
<span class="integer">19</span>: (testing::TestCase::Run()+<span class="hex">0x107</span>) [<span class="hex">0x5581b6b299f3</span>]
<span class="integer">20</span>: (testing::internal::UnitTestImpl::RunAllTests()+<span class="hex">0x2d2</span>) [<span class="hex">0x5581b6b304d8</span>]
<span class="integer">21</span>: (<span class="predefined-type">bool</span> testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, <span class="predefined-type">bool</span>>(testing::internal::UnitTestImpl*, <span class="predefined-type">bool</span> (testing::internal::UnitTestImpl::*)(), <span class="predefined-type">char</span> <span class="directive">const</span>*)+<span class="hex">0x65</span>) [<span class="hex">0x5581b6b4c297</span>]
<span class="integer">22</span>: (<span class="predefined-type">bool</span> testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, <span class="predefined-type">bool</span>>(testing::internal::UnitTestImpl*, <span class="predefined-type">bool</span> (testing::internal::UnitTestImpl::*)(), <span class="predefined-type">char</span> <span class="directive">const</span>*)+<span class="hex">0x5a</span>) [<span class="hex">0x5581b6b4584d</span>]
<span class="integer">23</span>: (testing::UnitTest::Run()+<span class="hex">0xc9</span>) [<span class="hex">0x5581b6b2f0cf</span>]
<span class="integer">24</span>: (RUN_ALL_TESTS()+<span class="hex">0x11</span>) [<span class="hex">0x5581b6b17f5a</span>]
<span class="integer">25</span>: (main()+<span class="hex">0x440</span>) [<span class="hex">0x5581b6b15b00</span>]
<span class="integer">26</span>: (__libc_start_main()+<span class="hex">0xf5</span>) [<span class="hex">0x7fc93b0f03d5</span>]
<span class="integer">27</span>: (()+<span class="hex">0x5e0f9</span>) [<span class="hex">0x5581b6b130f9</span>]
NOTE: a copy of the executable, or <span class="error">`</span>objdump -rdS <executable><span class="error">`</span> is needed to interpret this.
-<span class="integer">1536</span>> <span class="integer">2019</span>-<span class="octal">01</span>-<span class="integer">23</span> <span class="octal">01</span>:<span class="integer">43</span>:<span class="integer">3</span><span class="float">0</span><span class="float">.854</span> <span class="float">7f</span>c94a8a0a00 -<span class="integer">1</span> WARNING: all dangerous and experimental features are enabled.
-<span class="integer">1425</span>> <span class="integer">2019</span>-<span class="octal">01</span>-<span class="integer">23</span> <span class="octal">01</span>:<span class="integer">43</span>:<span class="integer">3</span><span class="float">0</span><span class="float">.904</span> <span class="float">7f</span>c94a8a0a00 -<span class="integer">1</span> WARNING: all dangerous and experimental features are enabled.
-<span class="integer">1417</span>> <span class="integer">2019</span>-<span class="octal">01</span>-<span class="integer">23</span> <span class="octal">01</span>:<span class="integer">43</span>:<span class="integer">3</span><span class="float">0</span><span class="float">.934</span> <span class="float">7f</span>c94a8a0a00 -<span class="integer">1</span> WARNING: all dangerous and experimental features are enabled.
<span class="integer">0</span>> <span class="integer">2019</span>-<span class="octal">01</span>-<span class="integer">23</span> <span class="octal">01</span>:<span class="integer">43</span>:<span class="integer">3</span><span class="float">1</span><span class="float">.441</span> <span class="float">7f</span>c94a8a0a00 -<span class="integer">1</span> *** Caught signal (Segmentation fault) **
in thread <span class="float">7f</span>c94a8a0a00 thread_name:ceph_test_librg
ceph version ccdc79 (<span class="integer">0</span>ccdc799384801faa728d5429e82b522ee3b618b) nautilus (dev)
<span class="integer">1</span>: (()+<span class="hex">0xf307ce</span>) [<span class="hex">0x7fc94a0a37ce</span>]
<span class="integer">2</span>: (()+<span class="hex">0xf5d0</span>) [<span class="hex">0x7fc93e8b65d0</span>]
<span class="integer">3</span>: (RGWSysObjectCtx::get_obj(rgw_raw_obj const&)+<span class="hex">0x27</span>) [<span class="hex">0x7fc949b22b95</span>]
<span class="integer">4</span>: (rgw_get_system_obj(RGWRados*, RGWSysObjectCtx&, rgw_pool const&, std::string const&, ceph::buffer::list&, RGWObjVersionTracker*, std::chrono::time_point<ceph::time_detail::real_clock, std::chrono::duration<<span class="predefined-type">unsigned</span> <span class="predefined-type">long</span>, std::ratio<<span class="integer">1</span>l, <span class="integer">1000000000</span>l> > >*, std::map<std::string, ceph::buffer::list, std::less<std::string>, std::allocator<std::pair<std::string <span class="directive">const</span>, ceph::buffer::list> > >*, rgw_cache_entry_info*, boost::optional<obj_version>)+<span class="hex">0x124</span>) [<span class="hex">0x7fc949d8b348</span>]
<span class="integer">5</span>: (RGWRados::get_bucket_entrypoint_info(RGWSysObjectCtx&, std::string const&, std::string const&, RGWBucketEntryPoint&, RGWObjVersionTracker*, std::chrono::time_point<ceph::time_detail::real_clock, std::chrono::duration<<span class="predefined-type">unsigned</span> <span class="predefined-type">long</span>, std::ratio<<span class="integer">1</span>l, <span class="integer">1000000000</span>l> > >*, std::map<std::string, ceph::buffer::list, std::less<std::string>, std::allocator<std::pair<std::string <span class="directive">const</span>, ceph::buffer::list> > >*, rgw_cache_entry_info*, boost::optional<obj_version>)+<span class="hex">0x121</span>) [<span class="hex">0x7fc949d14933</span>]
<span class="integer">6</span>: (RGWRados::_get_bucket_info(RGWSysObjectCtx&, std::string const&, std::string const&, RGWBucketInfo&, std::chrono::time_point<ceph::time_detail::real_clock, std::chrono::duration<<span class="predefined-type">unsigned</span> <span class="predefined-type">long</span>, std::ratio<<span class="integer">1</span>l, <span class="integer">1000000000</span>l> > >*, std::map<std::string, ceph::buffer::list, std::less<std::string>, std::allocator<std::pair<std::string <span class="directive">const</span>, ceph::buffer::list> > >*, boost::optional<obj_version>)+<span class="hex">0x3ce</span>) [<span class="hex">0x7fc949d1568a</span>]
<span class="integer">7</span>: (RGWRados::get_bucket_info(RGWSysObjectCtx&, std::string const&, std::string const&, RGWBucketInfo&, std::chrono::time_point<ceph::time_detail::real_clock, std::chrono::duration<<span class="predefined-type">unsigned</span> <span class="predefined-type">long</span>, std::ratio<<span class="integer">1</span>l, <span class="integer">1000000000</span>l> > >*, std::map<std::string, ceph::buffer::list, std::less<std::string>, std::allocator<std::pair<std::string <span class="directive">const</span>, ceph::buffer::list> > >*)+<span class="hex">0x76</span>) [<span class="hex">0x7fc949d1610c</span>]
<span class="integer">8</span>: (RGWCreateBucket::execute()+<span class="hex">0xa08</span>) [<span class="hex">0x7fc949c7d24a</span>]
<span class="integer">9</span>: (rgw::RGWLibProcess::process_request(rgw::RGWLibRequest*, rgw::RGWLibIO*)+<span class="hex">0x19aa</span>) [<span class="hex">0x7fc949a72112</span>]
<span class="integer">10</span>: (rgw::RGWLibProcess::process_request(rgw::RGWLibRequest*)+<span class="hex">0x58</span>) [<span class="hex">0x7fc949a6ff30</span>]
<span class="integer">11</span>: (rgw::RGWLibFrontend::execute_req(rgw::RGWLibRequest*)+<span class="hex">0x27</span>) [<span class="hex">0x7fc949ac0999</span>]
<span class="integer">12</span>: (rgw::RGWLibFS::mkdir(rgw::RGWFileHandle*, <span class="predefined-type">char</span> <span class="directive">const</span>*, stat*, <span class="predefined-type">unsigned</span> <span class="predefined-type">int</span>, <span class="predefined-type">unsigned</span> <span class="predefined-type">int</span>)+<span class="hex">0x523</span>) [<span class="hex">0x7fc949aa38fb</span>]
<span class="integer">13</span>: (rgw_mkdir()+<span class="hex">0x81</span>) [<span class="hex">0x7fc949aab138</span>]
<span class="integer">14</span>: (LibRGW_CREATE_BUCKET_Test::TestBody()+<span class="hex">0xa2</span>) [<span class="hex">0x5581b6b13f2c</span>]
<span class="integer">15</span>: (<span class="directive">void</span> testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, <span class="directive">void</span>>(testing::Test*, <span class="directive">void</span> (testing::Test::*)(), <span class="predefined-type">char</span> <span class="directive">const</span>*)+<span class="hex">0x65</span>) [<span class="hex">0x5581b6b4b0a7</span>]
<span class="integer">16</span>: (<span class="directive">void</span> testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, <span class="directive">void</span>>(testing::Test*, <span class="directive">void</span> (testing::Test::*)(), <span class="predefined-type">char</span> <span class="directive">const</span>*)+<span class="hex">0x5a</span>) [<span class="hex">0x5581b6b44781</span>]
<span class="integer">17</span>: (testing::Test::Run()+<span class="hex">0xd2</span>) [<span class="hex">0x5581b6b28a84</span>]
<span class="integer">18</span>: (testing::TestInfo::Run()+<span class="hex">0x104</span>) [<span class="hex">0x5581b6b2935a</span>]
<span class="integer">19</span>: (testing::TestCase::Run()+<span class="hex">0x107</span>) [<span class="hex">0x5581b6b299f3</span>]
<span class="integer">20</span>: (testing::internal::UnitTestImpl::RunAllTests()+<span class="hex">0x2d2</span>) [<span class="hex">0x5581b6b304d8</span>]
<span class="integer">21</span>: (<span class="predefined-type">bool</span> testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, <span class="predefined-type">bool</span>>(testing::internal::UnitTestImpl*, <span class="predefined-type">bool</span> (testing::internal::UnitTestImpl::*)(), <span class="predefined-type">char</span> <span class="directive">const</span>*)+<span class="hex">0x65</span>) [<span class="hex">0x5581b6b4c297</span>]
<span class="integer">22</span>: (<span class="predefined-type">bool</span> testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, <span class="predefined-type">bool</span>>(testing::internal::UnitTestImpl*, <span class="predefined-type">bool</span> (testing::internal::UnitTestImpl::*)(), <span class="predefined-type">char</span> <span class="directive">const</span>*)+<span class="hex">0x5a</span>) [<span class="hex">0x5581b6b4584d</span>]
<span class="integer">23</span>: (testing::UnitTest::Run()+<span class="hex">0xc9</span>) [<span class="hex">0x5581b6b2f0cf</span>]
<span class="integer">24</span>: (RUN_ALL_TESTS()+<span class="hex">0x11</span>) [<span class="hex">0x5581b6b17f5a</span>]
<span class="integer">25</span>: (main()+<span class="hex">0x440</span>) [<span class="hex">0x5581b6b15b00</span>]
<span class="integer">26</span>: (__libc_start_main()+<span class="hex">0xf5</span>) [<span class="hex">0x7fc93b0f03d5</span>]
<span class="integer">27</span>: (()+<span class="hex">0x5e0f9</span>) [<span class="hex">0x5581b6b130f9</span>]
NOTE: a copy of the executable, or <span class="error">`</span>objdump -rdS <executable><span class="error">`</span> is needed to interpret this.
Segmentation fault (core dumped)
</span></code></pre>
rgw - Bug #37767 (Duplicate): librgw crash due to local variables deallocated
https://tracker.ceph.com/issues/37767
2018-12-27T10:12:52Z
Tao CHEN
<p>debug info:<br /><pre><code class="c syntaxhl"><span class="CodeRay">ceph version <span class="integer">1</span><span class="float">4</span><span class="float">.0</span><span class="float">.1</span>-<span class="integer">2013</span>-g0ccdc79 (<span class="integer">0</span>ccdc799384801faa728d5429e82b522ee3b618b) nautilus (dev)
<span class="integer">1</span>: (()+<span class="hex">0xf30a46</span>) [<span class="hex">0x7f375a7c1a46</span>]
<span class="integer">2</span>: (()+<span class="hex">0xf5d0</span>) [<span class="hex">0x7f37596845d0</span>]
<span class="integer">3</span>: (std::string::size() <span class="directive">const</span>+<span class="hex">0x18</span>) [<span class="hex">0x7f375a19f832</span>]
<span class="integer">4</span>: (std::string::empty() <span class="directive">const</span>+<span class="hex">0x18</span>) [<span class="hex">0x7f375a19e790</span>]
<span class="integer">5</span>: (rgw_obj_key::empty() <span class="directive">const</span>+<span class="hex">0x18</span>) [<span class="hex">0x7f375a1ce836</span>]
<span class="integer">6</span>: (rgw_obj::empty() <span class="directive">const</span>+<span class="hex">0x1c</span>) [<span class="hex">0x7f375a37c738</span>]
<span class="integer">7</span>: (rgw::putobj::RadosWriter::~RadosWriter()+<span class="hex">0xf6</span>) [<span class="hex">0x7f375a3eb19a</span>]
<span class="integer">8</span>: (rgw::putobj::ManifestObjectProcessor::~ManifestObjectProcessor()+<span class="hex">0x8b</span>) [<span class="hex">0x7f375a1d3637</span>]
<span class="integer">9</span>: (rgw::putobj::AtomicObjectProcessor::~AtomicObjectProcessor()+<span class="hex">0x61</span>) [<span class="hex">0x7f375a1e482d</span>]
<span class="integer">10</span>: (std::_Optional_payload<rgw::putobj::AtomicObjectProcessor, <span class="predefined-constant">false</span>, <span class="predefined-constant">false</span>>::~_Optional_payload()+<span class="hex">0x27</span>) [<span class="hex">0x7f375a1e488f</span>]
<span class="integer">11</span>: (std::_Optional_base<rgw::putobj::AtomicObjectProcessor>::~_Optional_base()+<span class="hex">0x18</span>) [<span class="hex">0x7f375a1dd1fc</span>]
<span class="integer">12</span>: (std::optional<rgw::putobj::AtomicObjectProcessor>::~optional()+<span class="hex">0x18</span>) [<span class="hex">0x7f375a1dd234</span>]
<span class="integer">13</span>: (rgw::RGWWriteRequest::~RGWWriteRequest()+<span class="hex">0xa7</span>) [<span class="hex">0x7f375a2087d1</span>]
<span class="integer">14</span>: (rgw::RGWWriteRequest::~RGWWriteRequest()+<span class="hex">0x18</span>) [<span class="hex">0x7f375a208832</span>]
<span class="integer">15</span>: (rgw::RGWFileHandle::write_finish(<span class="predefined-type">unsigned</span> <span class="predefined-type">int</span>)+<span class="hex">0x200</span>) [<span class="hex">0x7f375a1c68d6</span>]
<span class="integer">16</span>: (rgw::RGWFileHandle::close()+<span class="hex">0x44</span>) [<span class="hex">0x7f375a1c697e</span>]
<span class="integer">17</span>: (rgw_close()+<span class="hex">0x3b</span>) [<span class="hex">0x7f375a1c9a0f</span>]
<span class="integer">18</span>: ./test() [<span class="hex">0x4022cc</span>]
<span class="integer">19</span>: (__libc_start_main()+<span class="hex">0xf5</span>) [<span class="hex">0x7f3758aab3d5</span>]
<span class="integer">20</span>: ./test() [<span class="hex">0x401b69</span>]
NOTE: a copy of the executable, or <span class="error">`</span>objdump -rdS <executable><span class="error">`</span> is needed to interpret this.
</span></code></pre></p>
<p>Class RadosWriter has private member 'head_obj' which is a const ref:</p>
<pre><code class="c syntaxhl"><span class="CodeRay">class RadosWriter : public DataProcessor {
Aio *<span class="directive">const</span> aio;
RGWRados *<span class="directive">const</span> store;
<span class="directive">const</span> RGWBucketInfo& bucket_info;
RGWObjectCtx& obj_ctx;
<span class="directive">const</span> rgw_obj& head_obj;
RGWSI_RADOS::Obj stripe_obj;
RawObjSet written; <span class="comment">// set of written objects for deletion</span>
<span class="label">public:</span>
RadosWriter(Aio *aio, RGWRados *store, <span class="directive">const</span> RGWBucketInfo& bucket_info,
RGWObjectCtx& obj_ctx, <span class="directive">const</span> rgw_obj& head_obj)
: aio(aio), store(store), bucket_info(bucket_info),
obj_ctx(obj_ctx), head_obj(head_obj)
{}
~RadosWriter();
...
};
</span></code></pre>
<p>However, in librgw, head_obj is given by a local var, which will cause memory leak in RGWWriteRequest::exec_finish(), when processor is destructed.</p>
<pre><code class="c syntaxhl"><span class="CodeRay"><span class="predefined-type">int</span> RGWWriteRequest::exec_start() {
rgw_obj obj{s->bucket, s->object};
...
processor.emplace(&*aio, get_store(), s->bucket_info,
s->bucket_owner.get_id(),
*static_cast<RGWObjectCtx *>(s->obj_ctx),
obj, olh_epoch, s->req_id);
op_ret = processor->prepare();
...
} <span class="comment">/* exec_start */</span>
</span></code></pre>
rgw - Bug #37734 (Resolved): Librgw doesn't GC deleted object correctly
https://tracker.ceph.com/issues/37734
2018-12-21T08:23:26Z
Tao CHEN
<p>Hi, recently I work on NFS. I found a bug with Librgw GC process, here is the way to reproduce:</p>
<p>1.set rgw_num_rados_handles = 10 (set this param as small as possible, then we can easily see the problem). set rgw_gc param to small value,too, as we can check gc list soon.<br />2.create a bucket and expose it with NFS-Ganesha<br />3.mount this export to local<br />4.copy 6 local file(1GB) to local path, then the file should be uploaded to bucket<br />5.once all 1GB file have been successfully written, remove them<br />6.check cluster usage with 'rados df', you will find out, some data still exists in pool(default.rgw.buckets.data) , though the file are all deleted and gc list = [].</p>
<p>Here is some track info:</p>
<p><strong>rados df before uploading</strong><br />[root@node1 ~]# rados df<br />POOL_NAME USED OBJECTS CLONES COPIES MISSING_ON_PRIMARY UNFOUND DEGRADED RD_OPS RD WR_OPS WR<br />.rgw.root 7216 21 0 63 0 0 0 664914 432M 107 62464<br />default.rgw.buckets.data 21028M 6304 0 18912 0 0 0 31198 160M 66520 100803M<br />default.rgw.buckets.index 0 3584 0 10752 0 0 0 5742379 5608M 48338 0<br />default.rgw.buckets.non-ec 0 6 0 18 0 0 0 133 86016 137 0<br />default.rgw.control 0 512 0 1536 0 0 0 0 0 0 0<br />default.rgw.log 71273 1737 0 5211 0 0 0 220572996 210G 147050225 1306k<br />default.rgw.meta 6477 38 0 114 0 0 0 504132 411M 4873 1278k<br />fs_data 4157M 532 0 1596 0 0 0 18119 72473k 1244384 653G<br />fs_metadata 29189k 29 0 87 0 0 0 47 60416 906 29804k</p>
<p>total_objects 12763<br />total_used 83599M<br />total_avail 6438G<br />total_space 6519G</p>
<p><strong>rados df after uploading</strong><br />[root@node1 ~]# rados df<br />POOL_NAME USED OBJECTS CLONES COPIES MISSING_ON_PRIMARY UNFOUND DEGRADED RD_OPS RD WR_OPS WR<br />.rgw.root 7216 21 0 63 0 0 0 665100 433M 107 62464<br />default.rgw.buckets.data 27172M 7841 0 23523 0 0 0 31282 160M 68253 104G<br />default.rgw.buckets.index 0 3584 0 10752 0 0 0 5791282 5656M 48450 0<br />default.rgw.buckets.non-ec 0 6 0 18 0 0 0 133 86016 137 0<br />default.rgw.control 0 512 0 1536 0 0 0 0 0 0 0<br />default.rgw.log 71273 1737 0 5211 0 0 0 220602291 210G 147069518 1306k<br />default.rgw.meta 6477 38 0 114 0 0 0 506865 413M 4885 1278k<br />fs_data 4157M 532 0 1596 0 0 0 18119 72473k 1244384 653G<br />fs_metadata 29189k 29 0 87 0 0 0 47 60416 906 29804k</p>
<p>total_objects 14300<br />total_used 102027M<br />total_avail 6420G<br />total_space 6519G</p>
<p><strong>rados df after deleting</strong><br />[root@node1 ~]# rados df<br />POOL_NAME USED OBJECTS CLONES COPIES MISSING_ON_PRIMARY UNFOUND DEGRADED RD_OPS RD WR_OPS WR<br />.rgw.root 7216 21 0 63 0 0 0 665367 433M 107 62464<br />default.rgw.buckets.data 22048M 6560 0 19680 0 0 0 32649 160M 69534 104G<br />default.rgw.buckets.index 0 3584 0 10752 0 0 0 5792813 5658M 48474 0<br />default.rgw.buckets.non-ec 0 6 0 18 0 0 0 133 86016 137 0<br />default.rgw.control 0 512 0 1536 0 0 0 0 0 0 0<br />default.rgw.log 71273 1737 0 5211 0 0 0 220614002 210G 147074013 1306k<br />default.rgw.meta 6477 38 0 114 0 0 0 507762 414M 4885 1278k<br />fs_data 4157M 532 0 1596 0 0 0 18119 72473k 1244384 653G<br />fs_metadata 29189k 29 0 87 0 0 0 47 60416 906 29804k</p>
<p>total_objects 13019<br />total_used 86703M<br />total_avail 6435G<br />total_space 6519G</p>
<p>As you can see, only 5GB data are deleted, 1GB still remains.</p>
<p>I also print the obj unique tag:</p>
<p>obj1<br />RGW GC chain size: 255, with tail tag: b2b41852-866c-4bab-9160-3e1a1b5d7f81.6502217.0<br />RGW GC adding chain</p>
<p>obj2<br />RGW GC chain size: 255, with tail tag: b2b41852-866c-4bab-9160-3e1a1b5d7f81.6502208.0<br />RGW GC adding chain</p>
<p>obj3<br />RGW GC chain size: 255, with tail tag: b2b41852-866c-4bab-9160-3e1a1b5d7f81.6502219.0<br />RGW GC adding chain</p>
<p>obj4<br />RGW GC chain size: 255, with tail tag: b2b41852-866c-4bab-9160-3e1a1b5d7f81.6502220.0<br />RGW GC adding chain</p>
<p>obj5<br />RGW GC chain size: 255, with tail tag: b2b41852-866c-4bab-9160-3e1a1b5d7f81.6502214.0<br />RGW GC adding chain</p>
<p>obj6<br />RGW GC chain size: 255, with tail tag: b2b41852-866c-4bab-9160-3e1a1b5d7f81.6502214.0<br />RGW GC adding chain</p>
<p>obj5 and obj6 have same tail tag: b2b41852-866c-4bab-9160-3e1a1b5d7f81.6502214.0</p>
<p>this tag can be divided into 3 part: zone_param_id.rgw_rados_handle_id.RGW_Request_id</p>
<p>obj5 and obj6 seems share the same rgw_rados_handle, but the rgw request id are always 0. I think this is the main reason that confuse RGW GC thread</p>
rgw - Bug #37527 (Resolved): librgw not sync s3 user info since started
https://tracker.ceph.com/issues/37527
2018-12-05T08:46:27Z
Tao CHEN
<p>Hi, I'm using NFS over RGW and I found that the change of user's quota will not be applied since librgw init. Should we update regularly?</p>
rgw - Bug #36654 (Fix Under Review): librgw not check user max objects
https://tracker.ceph.com/issues/36654
2018-10-31T05:52:02Z
Tao CHEN
<p>Hi,</p>
<p>Librgw seems not check the max objects of user's quota. For example, if we set max_objects to 3, we can still touch new empty file in Librgw via NFS-Ganesha; Meanwhile, if the file is not empty, the third file will not be written correctly, the size will always be 0.</p>
rgw - Bug #23284 (Fix Under Review): Librgw rename operation returns operation not permitted
https://tracker.ceph.com/issues/23284
2018-03-09T08:43:06Z
Tao CHEN
<p>Hi,</p>
<p>Hi, I found the following test can't pass in NFS-Ganesha with NFS3 over RGW:</p>
<p>client side mount option : mount -t nfs xx.xx.xx.xx:/ /mnt -o vers=3,sync,nolock<br />Once sharing filesystem is successfully mounted, I executed:</p>
<pre><code class="c syntaxhl"><span class="CodeRay"> /mnt/bucket1 $ touch test_obj
/mnt/bucket1 $ mv test_obj test_obj_new
</span></code></pre>
<p>And I got : Operation not permitted -1</p>
<p>I traced the code in Ceph side and I found that the 'mv' operation tried to rename the opening object 'test_obj', which should have been closed, then librgw return error code EPRM.</p>
<p>Unlike to filesystem(FSAL VFS), inode doesn't exist in Object store, name is the key to the object, so we should make sure the target object is closed before rename operation.</p>
<p>As NFS v3 is stateless, there is no 'close' request send from nfs client side, so the nfs server has to handle such situation itself.</p>
rgw - Bug #23170 (Duplicate): librgw crash when processing request in 12.2.3
https://tracker.ceph.com/issues/23170
2018-02-28T06:58:48Z
Tao CHEN
<p>I'm using librgw with new Ceph release 12.2.3, librgw will always get unexpected crush when it is processing a request, the following is the bug trace:</p>
<p>#0 0x00007f17afddd1f7 in raise () from /lib64/libc.so.6<br /><a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: gpf in tcp_sendpage (Closed)" href="https://tracker.ceph.com/issues/1">#1</a> 0x00007f17afdde8e8 in abort () from /lib64/libc.so.6<br /><a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: BUG at fs/ceph/caps.c:2178 (Closed)" href="https://tracker.ceph.com/issues/2">#2</a> 0x00007f17aea9dac5 in _<em>gnu_cxx::</em>_verbose_terminate_handler() () from /lib64/libstdc++.so.6<br /><a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: leaked dentry ref on umount (Closed)" href="https://tracker.ceph.com/issues/3">#3</a> 0x00007f17aea9ba36 in ?? () from /lib64/libstdc++.so.6<br /><a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: lockdep warning in socket code (Closed)" href="https://tracker.ceph.com/issues/4">#4</a> 0x00007f17aea9ba63 in std::terminate() () from /lib64/libstdc++.so.6<br /><a class="issue tracker-1 status-5 priority-3 priority-lowest closed" title="Bug: ./rados lspools sometimes hangs after listing all pools? (Closed)" href="https://tracker.ceph.com/issues/5">#5</a> 0x00007f17aea9bc83 in _<em>cxa_throw () from /lib64/libstdc++.so.6<br /><a class="issue tracker-2 status-6 priority-3 priority-lowest closed" title="Feature: libceph could use a backward-compatible-to function (Rejected)" href="https://tracker.ceph.com/issues/6">#6</a> 0x00007f17aeaf07d7 in std::</em>_throw_logic_error(char const*) () from /lib64/libstdc++.so.6<br /><a class="issue tracker-6 status-3 priority-3 priority-lowest closed" title="Documentation: Document Monitor Commands (Resolved)" href="https://tracker.ceph.com/issues/7">#7</a> 0x00007f17aeafc601 in char* std::string::_S_construct<char const*>(char const*, char const*, std::allocator<char> const&, std::forward_iterator_tag) () from /lib64/libstdc++.so.6<br /><a class="issue tracker-3 status-5 priority-4 priority-default closed" title="Support: Document differences from S3 (Closed)" href="https://tracker.ceph.com/issues/8">#8</a> 0x00007f17aeafc9b8 in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) () from /lib64/libstdc++.so.6<br /><a class="issue tracker-2 status-8 priority-3 priority-lowest closed" title="Feature: Access unimported data (Won't Fix)" href="https://tracker.ceph.com/issues/9">#9</a> 0x00007f1795714013 in rgw_log_op (store=0x7f17a8f51a90, rest=rest@entry=0x0, s=s@entry=0x7f17b09a72f0, op_name="stat_bucket",<br /> olog=olog@entry=0x0) at /dist/github/ceph/src/rgw/rgw_log.cc:360<br /><a class="issue tracker-2 status-3 priority-4 priority-default closed" title="Feature: osd: Replace ALLOW_MESSAGES_FROM macro (Resolved)" href="https://tracker.ceph.com/issues/10">#10</a> 0x00007f179568bd33 in rgw::RGWLibProcess::process_request (this=this@entry=0x7f17a9087d20, req=req@entry=0x7f17b09a7d50,<br /> io=io@entry=0x7f17b09a7ab0) at /dist/github/ceph/src/rgw/librgw.cc:320<br /><a class="issue tracker-4 status-3 priority-3 priority-lowest closed" title="Cleanup: mds: replace ALLOW_MESSAGES_FROM macro (Resolved)" href="https://tracker.ceph.com/issues/11">#11</a> 0x00007f179568ca16 in rgw::RGWLibProcess::process_request (this=0x7f17a9087d20, req=req@entry=0x7f17b09a7d50)<br /> at /dist/github/ceph/src/rgw/librgw.cc:166<br /><a class="issue tracker-2 status-3 priority-3 priority-lowest closed" title="Feature: uclient: Make cap handling smarter (Resolved)" href="https://tracker.ceph.com/issues/12">#12</a> 0x00007f17956981ab in execute_req (this=<optimized out>, req=0x7f17b09a7d50) at /dist/github/ceph/src/rgw/rgw_lib_frontend.h:100<br /><a class="issue tracker-2 status-3 priority-4 priority-default closed parent" title="Feature: uclient: Make readdir use the cache (Resolved)" href="https://tracker.ceph.com/issues/13">#13</a> rgw::RGWLibFS::stat_bucket (this=this@entry=0x7f17a908b600, parent=parent@entry=0x7f17a908b620, path=path@entry=0x7f17a909d648 "bucket1",<br /> bs=..., flags=flags@entry=0) at /dist/github/ceph/src/rgw/rgw_file.cc:77<br /><a class="issue tracker-1 status-10 priority-4 priority-default closed" title="Bug: osd: pg split breaks if not all osds are up (Duplicate)" href="https://tracker.ceph.com/issues/14">#14</a> 0x00007f1795699a52 in rgw_lookup (rgw_fs=<optimized out>, parent_fh=<optimized out>, path=<optimized out>, fh=0x7f17b09a8220,<br /> flags=<optimized out>) at /dist/github/ceph/src/rgw/rgw_file.cc:1798</p>
<p>The main cause is in src/rgw/rgw_log.cc:360 :<br /><pre><code class="c syntaxhl"><span class="CodeRay">std::string uri(s->info.env->get(<span class="string"><span class="delimiter">"</span><span class="content">REQUEST_METHOD</span><span class="delimiter">"</span></span>));
</span></code></pre></p>
<p>It seems "REQUEST_METHOD" is not initialized in librgw, neither do "HTTP_VERSION", "REQUEST_URI", "SCRIPT_URI", "SERVER_PORT", "REMOTE_ADDR". So I think we should initialized them before processing request in librgw</p>
rgw - Bug #22416 (Resolved): s3cmd move object error
https://tracker.ceph.com/issues/22416
2017-12-13T06:15:13Z
Tao CHEN
<p>Hi, I'm using s3cmd to test Ceph RGW, and I found a bug when I tried to rename an object inside a bucket:<br /><pre><code class="c syntaxhl"><span class="CodeRay">root / $ s3cmd ls s3:<span class="comment">//bucket1</span>
<span class="integer">2017</span>-<span class="integer">12</span>-<span class="integer">13</span> <span class="octal">04</span>:<span class="octal">04</span> <span class="integer">1871</span> s3:<span class="comment">//bucket1/obj1</span>
<span class="integer">2017</span>-<span class="integer">12</span>-<span class="integer">13</span> <span class="octal">04</span>:<span class="octal">04</span> <span class="integer">8034</span> s3:<span class="comment">//bucket1/obj2</span>
root / $ s3cmd mv s3:<span class="comment">//bucket1/obj1 s3://bucket1/obj3</span>
move: <span class="char">'s</span><span class="integer">3</span>:<span class="comment">//bucket1/obj1' -> 's3://bucket1/obj3'</span>
root / $ s3cmd ls s3:<span class="comment">//bucket1</span>
<span class="integer">2017</span>-<span class="integer">12</span>-<span class="integer">13</span> <span class="octal">04</span>:<span class="octal">04</span> <span class="integer">1871</span> s3:<span class="comment">//bucket1/obj1</span>
<span class="integer">2017</span>-<span class="integer">12</span>-<span class="integer">13</span> <span class="octal">04</span>:<span class="octal">04</span> <span class="integer">8034</span> s3:<span class="comment">//bucket1/obj2</span>
<span class="integer">2017</span>-<span class="integer">12</span>-<span class="integer">13</span> <span class="octal">07</span>:<span class="octal">06</span> <span class="integer">1871</span> s3:<span class="comment">//bucket1/obj3</span>
</span></code></pre></p>
<p>The source object still exists even though obj3 has been created.</p>
rgw - Bug #22296 (Resolved): Librgw shutdown uncorreclty
https://tracker.ceph.com/issues/22296
2017-12-01T08:02:37Z
Tao CHEN
<p>Hi,</p>
<p>I'm recently using nfs-ganesha over RGW to do some test. I find that each time when nfs-ganesha shutdown, the librgw socket file still exists. Next time if I rerun nfs-ganesha, a new librgw socket file will be created, the old one is never reused.</p>
<p>Here is my investigation:<br /><pre><code class="c syntaxhl"><span class="CodeRay"> <span class="predefined-type">int</span> RGWLib::stop()
{
derr << <span class="string"><span class="delimiter">"</span><span class="content">shutting down</span><span class="delimiter">"</span></span> << dendl;
fe->stop();
fe->join();
delete fe;
delete fec;
delete ldh;
rgw_log_usage_finalize();
delete olog;
RGWStoreManager::close_storage(store);
...
}
</span></code></pre></p>
<p>When librgw begins to shutdown, the above code will be invoked. fe->stop() will send SIGUSR1 to frontend thread:<br /><pre><code class="c syntaxhl"><span class="CodeRay"><span class="directive">void</span> RGWProcessFrontend::stop()
{
pprocess->close_fd();
thread->kill(SIGUSR1);
}
</span></code></pre></p>
<p>However, SIGUSR1 has default action Term, which will terminate the whole process, as a consequence, the code following fe->stop() will not be executed, so the librgw socket fil is not be deleted.</p>
<p>I think that we can add a signal handler for SIGUSR1 in order to avoid this.</p>