Public bug reported:

I spent ages trying to work out why my roots() method was appearing to
succeed but never emitting the itemsReceived() signal on the ItemJob.

Inside the class, you have:

            try
            {
                validate_(md);
                auto item = ItemImpl::make_item(method_, md, account_impl_);
                items.append(item);
            }
            catch (StorageError const& exc)
            {
                // Bad metadata received from provider, validate_() or 
make_item() have logged it.
            }

So items that fail the validation silently disappear with no indication
that there is a problem.  Unlike what the comment says, there was no
logging and the ItemJob didn't transition to the Error state.  This is
not okay.

And later on, it seems the itemsReceived signal is only conditionally
emitted:

        if (!items.isEmpty())
        {
            Q_EMIT public_instance_->itemsReady(items);
        }

Would it be a problem to always emit this signal?  Having it conditional
like this made me chase my tail trying to work out if there was a
problem with the way I'd connected to the signal, or if it might be
getting emitted after statusChanged.

** Affects: storage-framework (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1644577

Title:
  ItemListJobImpl silently throws away items that fail client side
  validation

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/storage-framework/+bug/1644577/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to