Re: [openstack-dev] [Openstack] [Swift] Erasure coding reconstructor doesn't work

2015-07-22 Thread Luse, Paul E
Correct, it by design.  Swift doesn’t expect people to delete things “under the 
covers”.  When the auditor finds a corrupted file, it’s the one that quantities 
it and knows that it also needs to invalidate the hashes.pkl file.  This 
mechanism is there to minimize extra ‘stuff’ going on both at the node and on 
the cluster when it comes to making sure there is durability in the system.

Wrt why the replication code seems to work if you delete just a .data (again, 
you shouldn’t do this as files don’t just disappear, the intention is that the 
auditor is in charge here) is because of some code in the replicator that I 
didn’t ‘mimic’ in the reconstructor and it doesn’t look like clay did either 
when he worked on it.  Not really sure it was there – forces a listing every 10 
passes for some reason.  Clay? (see do_listdir in update() in the replciator)

Thx
Paul

From: Changbin Liu [mailto:changbin@gmail.com]
Sent: Wednesday, July 22, 2015 12:24 PM
To: OpenStack Development Mailing List (not for usage questions)
Subject: Re: [openstack-dev] [Openstack] [Swift] Erasure coding reconstructor 
doesn't work

Thanks, Paul and Clay.

By deleted one data fragment I meant I rm only the data file. I did not 
delete the hashes.pkl file in the outer directory.

I tried it again. This time deleting both the data file and the hashes.pkl 
file. The reconstructor is able to restore the data file correctly.

But now I wonder: is it by design that EC does not handle an accidental 
deletion of just the data file? Deleting both data file and hashes.pkl file is 
more like a deliberately-created failure case instead of a normal one.  To me 
Swift EC repairing seems different from the triple-replication mode, where you 
delete any data file copy, it will be restored.



Thanks

Changbin

On Tue, Jul 21, 2015 at 5:28 PM, Luse, Paul E 
paul.e.l...@intel.commailto:paul.e.l...@intel.com wrote:
I was about to ask that very same thing and, at the same time, if you can 
indicate if you’ve seen errors in any logs and if so please provide those as 
well.  I’m hoping you just didn’t delete the hashes.pkl file though ☺

-Paul

From: Clay Gerrard 
[mailto:clay.gerr...@gmail.commailto:clay.gerr...@gmail.com]
Sent: Tuesday, July 21, 2015 2:22 PM
To: OpenStack Development Mailing List (not for usage questions)
Subject: Re: [openstack-dev] [Openstack] [Swift] Erasure coding reconstructor 
doesn't work

How did you deleted one data fragment?

Like replication the EC consistency engine uses some sub directory hashing to 
accelerate replication requests in a consistent system - so if you just rm a 
file down in an hashdir somewhere you also need to delete the hashes.pkl up in 
the part dir (or call the invalidate_hash method like PUT, DELETE, POST, and 
quarantine do)

Every so often someone discusses the idea of having the auditor invalidate a 
hash after long enough or take some action on empty hashdirs (mind the 
races!) - but its really only an issue when someone delete's something by hand 
so we normally manage to get distracted with other things.

-Clay

On Tue, Jul 21, 2015 at 1:38 PM, Changbin Liu 
changbin@gmail.commailto:changbin@gmail.com wrote:
Folks,

