[hadoop-swiftfs] DLO segment files are displayed and some mapreduce app fails

Bug #1436278 reported by Kazuki OIKAWA
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Sahara
Fix Released
High
Kazuki OIKAWA

Bug Description

When large object stored, some methods of SwiftNativeFileSystem are displayed DLO segment objects.
Some mapreduce applications(ex. TeraGen) is failed because that behavior.

$ swift list test
largefile
largefile/000001
largefile/000002

In pseudo-java code.

fs = new SwiftNativeFileSystem(...);
fs.listStatus("/");
=> returned two objects (name is same "largefile", file and directory).
     Expected returned value is a "largefile" file object only.
fs.isFile("/largefile");
=> returned True
fs.isDirectory("/largefile");
=> returned False
fs.listStatus("/largefile");
=> returned two segment objects;
    Expected returned value is array contains a "largefile" file object.

Kazuki OIKAWA (k.oikw)
Changed in sahara:
assignee: nobody → Kazuki OIKAWA (k.oikw)
status: New → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to sahara-extra (master)

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

Changed in sahara:
milestone: none → kilo-rc1
Changed in sahara:
importance: Undecided → Medium
importance: Medium → High
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to sahara-extra (master)

Reviewed: https://review.openstack.org/167565
Committed: https://git.openstack.org/cgit/openstack/sahara-extra/commit/?id=e464caa3ef95c6237739ac4ea1c15b73080a9562
Submitter: Jenkins
Branch: master

commit e464caa3ef95c6237739ac4ea1c15b73080a9562
Author: Kazuki OIKAWA <email address hidden>
Date: Wed Mar 25 20:09:06 2015 +0900

    Hiding a pseudo-directory that contains DLO segments

    In SwiftNativeFileSystem implementation,
    writes DLO manifest and segments to same location.

        largefile <- manifest file
        largefile/000001 <- 1st segment
        largefile/000002 <- 2nd segment

    And querying Swift to list objects (delimiter=/),
    returns two object that is same name (sorted by name).

        largefile <- manifest file
        largefile/ <- pseudo-directory

    listStatus method returns two objects at above.
    But FileSystem spec cannot exists file and directory in same name.

    This patch modified listStatus's behavior to fix that problems
    1. Ignores pseudo-directory entry If same named objects found
    2. When called listStatus with manifest file path, returns a manifest file
       instead of the segments. (currently, returns list of segments)

    Change-Id: Ic8835ba170c52ebac405315b44d59b4935909d51
    Closes-Bug: 1436278

Changed in sahara:
status: In Progress → Fix Committed
Thierry Carrez (ttx)
Changed in sahara:
status: Fix Committed → Fix Released
Thierry Carrez (ttx)
Changed in sahara:
milestone: kilo-rc1 → 2015.1.0
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.