[Ovirt-devel] [PATCH] support optimistic locking with lock_version

steve linabery slinabery at gmail.com
Thu May 22 16:26:51 UTC 2008


On Thu, May 22, 2008 at 11:23 AM, Hugh O. Brock <hbrock at redhat.com> wrote:
> On Wed, May 21, 2008 at 08:23:07PM -0500, steve linabery wrote:
>> Hi Ovirt,
>>
>> Edited the migration files to add the :lock_version column, which will
>> allow us to use optimistic locking by default.
>>
>> We can override this with more restrictive locking when needed, but
>> this should help catch stuff that might slip through the cracks.
>>
>
> Thanks Steve. I have a couple of questions in-line below, please
> indulge my ignorance if you would...
>
>> From 65af40d990b6d881f927609da7b63cbcbabe9e57 Mon Sep 17 00:00:00 2001
>> From: Steve Linabery <slinabery at gmail.com>
>> Date: Wed, 21 May 2008 20:16:39 -0500
>> Subject: [PATCH] Add lock_version attribute to all objects to enable optimistic locking.
>>  Edit migration files to use the 't.type :fieldname' syntax.
>>
>>
>> Signed-off-by: Steve Linabery <slinabery at gmail.com>
>> ---
>>  wui/src/db/migrate/001_create_pools.rb           |    3 +-
>>  wui/src/db/migrate/002_create_hosts.rb           |   21 ++++++------
>>  wui/src/db/migrate/003_create_nics.rb            |   15 +++++----
>>  wui/src/db/migrate/004_create_storage_volumes.rb |   28 +++++++++--------
>>  wui/src/db/migrate/005_create_quotas.rb          |   15 +++++----
>>  wui/src/db/migrate/006_create_vms.rb             |   37 ++++++++++++----------
>>  wui/src/db/migrate/007_create_tasks.rb           |   30 ++++++++++--------
>>  wui/src/db/migrate/008_create_permissions.rb     |    7 ++--
>>  8 files changed, 85 insertions(+), 71 deletions(-)
>>
>> diff --git a/wui/src/db/migrate/001_create_pools.rb b/wui/src/db/migrate/001_create_pools.rb
>> index 2348013..34c01d3 100644
>> --- a/wui/src/db/migrate/001_create_pools.rb
>> +++ b/wui/src/db/migrate/001_create_pools.rb
>> @@ -1,4 +1,4 @@
>> -#
>> +#
>>  # Copyright (C) 2008 Red Hat, Inc.
>>  # Written by Scott Seago <sseago at redhat.com>
>>  #
>> @@ -25,6 +25,7 @@ class CreatePools < ActiveRecord::Migration
>>        t.integer :parent_id
>>        t.integer :lft
>>        t.integer :rgt
>> +      t.integer :lock_version, :default => 0
>>        t.timestamps
>>      end
>>
>> diff --git a/wui/src/db/migrate/002_create_hosts.rb b/wui/src/db/migrate/002_create_hosts.rb
>> index 62d9edd..e8b26f2 100644
>> --- a/wui/src/db/migrate/002_create_hosts.rb
>> +++ b/wui/src/db/migrate/002_create_hosts.rb
>> @@ -1,4 +1,4 @@
>> -#
>> +#
>>  # Copyright (C) 2008 Red Hat, Inc.
>>  # Written by Scott Seago <sseago at redhat.com>
>>  #
>> @@ -20,15 +20,16 @@
>>  class CreateHosts < ActiveRecord::Migration
>>    def self.up
>>      create_table :hosts do |t|
>> -      t.column :uuid,                       :string
>> -      t.column :hypervisor_type,            :string
>> -      t.column :hostname,                   :string
>> -      t.column :num_cpus,                   :integer
>> -      t.column :cpu_speed,                  :integer
>> -      t.column :arch,                       :string
>> -      t.column :memory,                     :integer
>> -      t.column :is_disabled,                :integer
>> -      t.column :hardware_pool_id,           :integer, :null => false
>> +      t.string  :uuid
>> +      t.string  :hypervisor_type
>> +      t.string  :hostname
>> +      t.integer :num_cpus
>> +      t.integer :cpu_speed
>> +      t.string  :arch
>> +      t.integer :memory
>> +      t.integer :is_disabled
>> +      t.integer :hardware_pool_id, :null => false
>> +      t.integer :lock_version,     :default => 0
>>      end
>
> What's the reason for this change? Just tidying, or is there some
> advantage to using e.g. "t.string" rather than "t.column :foo
> :string"?
>
> [snip]
>
>> diff --git a/wui/src/db/migrate/008_create_permissions.rb b/wui/src/db/migrate/008_create_permissions.rb
>> index 0cc361c..69a0aa7 100644
>> --- a/wui/src/db/migrate/008_create_permissions.rb
>> +++ b/wui/src/db/migrate/008_create_permissions.rb
>> @@ -1,4 +1,4 @@
>> -#
>> +#
>>  # Copyright (C) 2008 Red Hat, Inc.
>>  # Written by Scott Seago <sseago at redhat.com>
>>  #
>> @@ -20,9 +20,10 @@
>>  class CreatePermissions < ActiveRecord::Migration
>>    def self.up
>>      create_table :permissions do |t|
>> -      t.string :user_role
>> -      t.string :user
>> +      t.string  :user_role
>> +      t.string  :user
>>        t.integer :pool_id
>> +      t.integer :lock_version, :default => 0
>>      end
>>    end
>>
>
> Other than that, looks good... I will ACK, but Scott can you take a
> look before I commit?
>
> Thanks,
> --Hugh
>

This is the latest-and-greatest Rails way of doing migrations. It's a
bit less cluttered, and it makes things like "t.timestamps" less
jarring, I guess. I think "t.timestamps" is new along with this way of
coding these files.

The newer migration files are in this style, and we decided to
"upgrade" the older files when/if they required edits (like now).

Thanks
Steve




More information about the ovirt-devel mailing list