To test the latest feature of Swift erasure coding, I followed this document 
(http://docs.openstack.org/developer/swift/overview_erasure_code.html) to 
deploy a simple cluster. I used Swift 2.3.0.

I am glad that operations like object PUT/GET/DELETE worked fine. I can see 
that objects were correctly encoded/uploaded and downloaded at proxy and object 
servers.

However, I noticed that swift-object-reconstructor seemed don't work as 
expected. Here is my setup: my cluster has three object servers, and I use this 
policy:

[storage-policy:1]
policy_type = erasure_coding
name = jerasure-rs-vand-2-1
ec_type = jerasure_rs_vand
ec_num_data_fragments = 2
ec_num_parity_fragments = 1
ec_object_segment_size = 1048576

After I uploaded one object, I verified that: there was one data fragment on 
each of two object servers, and one parity fragment on the third object server. 
However, when I deleted one data fragment, no matter how long I waited, it 
never got repaired, i.e., the deleted data fragment was never regenerated by 
the swift-object-reconstructor process.

My question: is swift-object-reconstructor supposed to be NOT WORKING given 
the current implementation status? Or, is there any configuration I missed in 
setting up swift-object-reconstructor?

Thanks

Changbin

__
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: 
openstack-dev-requ...@lists.openstack.org?subject:unsubscribehttp://openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


__
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: 
openstack-dev-requ

Re: [openstack-dev] [Openstack] [Swift] Erasure coding reconstructor doesn't work

2015-07-21 Thread Luse, Paul E
I was about to ask that very same thing and, at the same time, if you can 
indicate if you’ve seen errors in any logs and if so please provide those as 
well.  I’m hoping you just didn’t delete the hashes.pkl file though ☺

-Paul

From: Clay Gerrard [mailto:clay.gerr...@gmail.com]
Sent: Tuesday, July 21, 2015 2:22 PM
To: OpenStack Development Mailing List (not for usage questions)
Subject: Re: [openstack-dev] [Openstack] [Swift] Erasure coding reconstructor 
doesn't work

How did you deleted one data fragment?

Like replication the EC consistency engine uses some sub directory hashing to 
accelerate replication requests in a consistent system - so if you just rm a 
file down in an hashdir somewhere you also need to delete the hashes.pkl up in 
the part dir (or call the invalidate_hash method like PUT, DELETE, POST, and 
quarantine do)

Every so often someone discusses the idea of having the auditor invalidate a 
hash after long enough or take some action on empty hashdirs (mind the 
races!) - but its really only an issue when someone delete's something by hand 
so we normally manage to get distracted with other things.

-Clay

On Tue, Jul 21, 2015 at 1:38 PM, Changbin Liu 
changbin@gmail.commailto:changbin@gmail.com wrote:
Folks,

To test the latest feature of Swift erasure coding, I followed this document 
(http://docs.openstack.org/developer/swift/overview_erasure_code.html) to 
deploy a simple cluster. I used Swift 2.3.0.

I am glad that operations like object PUT/GET/DELETE worked fine. I can see 
that objects were correctly encoded/uploaded and downloaded at proxy and object 
servers.

However, I noticed that swift-object-reconstructor seemed don't work as 
expected. Here is my setup: my cluster has three object servers, and I use this 
policy:

[storage-policy:1]
policy_type = erasure_coding
name = jerasure-rs-vand-2-1
ec_type = jerasure_rs_vand
ec_num_data_fragments = 2
ec_num_parity_fragments = 1
ec_object_segment_size = 1048576

After I uploaded one object, I verified that: there was one data fragment on 
each of two object servers, and one parity fragment on the third object server. 
However, when I deleted one data fragment, no matter how long I waited, it 
never got repaired, i.e., the deleted data fragment was never regenerated by 
the swift-object-reconstructor process.

My question: is swift-object-reconstructor supposed to be NOT WORKING given 
the current implementation status? Or, is there any configuration I missed in 
setting up swift-object-reconstructor?

Thanks

Changbin

__
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: 
openstack-dev-requ...@lists.openstack.org?subject:unsubscribehttp://openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

__
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [Swift] storage policies merge plan

2014-05-27 Thread Luse, Paul E
Hi Chmouel,

Storage policies can be fully tested and exercised on an SAIO; the docs that 
were recently merged to the feature/ec branch also include a second example 
policy using 2x replication to show this.  No reason why devstack can’t be used 
but I’d propose it doesn’t make anything easier and/or more testable.

Thx
Paul

From: Chmouel Boudjnah [mailto:chmo...@enovance.com]
Sent: Tuesday, May 27, 2014 2:08 AM
To: OpenStack Development Mailing List (not for usage questions)
Subject: Re: [openstack-dev] [Swift] storage policies merge plan

On Tue, May 27, 2014 at 10:02 AM, Hua ZZ Zhang 
zhu...@cn.ibm.commailto:zhu...@cn.ibm.com wrote:

Do it make sense to support storage policy work in devstack so that it can be 
more easily tested?

-Edward Zhang
I don't think storage policy on one VM  (which has other OpenStack services)  
like usually setup for devstack is very practical, but I may be wrong.
Chmouel.




[Inactive hide details for John Dickinson ---2014-05-24 上午 06:27:13---John 
Dickinson m...@not.mn]John Dickinson ---2014-05-24 上午 06:27:13---John 
Dickinson m...@not.mnmailto:m...@not.mn
John Dickinson m...@not.mnmailto:m...@not.mn

2014-05-24 上午 06:27
Please respond to
OpenStack Development Mailing List \(not for usage questions\) 
openstack-dev@lists.openstack.orgmailto:openstack-dev@lists.openstack.org



To


OpenStack Development Mailing List (not for usage questions) 
openstack-dev@lists.openstack.orgmailto:openstack-dev@lists.openstack.org, 
openstack-operat...@lists.openstack.orgmailto:openstack-operat...@lists.openstack.org


cc




Subject


[openstack-dev] [Swift] storage policies merge plan








We've been working for a long time on the feature/ec branch in the swift repo. 
It's now done and needs to be merged into master to be generally available.

Here's how the integration is going to work:

1) The feature/ec branch will be refactored into a series of dependent 
reviewable patches
2) The patch chain will be proposed to master, and master will enter a freeze 
until the storage policy patches land
3) The first patch in the chain will be marked as -2 to plug the chain
4) The Swift community will review and approve all patches in the chain.
5) When all patches in the chain are approved, the first -2 will be removed and 
the whole chain will be sent to the CI system


