From: Yehuda Sadeh Date: Tue, 15 Mar 2016 20:31:31 +0000 (-0700) Subject: rgw: use higher precision time when encoding / decoding external apis X-Git-Tag: v10.1.0~73^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=809cabf693251351021367a1001069e5b1eed5b0;p=ceph.git rgw: use higher precision time when encoding / decoding external apis When dealing with external entities (e.g., remote rgw), use higher precision time format for object mtime. Signed-off-by: Yehuda Sadeh --- diff --git a/src/cls/rgw/cls_rgw_types.cc b/src/cls/rgw/cls_rgw_types.cc index 30c43e037f7e..79a52722d669 100644 --- a/src/cls/rgw/cls_rgw_types.cc +++ b/src/cls/rgw/cls_rgw_types.cc @@ -407,7 +407,7 @@ void rgw_bi_log_entry::dump(Formatter *f) const f->dump_int("index_ver", index_ver); utime_t ut(timestamp); - ut.gmtime(f->dump_stream("timestamp")); + ut.gmtime_nsec(f->dump_stream("timestamp")); f->open_object_section("ver"); ver.dump(f); f->close_section(); diff --git a/src/rgw/rgw_data_sync.cc b/src/rgw/rgw_data_sync.cc index ce4484c9c828..79f4721bcf53 100644 --- a/src/rgw/rgw_data_sync.cc +++ b/src/rgw/rgw_data_sync.cc @@ -1673,7 +1673,7 @@ struct bucket_list_entry { JSONDecoder::decode_json("VersionId", key.instance, obj); JSONDecoder::decode_json("IsLatest", is_latest, obj); string mtime_str; - JSONDecoder::decode_json("LastModified", mtime_str, obj); + JSONDecoder::decode_json("RgwxMtime", mtime_str, obj); struct tm t; uint32_t nsec; diff --git a/src/rgw/rgw_metadata.cc b/src/rgw/rgw_metadata.cc index dce26ae52195..3160ce0b1989 100644 --- a/src/rgw/rgw_metadata.cc +++ b/src/rgw/rgw_metadata.cc @@ -739,7 +739,7 @@ void RGWMetadataManager::dump_log_entry(cls_log_entry& entry, Formatter *f) f->dump_string("id", entry.id); f->dump_string("section", entry.section); f->dump_string("name", entry.name); - entry.timestamp.gmtime(f->dump_stream("timestamp")); + entry.timestamp.gmtime_nsec(f->dump_stream("timestamp")); try { RGWMetadataLogData log_data; diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index bc0495e4e856..7e4c3749fd04 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -11759,7 +11759,7 @@ void RGWStateLog::dump_entry(const cls_statelog_entry& entry, Formatter *f) f->dump_string("client_id", entry.client_id); f->dump_string("op_id", entry.op_id); f->dump_string("object", entry.object); - entry.timestamp.gmtime(f->dump_stream("timestamp")); + entry.timestamp.gmtime_nsec(f->dump_stream("timestamp")); if (!dump_entry_internal(entry, f)) { f->dump_int("state", entry.state); } diff --git a/src/rgw/rgw_rest_conn.cc b/src/rgw/rgw_rest_conn.cc index 2a8995b69935..f45e94a729df 100644 --- a/src/rgw/rgw_rest_conn.cc +++ b/src/rgw/rgw_rest_conn.cc @@ -102,7 +102,7 @@ static void set_date_header(const real_time *t, map& headers, co } stringstream s; utime_t tm = utime_t(*t); - tm.gmtime(s); + tm.gmtime_nsec(s); headers[header_name] = s.str(); } diff --git a/src/rgw/rgw_rest_s3.cc b/src/rgw/rgw_rest_s3.cc index 4afd90ae2066..2ab3514b28ef 100644 --- a/src/rgw/rgw_rest_s3.cc +++ b/src/rgw/rgw_rest_s3.cc @@ -511,6 +511,8 @@ void RGWListBucket_ObjStore_S3::send_versioned_response() s->formatter->dump_int("VersionedEpoch", iter->versioned_epoch); } s->formatter->dump_string("RgwxTag", iter->tag); + utime_t ut(iter->mtime); + ut.gmtime_nsec(s->formatter->dump_stream("RgwxMtime")); } s->formatter->dump_string("VersionId", version_id); s->formatter->dump_bool("IsLatest", iter->is_current());