Bug with mismatched expiring_objects_container_divisor settings

Bug #1187200 reported by gholt
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Object Storage (swift)
Fix Released
Undecided
gholt

Bug Description

There's an annoying bug with the object expiration feature where if you have mismatched expiring_objects_container_divisor settings (they're in proxy-server.conf and object-server.conf) then the object server will end up putting the expiring objects information into a container name that's different from the one the proxy chose, but, and here's the kicker, using the host, partition, and device of the container the proxy chose.

Not good as the info ends up in an essentially orphaned container, though the info should eventually get back to the right place with replication, I haven't confirmed that yet. And I'm pretty sure any orphaned containers would remain orphaned forever. I'll submit a tool for finding and cleaning up such orphans later.

The fix will be to pass the proxy chosen container name down to the object server along with the other information.

Note that this isn't a problem if you've always used the same expiring_objects_container_divisor settings everywhere, whether the default or a specific setting.

gholt (gholt)
Changed in swift:
assignee: nobody → gholt (gholt)
status: New → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to swift (master)

Fix proposed to branch: master
Review: https://review.openstack.org/31584

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to swift (master)

Reviewed: https://review.openstack.org/31584
Committed: http://github.com/openstack/swift/commit/fef2afd927159af00b6e0c44310b0c7227ed5cc3
Submitter: Jenkins
Branch: master

commit fef2afd927159af00b6e0c44310b0c7227ed5cc3
Author: gholt <email address hidden>
Date: Mon Jun 3 23:50:05 2013 +0000

    Fixed Bug 1187200

    See Bug 1187200 for a full description of the problem.

    Part 1:

    X-Delete-At-Container added to X-Delete-At-* info

    This fixes the bug by passing the expiring-objects-account's
    container name onward to the backend object servers. This is in case
    the object servers' expiring_objects_container_divisor happens to be
    different than the proxy server's, we want to make sure the host,
    partition, and device match up with the container name. Different
    container names would be fine, but not with mismatched host,
    partition, and device info.

    Part 2:

    The db_replicator now double checks the disk path's partition against
    the partition the ring gives back. If they don't match, it logs the
    problem but continues to replicate the database to where it should be
    and, on success to all proper nodes, removes the local out of place
    database.

    Bug 1187200

    Change-Id: Id0873a3f2198ce285fe0b0c777738eff38bc2438

Changed in swift:
status: In Progress → Fix Committed
Changed in swift:
milestone: none → 1.9.0
Thierry Carrez (ttx)
Changed in swift:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.