There are two things that I'll ask of you during this time. First, please 
commit time to reviewing the storage policy patches. Second, please do not 
deploy a version of Swift that is midway through the storage policy patch 
chain. I don't expect it to break anything, but it's a complicating factor best 
to be avoided.

I will send out another email when the patch chain has been proposed to master 
and to announce the freeze.

--John


(See attached file: 
signature.asc)___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.orgmailto:OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.orgmailto:OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [Swift] new core members

2014-03-27 Thread Luse, Paul E
Congrats guys!!

-Original Message-
From: John Dickinson [mailto:m...@not.mn] 
Sent: Thursday, March 27, 2014 1:34 PM
To: OpenStack Development Mailing List (not for usage questions)
Subject: [openstack-dev] [Swift] new core members

I'm pleased to announce that Alistair Coles and Christian Schwede have both 
joined the Swift core team. They have both been very active in the Swift 
community, contributing both code and reviews. Both Alistair and Christian work 
with large-scale production Swift clusters, and I'm happy to have them on the 
core team.

Alistair and Christian, thanks for your work in the community and for taking on 
more responsibility. I'm glad we'll be able to continue to work together on 
Swift.

--John





___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] question about storage policies for Swift

2014-02-09 Thread Luse, Paul E
 future writes to that container will operate only 
on devices assorted with the policy specified. For example if you wanted to 
create a container that maps to the turkey policy:

o   curl -v -X PUT -H 'X-Auth-Token:AUTH_tk13909e8beb0e4b5faafc5c9c7d219c6a' -H 
X-Storage-Policy: turkey http://127.0.0.1:8080/v1/AUTH_test/myCont/



-Object operations (API) do not change, the fact that you're using a 
container created with a specific policy is all that's needed



-Note that you can't change the policy  of a container once set - 
you'll get an error if you try) but you can move object from one container to 
another where the container can, of course, have different policies



-You will find, if you look, that the directory hierarchy on the object 
nodes is slightly different, instead of just an objects directory, you will 
see objects, objects-1, and so on.


Hopefully that answers your question and helps you, and anyone else, get 
started if you want an early look

Thanks!
Paul





From: Gil Vernik [mailto:g...@il.ibm.com]
Sent: Saturday, February 8, 2014 11:29 PM
To: Luse, Paul E
Subject: question about storage policies for Swift

Dear Paul Luse,

I am trying to better understand your new additions to Swift about storage 
policies.
I started with your recently merged patch - Storage Policy / DiskFile Interface 
Support .
Unfortunately I find it a bit hard to understand or to find correct place where 
is the definition of storage policy itself.

Can you please, explain to me in few sentences, what is storage policy looks 
like?  Some real examples?
I see that storage_policy.py loads policies from swift.conf and each policy has 
index and name, but I don't understand how policies looks like, since i didn't 
find swift.conf and I didn't find examples in documentation.

Thanking you in advance,
Gil Vernik.
___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [Swift] meeting time updated

2014-02-06 Thread Luse, Paul E
What a corporate thing to do :)  Good call though John

-Paul

-Original Message-
From: John Dickinson [mailto:m...@not.mn] 
Sent: Thursday, February 6, 2014 9:16 AM
To: OpenStack Development Mailing List (not for usage questions)
Subject: [openstack-dev] [Swift] meeting time updated

Historically, the Swift team meetings have been every other week. In order to 
keep better track of things (and hopefully to get more specific attention on 
languishing reviews), we're moving to a weekly meeting schedule.

New meeting time: every Wednesday at 1900UTC in #openstack-meeting

The meeting agenda is tracked at https://wiki.openstack.org/wiki/Meetings/Swift


--John





___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [Swift] question on Application class concurrency; paste.app_factory mechanism

2013-07-25 Thread Luse, Paul E
Thanks for the reply Pete.  Don't quite follow you so will continue to do some 
reading and experimenting and see if I can't come up some additional 
questions...

Thx
Paul

-Original Message-
From: Pete Zaitcev [mailto:zait...@redhat.com] 
Sent: Thursday, July 25, 2013 9:51 AM
To: OpenStack Development Mailing List
Cc: Luse, Paul E
Subject: Re: [openstack-dev] [Swift] question on Application class concurrency; 
paste.app_factory mechanism

