]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson: fix pgnls exception
authorchunmei-liu <chunmei.liu@intel.com>
Tue, 29 Jun 2021 05:20:55 +0000 (22:20 -0700)
committerchunmei-liu <chunmei.liu@intel.com>
Tue, 29 Jun 2021 05:20:55 +0000 (22:20 -0700)
has_pg_op is always false, since m->ops is empty at that time.
so pgnls operation will go to process_op and report unknown operations.
move m->finish_decode ahead to fill m->ops.

Signed-off-by: chunmei-liu <chunmei.liu@intel.com>
src/crimson/osd/osd_operations/client_request.cc

index 2244791ffe4cd45deb846039046c12e76990b5c4..2de452cb51612ce413beb54d4824830a14ff8c38 100644 (file)
@@ -87,6 +87,9 @@ seastar::future<> ClientRequest::start()
        return interruptor::with_interruption([this, pgref]() mutable {
           epoch_t same_interval_since = pgref->get_interval_start_epoch();
           logger().debug("{} same_interval_since: {}", *this, same_interval_since);
+          if (m->finish_decode()) {
+            m->clear_payload();
+          }
           const bool has_pg_op = is_pg_op();
           auto interruptible_do_op = interruptor::wrap_function([=] {
             PG &pg = *pgref;
@@ -108,9 +111,6 @@ seastar::future<> ClientRequest::start()
             }).then_interruptible([this,
                                    has_pg_op,
                                    pgref=std::move(pgref)]() mutable {
-              if (m->finish_decode()) {
-                m->clear_payload();
-              }
               return (has_pg_op ?
                       process_pg_op(pgref) :
                       process_op(pgref));