On Wed, 24 Jul 2013 02:31:45 +
Luse, Paul E paul.e.l...@intel.com wrote:

 I was thinking that each connection would get its own instance thus it 
 would be sage to store connection-transient information there but I 
 was surprised by my quick test.

Yeah, you have it tracked in __call__, typically hanging off controller.

-- Pete

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [Swift] erasure codes, digging deeper

2013-07-22 Thread Luse, Paul E

I think most folks are on the same page wrt EC being consider a level or 
storage policy as we've been discussing in other forums.  I saw the previous 
note on account versus container and was actually thinking it made more sense 
to me at least to enable billing per container as opposed to trying to shoehorn 
attribute of a set of data (like a storage policy) to and account so I like 
where you're going w/the suggestion.  I'm not even sure we need to answer the 
detailed question of what defines these levels, or storage policies, only that 
the design allows for their efficient use and flexible definitions.

Thx
Paul

From: David Hadas [mailto:david.ha...@gmail.com]
Sent: Monday, July 22, 2013 9:35 AM
To: OpenStack Development Mailing List
Subject: Re: [openstack-dev] [Swift] erasure codes, digging deeper

Hi,

In Portland, we discussed a somewhat related issue of having multiple 
replication levels in one Swift cluster.
It may be that a provider would not wish to expose the use of EC or the level 
of replication used. For example a provider may offer a predefined set of 
services such as Gold, Silver and Bronze, Aluminum which a user can 
choose from. The provider may decide how each level is implemented (As a silly 
example: Gold is 4 way replication, Silver is a 3 way replication, Bronze is 
EC, Aluminum is single replica without EC).

Does it make sense to consider EC as an implementation of a certain service 
level (the same as for example the choice of the number of replicas)?

Now we are back to the question of what is the right unit in which we define 
this 'level of service' (Gold, Silver...).
Should the level of service be defined when the account is created or should we 
allow a user to state:
I would like to have a container with Gold to keep my work, Bronze to keep my 
family pictures and videos and Aluminum to keep a copy of all my music files.

If we choose to enable container service levels, we need to enable billing per 
level of service such that a single account could be billed for the actual use 
it has done per each level of service. Maybe we even need to have all 
statistics gathered to be grouped by service level.
I am not sure if we can escape that even with account service levels.

DH
On Thu, Jul 18, 2013 at 9:37 PM, John Dickinson 
m...@not.mnmailto:m...@not.mn wrote:
Yes, and I'd imagine that the normal default would be for replicated data.

Moving the granularity from a container to account-based, as Chmouel and Chuck 
said, is interesting too.

--John

On Jul 18, 2013, at 11:32 AM, Christian Schwede 
i...@cschwede.demailto:i...@cschwede.de wrote:

 A solution to this might be to set the default policy as a configuration
 setting in the proxy. If you want a replicated swift cluster just allow
 this policy in the proxy and set it to default. The same for EC cluster,
 just set the allowed policy to EC. If you want both (and let your users
 decide which policy to use) simply configure a list of allowed policies
 with the first one in the list as the default policy in case they don't
 set a policy during container creation.

 Am 18.07.13 20:15, schrieb Chuck Thier:
 I think you are missing the point.  What I'm talking about is who
 chooses what data is EC and what is not.  The point that I am trying to
 make is that the operators of swift clusters should decide what data is
 EC, not the clients/users.  How the data is stored should be totally
 transparent to the user.

 Now if we want to down the road offer user defined classes of storage
 (like how S3 does reduced redundancy), I'm cool with that, just that it
 should be orthogonal to the implementation of EC.

 --
 Chuck


 On Thu, Jul 18, 2013 at 12:57 PM, John Dickinson 
 m...@not.mnmailto:m...@not.mn
 mailto:m...@not.mnmailto:m...@not.mn wrote:

Are you talking about the parameters for EC or the fact that
something is erasure coded vs replicated?

For the first, that's exactly what we're thinking: a deployer sets
up one (or more) policies and calls them Alice, Bob, or whatever,
and then the API client can set that on a particular container.

This allows users who know what they are doing (ie those who know
the tradeoffs and their data characteristics) to make good choices.
It also allows deployers who want to have an automatic policy to set
one up to migrate data.

For example, a deployer may choose to run a migrator process that
moved certain data from replicated to EC containers over time (and
drops a manifest file in the replicated tier to point to the EC data
so that the URL still works).

Like existing features in Swift (eg large objects), this gives users
the ability to flexibly store their data with a nice interface yet
still have the ability to get at some of the pokey bits underneath.

--John



On Jul 18, 2013, at 10:31 AM, Chuck Thier 
 cth...@gmail.commailto:cth...@gmail.com
mailto:cth...@gmail.commailto:cth...@gmail.com wrote:

 I'm with