[wallaby/f17] updated to wallaby-0.15.1-3

William Christian Benton willb at fedoraproject.org
Fri Jun 29 20:14:15 UTC 2012


commit b85fb3a7ce4654b89c5dcf42d374064139b244f4
Author: Will Benton <willb at redhat.com>
Date:   Fri Jun 29 15:13:58 2012 -0500

    updated to wallaby-0.15.1-3

 .gitignore                                         |    1 +
 0001-Fixes-to-skeleton-group-support.patch         |   74 ++++++++++
 ...mands-will-blank-a-field-if-no-list-is-pr.patch |  149 --------------------
 0002-Added-command-to-remove-a-snapshot.patch      |   46 ------
 0002-updated-spec-for-0.15.1-2.patch               |   26 ++++
 0003-More-resilient-activation-on-F17.patch        |   42 ++++++
 ...logging-and-failsafe-in-Parameter-default.patch |   35 -----
 ...ustChangeParams-to-Store-in-config-client.patch |   27 ----
 ...ious-configuration-removal-off-by-default.patch |   32 ++++
 ...sue-blanking-non-param-type-relationships.patch |   25 ----
 ...d-spec-again-in-advance-of-0.15.1-2-build.patch |   25 ++++
 ...test-case-duplicating-Matt-s-failure-case.patch |   66 +++++++++
 ...-Added-more-assertions-to-prior-test-case.patch |   74 ++++++++++
 ...for-artifacts-of-type-sniffing-errors-in-.patch |   44 ++++++
 ...ed-unused-versioned-config-implementation.patch |   73 ++++++++++
 ...Removed-oldstyle-versioned-configurations.patch |  111 +++++++++++++++
 0011-spec-file-for-v0.15.1-3.patch                 |   26 ++++
 sources                                            |    2 +-
 wallaby.spec                                       |   74 +++++++++--
 19 files changed, 659 insertions(+), 293 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 7ce12ca..e435748 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
 /wallaby-0.12.4.tar.gz
 /wallaby-0.13.0.tar.gz
 /wallaby-0.13.1.tar.gz
+/wallaby-0.15.1.tar.gz
diff --git a/0001-Fixes-to-skeleton-group-support.patch b/0001-Fixes-to-skeleton-group-support.patch
new file mode 100644
index 0000000..6f281f0
--- /dev/null
+++ b/0001-Fixes-to-skeleton-group-support.patch
@@ -0,0 +1,74 @@
+From 2c584644a5fc8e0dd0b1bc0e3919c27a112fd9ff Mon Sep 17 00:00:00 2001
+From: Will Benton <willb at redhat.com>
+Date: Thu, 21 Jun 2012 16:18:07 -0500
+Subject: [PATCH 01/11] Fixes to skeleton group support.
+
+In older versions of Wallaby, the default group configuration
+could take precedence over the skeleton group configuration
+for walk-in nodes.  This commit fixes that behavior and adds
+regression tests to identify it in the future.
+---
+ lib/mrg/grid/config/Configuration.rb |    4 ++--
+ spec/skeleton_group_spec.rb          |   17 ++++++++++++++++-
+ 2 files changed, 18 insertions(+), 3 deletions(-)
+
+diff --git a/lib/mrg/grid/config/Configuration.rb b/lib/mrg/grid/config/Configuration.rb
+index 4adc725..36629e7 100644
+--- a/lib/mrg/grid/config/Configuration.rb
++++ b/lib/mrg/grid/config/Configuration.rb
+@@ -425,7 +425,7 @@ module Mrg
+ 
+               return 0 if version == 0
+ 
+-              groups = Store::ENABLE_SKELETON_GROUP ? [skel, default] : [default]
++              groups = Store::ENABLE_SKELETON_GROUP ? [default, skel] : [default]
+               toc, = VersionedNodeConfig.find_freshest(:select_by=>{:node=>VersionedNode[to]}, :group_by=>[:node], :version=>ver)
+               
+               unless toc
+@@ -448,7 +448,7 @@ module Mrg
+           
+            def internal_set_node_config(node, config)
+              node_obj = VersionedNode[node]
+-             vnc = VersionedNodeConfig.create(:version=>self, :node=>node_obj, :config=>config)
++             vnc = VersionedNodeConfig.create(:version=>self, :node=>node_obj, :config=>config) 
+              # vnc.send(:update, :created, self.version)
+            end
+           end
+diff --git a/spec/skeleton_group_spec.rb b/spec/skeleton_group_spec.rb
+index b423bcd..838b9a5 100644
+--- a/spec/skeleton_group_spec.rb
++++ b/spec/skeleton_group_spec.rb
+@@ -27,7 +27,7 @@ module Mrg
+           end
+ 
+           ["when another node exists at activation", "when no other nodes exist at activation"].each do |dowhen|
+-            it "should give new #{kind} nodes the last-activated configuration for the skeleton group #{dowhen}" do
++            it "should give new #{kind} nodes the last-activated configuration for the skeleton group #{dowhen} and there is no default group" do
+               @store.addParam("FOO")
+               n_expected = @store.addNode("blah") if dowhen == "when another node exists at activation"
+               g = @store.getGroupByName(Group::SKELETON_GROUP_NAME)
+@@ -38,6 +38,21 @@ module Mrg
+               n = @store.send(msg, "fake")
+               n.getConfig("version"=>::Rhubarb::Util::timestamp)["FOO"].should == "BAR"
+             end
++
++            it "should give new #{kind} nodes the last-activated configuration for the skeleton group #{dowhen} and there is a default group" do
++              @store.addParam("FOO")
++              @store.getDefaultGroup.modifyParams("REPLACE", {"FOO"=>"ARGH"}, {})
++              @store.activateConfiguration
++              n_expected = @store.addNode("blah") if dowhen == "when another node exists at activation"
++              g = @store.getGroupByName(Group::SKELETON_GROUP_NAME)
++              g.modifyParams("REPLACE", {"FOO"=>"BAR"})
++              @store.activateConfiguration
++              g.modifyParams("REPLACE", {"FOO"=>"BLAH"})
++              
++              n = @store.send(msg, "fake")
++
++              n.getConfig("version"=>::Rhubarb::Util::timestamp)["FOO"].should == "BAR"
++            end
+           end
+         end
+ 
+-- 
+1.7.7.6
+
diff --git a/0002-updated-spec-for-0.15.1-2.patch b/0002-updated-spec-for-0.15.1-2.patch
new file mode 100644
index 0000000..538f602
--- /dev/null
+++ b/0002-updated-spec-for-0.15.1-2.patch
@@ -0,0 +1,26 @@
+From a263c2f088be209adfca853d856667aa7c637ab7 Mon Sep 17 00:00:00 2001
+From: Will Benton <willb at redhat.com>
+Date: Thu, 21 Jun 2012 16:20:08 -0500
+Subject: [PATCH 02/11] updated spec for 0.15.1-2
+
+---
+ wallaby.spec.in |    3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+diff --git a/wallaby.spec.in b/wallaby.spec.in
+index 8358ead..5683094 100644
+--- a/wallaby.spec.in
++++ b/wallaby.spec.in
+@@ -292,6 +292,9 @@ fi
+ 
+ %changelog
+ 
++* Thu Jun 21 2012 willb <willb at redhat> - 0.15.1-2
++- fixes to skeleton group support for walk-in nodes
++
+ * Wed Jun 20 2012 willb <willb at redhat> - 0.15.1-1
+ - fixes bz 834141
+ - packaging improvements
+-- 
+1.7.7.6
+
diff --git a/0003-More-resilient-activation-on-F17.patch b/0003-More-resilient-activation-on-F17.patch
new file mode 100644
index 0000000..50de843
--- /dev/null
+++ b/0003-More-resilient-activation-on-F17.patch
@@ -0,0 +1,42 @@
+From 4eb89e810d9b174c1d995f070cbf947fac04bdce Mon Sep 17 00:00:00 2001
+From: Will Benton <willb at redhat.com>
+Date: Thu, 21 Jun 2012 22:51:23 -0500
+Subject: [PATCH 03/11] More resilient activation on F17.
+
+This is both a workaround for a problem with QMF on F17 (viz.,
+we can't send events) and a general improvement to configuration
+activation.  Specifically, configuration events are a performance
+optimization but are not required for correctness.  Before this
+commit, failure to send a configuration event would result in failure
+of the Store#activateConfiguration API method.  (It would also leave
+node metadata in an inconsistent state.)  Now, failure to send a
+configuration event merely results in a warning.
+---
+ lib/mrg/grid/config/Store.rb |    8 ++++++--
+ 1 files changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/lib/mrg/grid/config/Store.rb b/lib/mrg/grid/config/Store.rb
+index 279c44a..efe0296 100644
+--- a/lib/mrg/grid/config/Store.rb
++++ b/lib/mrg/grid/config/Store.rb
+@@ -718,11 +718,15 @@ module Mrg
+           unless explicit_nodelist
+             validate_and_activate(false, [Group.DEFAULT_GROUP], this_version) unless ConfigVersion.hasVersionedNodeConfig(Group::DEFAULT_GROUP_NAME, this_version)
+           end
+-          DirtyElement.delete_all
+           
+           log.debug "in validate_and_activate; just deleted dirty elements; count is #{DirtyElement.count}"
++          DirtyElement.delete_all
+           
+-          config_events_to(dirty_nodes, this_version, all_nodes) unless explicit_nodelist
++          begin
++            config_events_to(dirty_nodes, this_version, all_nodes) unless explicit_nodelist
++          rescue Exception=>ex
++            warnings << "Couldn't send configuration events:  #{ex.inspect}"
++          end
+           
+           dirty_nodes.each {|dn| dn.last_updated_version = this_version if dn.respond_to? :last_updated_version }
+           
+-- 
+1.7.7.6
+
diff --git a/0004-Spurious-configuration-removal-off-by-default.patch b/0004-Spurious-configuration-removal-off-by-default.patch
new file mode 100644
index 0000000..f96450b
--- /dev/null
+++ b/0004-Spurious-configuration-removal-off-by-default.patch
@@ -0,0 +1,32 @@
+From 82e6ef71c2fad1d448a34e9458f5d79c6b6e69c8 Mon Sep 17 00:00:00 2001
+From: Will Benton <willb at redhat.com>
+Date: Thu, 21 Jun 2012 22:55:16 -0500
+Subject: [PATCH 04/11] Spurious configuration removal off by default.
+
+The Wallaby agent no longer removes possibly-spurious versioned
+configurations on startup.  (This is a cleanup measure from a bug
+in a very old version of Wallaby; it is unlikely necessary any more.)
+To enable this behavior, set WALLABY_REMOVE_SPURIOUS_CONFIGS to yes
+or true in the environment in which wallaby-agent runs.
+---
+ bin/wallaby-agent |    4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+diff --git a/bin/wallaby-agent b/bin/wallaby-agent
+index 5bef195..f596f8b 100755
+--- a/bin/wallaby-agent
++++ b/bin/wallaby-agent
+@@ -165,7 +165,9 @@ begin
+   $wallaby_log = Mrg::Grid::Config::Store.log
+   
+   begin
+-    Mrg::Grid::Config::Store.find_by_id(0).storeinit("remove-spurious"=>"yes")
++    options = {}
++    options["remove-spurious"] = "yes" if (ENV["WALLABY_REMOVE_SPURIOUS_CONFIGS"] && ENV["WALLABY_REMOVE_SPURIOUS_CONFIGS"] =~ /^(true|yes)/i)
++    Mrg::Grid::Config::Store.find_by_id(0).storeinit(options)
+     [:default, :snapshot].each do |which|
+       Rhubarb::Persistence::dbs[which].execute("vacuum")
+     end
+-- 
+1.7.7.6
+
diff --git a/0005-updated-spec-again-in-advance-of-0.15.1-2-build.patch b/0005-updated-spec-again-in-advance-of-0.15.1-2-build.patch
new file mode 100644
index 0000000..3cdb16e
--- /dev/null
+++ b/0005-updated-spec-again-in-advance-of-0.15.1-2-build.patch
@@ -0,0 +1,25 @@
+From 109a79b246858b79344c04ee80950b4d6004d0a4 Mon Sep 17 00:00:00 2001
+From: Will Benton <willb at redhat.com>
+Date: Thu, 21 Jun 2012 23:05:01 -0500
+Subject: [PATCH 05/11] updated spec again in advance of 0.15.1-2 build
+
+---
+ wallaby.spec.in |    2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+diff --git a/wallaby.spec.in b/wallaby.spec.in
+index 5683094..61cefc8 100644
+--- a/wallaby.spec.in
++++ b/wallaby.spec.in
+@@ -294,6 +294,8 @@ fi
+ 
+ * Thu Jun 21 2012 willb <willb at redhat> - 0.15.1-2
+ - fixes to skeleton group support for walk-in nodes
++- more resilient Store#activateConfiguration in the face of event failure/workaround for QMF event problems on F17
++- wallaby-agent no longer deletes potentially-spurious configurations by default
+ 
+ * Wed Jun 20 2012 willb <willb at redhat> - 0.15.1-1
+ - fixes bz 834141
+-- 
+1.7.7.6
+
diff --git a/0006-Added-test-case-duplicating-Matt-s-failure-case.patch b/0006-Added-test-case-duplicating-Matt-s-failure-case.patch
new file mode 100644
index 0000000..d7e0098
--- /dev/null
+++ b/0006-Added-test-case-duplicating-Matt-s-failure-case.patch
@@ -0,0 +1,66 @@
+From 6b275fe08d44cd86131cfe0bcdc2c91b607c8b03 Mon Sep 17 00:00:00 2001
+From: Will Benton <willb at redhat.com>
+Date: Fri, 22 Jun 2012 19:00:58 -0500
+Subject: [PATCH 06/11] Added test case duplicating Matt's failure case.
+
+---
+ spec/skeleton_group_spec.rb |   43 ++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 42 insertions(+), 1 deletions(-)
+
+diff --git a/spec/skeleton_group_spec.rb b/spec/skeleton_group_spec.rb
+index 838b9a5..839eda6 100644
+--- a/spec/skeleton_group_spec.rb
++++ b/spec/skeleton_group_spec.rb
+@@ -63,7 +63,48 @@ module Mrg
+           n.memberships.should_not include(Group::SKELETON_GROUP_NAME)
+         end
+         
+-        
++        it "should not exhibit Matt's failure case with walkin nodes not getting the skeleton group config" do
++          default = @store.getDefaultGroup
++          skel = @store.getSkeletonGroup
++          
++          # wallaby add-features-to-group +++DEFAULT Master NodeAccess SharedPort
++          default.modifyFeatures("ADD", %w{Master NodeAccess SharedPort}, {})
++          
++          # wallaby add-params-to-group +++DEFAULT 'SHARED_PORT_ARGS=-p 9620' 'CONDOR_HOST=$(QMF_BROKER_HOST)' 'ALLOW_WRITE=*' 'ALLOW_READ=*' 'ALLOW_NEGOTIATOR=$(ALLOW_WRITE)' 'ALLOW_NEGOTIATOR_SCHEDD=$(ALLOW_WRITE)' UID_DOMAIN=central-manager
++          default.modifyParams("ADD", {'SHARED_PORT_ARGS'=>'-p 9620', 'CONDOR_HOST'=>'$(QMF_BROKER_HOST)', 'ALLOW_WRITE'=>'*', 'ALLOW_READ'=>'*', 'ALLOW_NEGOTIATOR'=>'$(ALLOW_WRITE)', 'ALLOW_NEGOTIATOR_SCHEDD'=>'$(ALLOW_WRITE)', 'UID_DOMAIN'=>'central-manager'}, {})
++          
++          # wallaby add-features-to-group +++SKEL ExecuteNode
++          skel.modifyFeatures("ADD", %w{ExecuteNode}, {})
++          
++          # wallaby add-params-to-group +++SKEL START=TRUE SUSPEND=FALSE
++          skel.modifyParams("ADD", {'START'=>'TRUE', 'SUSPEND'=>'FALSE'}, {})
++          
++          # wallaby add-node central-manager
++          cm = @store.addNode('central-manager')
++          
++          # wallaby add-param COLLECTOR_UPDATE_INTERVAL (needs to go to base DB)
++          @store.addParam('COLLECTOR_UPDATE_INTERVAL')
++          
++          # wallaby remove-nodes-from-group +++SKEL central-manager
++          cm.modifyMemberships("REPLACE", cm.memberships - %w{+++SKEL}, {})
++          
++          # wallaby add-features-to-node central-manager CentralManager Scheduler (maybe: JobServer)
++          cm.identity_group.modifyFeatures("ADD", %w{CentralManager Scheduler JobServer}, {})
++          
++          # wallaby add-params-to-node central-manager COLLECTOR_UPDATE_INTERVAL=15
++          cm.identity_group.modifyParams("ADD", {"COLLECTOR_UPDATE_INTERVAL"=>15})
++          
++          # wallaby activate
++          @store.activateConfiguration.should == [{}, []]
++          
++          # newly checked-in nodes should get skeleton group configuration
++          wi = @store.getNode("walk-in")
++          wi_config = wi.getConfig("version"=>::Rhubarb::Util::timestamp)
++          daemons = wi_config["DAEMON_LIST"].split(",").map {|s| s.strip}
++          daemons.should include("STARTD")
++          wi_config["START"].should == "TRUE"
++          wi_config["SUSPEND"].should == "FALSE"
++        end
+ 
+         it "should publish the skeleton group over the API" do
+           @store.getSkeletonGroup.name.should == Group::SKELETON_GROUP_NAME
+-- 
+1.7.7.6
+
diff --git a/0007-Added-more-assertions-to-prior-test-case.patch b/0007-Added-more-assertions-to-prior-test-case.patch
new file mode 100644
index 0000000..19bcd47
--- /dev/null
+++ b/0007-Added-more-assertions-to-prior-test-case.patch
@@ -0,0 +1,74 @@
+From 031f6d977a1b73e40bb6b583de0fa13705b40e7f Mon Sep 17 00:00:00 2001
+From: Will Benton <willb at redhat.com>
+Date: Fri, 22 Jun 2012 20:34:22 -0500
+Subject: [PATCH 07/11] Added more assertions to prior test case.
+
+---
+ spec/skeleton_group_spec.rb |   37 +++++++++++++++++++++++++++++--------
+ 1 files changed, 29 insertions(+), 8 deletions(-)
+
+diff --git a/spec/skeleton_group_spec.rb b/spec/skeleton_group_spec.rb
+index 839eda6..d6816fc 100644
+--- a/spec/skeleton_group_spec.rb
++++ b/spec/skeleton_group_spec.rb
+@@ -66,6 +66,13 @@ module Mrg
+         it "should not exhibit Matt's failure case with walkin nodes not getting the skeleton group config" do
+           default = @store.getDefaultGroup
+           skel = @store.getSkeletonGroup
++
++          # nodes checked in before the activate should get the updated skeleton group  
++          # configuration after activate
++          old_wi = @store.getNode("old-walk-in")
++
++          # wallaby load /var/lib/condor-wallaby-base-db/condor-base-db.snapshot
++          # (handled by the "before" clause above)
+           
+           # wallaby add-features-to-group +++DEFAULT Master NodeAccess SharedPort
+           default.modifyFeatures("ADD", %w{Master NodeAccess SharedPort}, {})
+@@ -89,21 +96,35 @@ module Mrg
+           cm.modifyMemberships("REPLACE", cm.memberships - %w{+++SKEL}, {})
+           
+           # wallaby add-features-to-node central-manager CentralManager Scheduler (maybe: JobServer)
+-          cm.identity_group.modifyFeatures("ADD", %w{CentralManager Scheduler JobServer}, {})
++          cm.identity_group.modifyFeatures("ADD", %w{CentralManager Scheduler}, {})
+           
+           # wallaby add-params-to-node central-manager COLLECTOR_UPDATE_INTERVAL=15
+           cm.identity_group.modifyParams("ADD", {"COLLECTOR_UPDATE_INTERVAL"=>15})
+-          
++
+           # wallaby activate
+           @store.activateConfiguration.should == [{}, []]
+           
+-          # newly checked-in nodes should get skeleton group configuration
++          # newly checked-in nodes should get the most recently activated skeleton group configuration
+           wi = @store.getNode("walk-in")
+-          wi_config = wi.getConfig("version"=>::Rhubarb::Util::timestamp)
+-          daemons = wi_config["DAEMON_LIST"].split(",").map {|s| s.strip}
+-          daemons.should include("STARTD")
+-          wi_config["START"].should == "TRUE"
+-          wi_config["SUSPEND"].should == "FALSE"
++
++          # check nodes created before and after activation
++          [old_wi, wi].each do |wi_node|
++            
++            # check activated and current configs for each
++            [wi_node.getConfig("version"=>::Rhubarb::Util::timestamp), wi_node.getConfig].each do |wi_config|
++            
++              daemons = wi_config["DAEMON_LIST"].split(",").map {|s| s.strip}
++          
++              # checks for ExecuteNode
++              daemons.should include("STARTD")
++          
++              # checks for +++SKEL param settings
++              wi_config["START"].should == "TRUE"
++              wi_config["SUSPEND"].should == "FALSE"
++            end
++          
++            wi_node.memberships.should include("+++SKEL")
++          end
+         end
+ 
+         it "should publish the skeleton group over the API" do
+-- 
+1.7.7.6
+
diff --git a/0008-Workaround-for-artifacts-of-type-sniffing-errors-in-.patch b/0008-Workaround-for-artifacts-of-type-sniffing-errors-in-.patch
new file mode 100644
index 0000000..69cce42
--- /dev/null
+++ b/0008-Workaround-for-artifacts-of-type-sniffing-errors-in-.patch
@@ -0,0 +1,44 @@
+From f3d8b317a29e0c76690e75aca9e5fadaf5ce0766 Mon Sep 17 00:00:00 2001
+From: Will Benton <willb at redhat.com>
+Date: Mon, 25 Jun 2012 17:43:00 -0500
+Subject: [PATCH 08/11] Workaround for artifacts of type-sniffing errors in
+ serialized objects.
+
+---
+ lib/mrg/grid/config/ConfigValidating.rb |    5 ++++-
+ lib/mrg/grid/config/Configuration.rb    |    3 ++-
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/lib/mrg/grid/config/ConfigValidating.rb b/lib/mrg/grid/config/ConfigValidating.rb
+index a01e097..da7f8c4 100644
+--- a/lib/mrg/grid/config/ConfigValidating.rb
++++ b/lib/mrg/grid/config/ConfigValidating.rb
+@@ -133,7 +133,10 @@ module Mrg
+               end
+ 
+               def getConfig
+-                @__my_config ||= original_object.getConfig
++                @__my_config ||= begin
++                  cnf = original_object.getConfig
++                  cnf.inject({}) {|acc,(k,v)| acc[k]=v.to_s ; acc}
++                end
+               end
+               
+               def config=(cfg)
+diff --git a/lib/mrg/grid/config/Configuration.rb b/lib/mrg/grid/config/Configuration.rb
+index 36629e7..fd82cf1 100644
+--- a/lib/mrg/grid/config/Configuration.rb
++++ b/lib/mrg/grid/config/Configuration.rb
+@@ -98,7 +98,8 @@ module Mrg
+         end
+ 
+         # applies the value supplied to the config, appending if necessary
+-        def self.apply!(config, param, value, use_ssp=false)
++        def self.apply!(config, param, supplied_value, use_ssp=false)
++          value = supplied_value.to_s
+           if (value && match = append_match(value))
+             supplied_value = value
+             value = value_string(match)
+-- 
+1.7.7.6
+
diff --git a/0009-Removed-unused-versioned-config-implementation.patch b/0009-Removed-unused-versioned-config-implementation.patch
new file mode 100644
index 0000000..ab3eb33
--- /dev/null
+++ b/0009-Removed-unused-versioned-config-implementation.patch
@@ -0,0 +1,73 @@
+From d5abc85784581603ac18239b50ee4c48ed73ea64 Mon Sep 17 00:00:00 2001
+From: Will Benton <willb at redhat.com>
+Date: Mon, 25 Jun 2012 21:31:25 -0500
+Subject: [PATCH 09/11] Removed unused versioned-config implementation.
+
+This commit removes the 'normalized' versioned-configuration
+implementation.  It was never very fast, never fully tested, and
+only ever available as an experimental alternative to the
+oldstyle serialized versioned-configuration implementation.
+---
+ lib/mrg/grid/config/Configuration.rb |   32 --------------------------------
+ lib/mrg/grid/config/dbmeta.rb        |    2 +-
+ 2 files changed, 1 insertions(+), 33 deletions(-)
+
+diff --git a/lib/mrg/grid/config/Configuration.rb b/lib/mrg/grid/config/Configuration.rb
+index fd82cf1..61f1de3 100644
+--- a/lib/mrg/grid/config/Configuration.rb
++++ b/lib/mrg/grid/config/Configuration.rb
+@@ -527,38 +527,6 @@ module Mrg
+         end
+       end
+       
+-      class VersionedParam
+-        include ::Rhubarb::Persisting
+-        
+-        declare_column :name, :text
+-        
+-        def self.[](nm)
+-          find_first_by_name(nm) || create(:name=>nm)
+-        end
+-      end
+-      
+-      # (mostly-)normalized model of versioned config
+-      class VersionedNodeParamMapping
+-        include ::Rhubarb::Persisting
+-        
+-        declare_column :version, :integer, references(ConfigVersion, :on_delete=>:cascade)
+-        declare_column :node, :integer, references(VersionedNode, :on_delete=>:cascade)
+-        declare_column :param, :integer, references(VersionedParam, :on_delete=>:cascade)
+-        declare_column :val, :text
+-
+-        declare_index_on :node
+-        declare_index_on :version
+-        
+-        alias :rhubarb_initialize :initialize
+-        
+-        def initialize(tup)
+-          rhubarb_initialize(tup)
+-          update(:created, self.version.version)
+-          self
+-        end
+-
+-      end
+-      
+       # "serialized object" model of versioned config
+       class VersionedNodeConfig
+         include ::Rhubarb::Persisting
+diff --git a/lib/mrg/grid/config/dbmeta.rb b/lib/mrg/grid/config/dbmeta.rb
+index 6e5b7eb..44cba83 100644
+--- a/lib/mrg/grid/config/dbmeta.rb
++++ b/lib/mrg/grid/config/dbmeta.rb
+@@ -18,7 +18,7 @@ module Mrg
+   module Grid
+     module Config
+       MAIN_DB_TABLES=[Mrg::Grid::Config::Feature, Mrg::Grid::Config::Group, Mrg::Grid::Config::Parameter, Mrg::Grid::Config::Subsystem, Mrg::Grid::Config::Node, Mrg::Grid::Config::ArcLabel, Mrg::Grid::Config::ParameterArc, Mrg::Grid::Config::FeatureArc, Mrg::Grid::Config::FeatureParams, Mrg::Grid::Config::NodeMembership, Mrg::Grid::Config::GroupParams, Mrg::Grid::Config::GroupFeatures, Mrg::Grid::Config::SubsystemParams, Mrg::Grid::Config::DirtyElement]
+-      SNAP_DB_TABLES=[Mrg::Grid::Config::Snapshot, Mrg::Grid::Config::ConfigVersion, Mrg::Grid::Config::VersionedNode, Mrg::Grid::Config::VersionedParam, Mrg::Grid::Config::VersionedNodeConfig, Mrg::Grid::Config::VersionedNodeParamMapping]
++      SNAP_DB_TABLES=[Mrg::Grid::Config::Snapshot, Mrg::Grid::Config::ConfigVersion, Mrg::Grid::Config::VersionedNode, Mrg::Grid::Config::VersionedNodeConfig]
+       DBVERSION = 6
+       DBMIGRATIONS = []
+ 
+-- 
+1.7.7.6
+
diff --git a/0010-Removed-oldstyle-versioned-configurations.patch b/0010-Removed-oldstyle-versioned-configurations.patch
new file mode 100644
index 0000000..7b9f3e8
--- /dev/null
+++ b/0010-Removed-oldstyle-versioned-configurations.patch
@@ -0,0 +1,111 @@
+From 99cc17647e3dea7b4475e53bdfbfe89afc8e7c9c Mon Sep 17 00:00:00 2001
+From: Will Benton <willb at redhat.com>
+Date: Mon, 25 Jun 2012 21:34:19 -0500
+Subject: [PATCH 10/11] Removed oldstyle versioned configurations.
+
+This commit removes the oldstyle versioned-configuration implementation.
+This implementation was vastly slower (~10x on our torture tests)
+than the new lightweight versioned-configuration implementation,
+as well as being much less space-efficient in a number of
+interesting use cases.  Note that Wallaby can still read oldstyle
+versioned configurations, but will not generate them any more.
+---
+ bin/wallaby-agent                    |    4 ++
+ lib/mrg/grid/config/Configuration.rb |   54 +--------------------------------
+ 2 files changed, 6 insertions(+), 52 deletions(-)
+
+diff --git a/bin/wallaby-agent b/bin/wallaby-agent
+index f596f8b..3b92679 100755
+--- a/bin/wallaby-agent
++++ b/bin/wallaby-agent
+@@ -164,6 +164,10 @@ begin
+   app.register Mrg::Grid::Config::Store,Mrg::Grid::Config::Node,Mrg::Grid::Config::ConfigVersion,Mrg::Grid::Config::Feature,Mrg::Grid::Config::Group,Mrg::Grid::Config::Parameter,Mrg::Grid::Config::Subsystem,Mrg::Grid::Config::Snapshot,Mrg::Grid::Config::NodeUpdatedNotice,Mrg::Grid::Config::ConfigVersion
+   $wallaby_log = Mrg::Grid::Config::Store.log
+   
++  if ENV['WALLABY_OLDSTYLE_VERSIONED_CONFIGS']
++    Syslog.open {|s| s.warning "You have set WALLABY_OLDSTYLE_VERSIONED_CONFIGS in your environment, but this option is no longer supported.  Old versioned configurations will continue to work, but new versioned configurations will be stored in the 'lightweight' style."}
++  end  
++
+   begin
+     options = {}
+     options["remove-spurious"] = "yes" if (ENV["WALLABY_REMOVE_SPURIOUS_CONFIGS"] && ENV["WALLABY_REMOVE_SPURIOUS_CONFIGS"] =~ /^(true|yes)/i)
+diff --git a/lib/mrg/grid/config/Configuration.rb b/lib/mrg/grid/config/Configuration.rb
+index 61f1de3..c152c63 100644
+--- a/lib/mrg/grid/config/Configuration.rb
++++ b/lib/mrg/grid/config/Configuration.rb
+@@ -297,59 +297,12 @@ module Mrg
+         include ::Rhubarb::Persisting
+         include ::SPQR::Manageable
+ 
+-        STORAGE_PLAN = ENV['WALLABY_OLDSTYLE_VERSIONED_CONFIGS'] ? :serialized : :lw_serialized
++        STORAGE_PLAN = :lw_serialized
+ 
+         def self.whatchanged(node, old_version, new_version)
+           ConfigUtils.what_params_changed(getVersionedNodeConfig(node, old_version), getVersionedNodeConfig(node, new_version))
+         end
+ 
+-        module SerializedVersionedConfigLookup
+-          module ClassMethods
+-            def getVersionedNodeConfig(node, ver=nil)
+-              ver ||= ::Rhubarb::Util::timestamp
+-              vnc = VersionedNodeConfig.find_freshest(:select_by=>{:node=>VersionedNode[node]}, :group_by=>[:node], :version=>ver)
+-              vnc.size == 0 ? {"WALLABY_CONFIG_VERSION"=>"0"} : vnc[0].config
+-            end
+-
+-            def hasVersionedNodeConfig(node, ver=nil)
+-              ver ||= ::Rhubarb::Util::timestamp
+-              vnc, = VersionedNodeConfig.find_freshest(:select_by=>{:node=>VersionedNode[node]}, :group_by=>[:node], :version=>ver)
+-              vnc && vnc.version.version
+-            end
+-            
+-            # NB: this will refuse to copy over an existing versioned config
+-            def dupVersionedNodeConfig(from, to, ver=nil)
+-              ver ||= ::Rhubarb::Util::timestamp
+-              vnc, = VersionedNodeConfig.find_freshest(:select_by=>{:node=>VersionedNode[from]}, :group_by=>[:node], :version=>ver)
+-              return 0 unless vnc
+-              toc, = VersionedNodeConfig.find_freshest(:select_by=>{:node=>VersionedNode[to]}, :group_by=>[:node], :version=>ver)
+-              toc = VersionedNodeConfig.create(:version=>vnc.version, :node=>VersionedNode[to], :config=>vnc.config.dup) unless toc
+-              toc.version.version
+-            end
+-          end
+-
+-          module InstanceMethods
+-           def internal_get_node_config(node)
+-             node_obj = VersionedNode[node]
+-             cnfo = VersionedNodeConfig.find_by(:version=>self, :node=>node_obj)
+-             result = (cnfo && cnfo.size == 1 && cnfo[0].config) || {}
+-             fixed_result = ConfigUtils.fix_config_values(result)
+-             fixed_result
+-           end
+-          
+-           def internal_set_node_config(node, config)
+-             node_obj = VersionedNode[node]
+-             vnc = VersionedNodeConfig.create(:version=>self, :node=>node_obj, :config=>config)
+-             # vnc.send(:update, :created, self.version)
+-           end
+-          end
+-
+-          def self.included(receiver)
+-            receiver.extend         ClassMethods
+-            receiver.send :include, InstanceMethods
+-          end
+-        end
+-
+         module LWSerializedVersionedConfigLookup
+           module ClassMethods
+             def getVersionedNodeConfig(node, ver=nil)
+@@ -493,10 +446,7 @@ module Mrg
+         
+         private
+         
+-        case STORAGE_PLAN
+-        when :serialized then include SerializedVersionedConfigLookup
+-        when :lw_serialized then include LWSerializedVersionedConfigLookup
+-        end
++        include LWSerializedVersionedConfigLookup
+       end
+       
+       class VersionedNode
+-- 
+1.7.7.6
+
diff --git a/0011-spec-file-for-v0.15.1-3.patch b/0011-spec-file-for-v0.15.1-3.patch
new file mode 100644
index 0000000..1320408
--- /dev/null
+++ b/0011-spec-file-for-v0.15.1-3.patch
@@ -0,0 +1,26 @@
+From 989533bc4e1bb4167dc1d663da57a73b6ae151b3 Mon Sep 17 00:00:00 2001
+From: Will Benton <willb at redhat.com>
+Date: Tue, 26 Jun 2012 23:08:25 -0500
+Subject: [PATCH 11/11] spec file for v0.15.1-3
+
+---
+ wallaby.spec.in |    3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+diff --git a/wallaby.spec.in b/wallaby.spec.in
+index 61cefc8..9d4f4b4 100644
+--- a/wallaby.spec.in
++++ b/wallaby.spec.in
+@@ -292,6 +292,9 @@ fi
+ 
+ %changelog
+ 
++* Tue Jun 26 2012 willb <willb at redhat> - 0.15.1-3
++- fixes for some stealthier serialized-configuration type-sniffing bugs and attendant nasty crashes (BZ 835713)
++
+ * Thu Jun 21 2012 willb <willb at redhat> - 0.15.1-2
+ - fixes to skeleton group support for walk-in nodes
+ - more resilient Store#activateConfiguration in the face of event failure/workaround for QMF event problems on F17
+-- 
+1.7.7.6
+
diff --git a/sources b/sources
index db464ac..311ce39 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-7e5b7133453c920d8c99944d29d1d22a  wallaby-0.13.1.tar.gz
+db77431fccc3ddc201c5186f6fd1487e  wallaby-0.15.1.tar.gz
diff --git a/wallaby.spec b/wallaby.spec
index 5e99c66..dcb4109 100644
--- a/wallaby.spec
+++ b/wallaby.spec
@@ -12,6 +12,11 @@
 %global building_for_el5 0
 %endif
 
+%if (0%{?fedora} >= 17 && 0%{?rhel} >= 6)
+%global 
+%global wallaby_uid -u 181
+%endif
+
 %if (0%{?fedora} != 0)
 %global has_sinatra 1
 %else
@@ -34,19 +39,27 @@
 %{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}
 %endif
 
+
+
 Summary: Condor pool configuration service with QMF interface
 Name: wallaby
-Version: 0.13.1
-Release: 2%{?dist}
+Version: 0.15.1
+Release: 3%{?dist}
 Group: Applications/System
 License: ASL 2.0
 URL: http://git.fedorahosted.org/git/grid/wallaby.git
 Source0: https://fedorahosted.org/releases/g/r/grid/%{name}-%{version}.tar.gz
-Patch0: 0001-replace-commands-will-blank-a-field-if-no-list-is-pr.patch
-Patch1: 0002-Added-command-to-remove-a-snapshot.patch
-Patch2: 0003-additional-logging-and-failsafe-in-Parameter-default.patch
-Patch3: 0004-Added-getMustChangeParams-to-Store-in-config-client.patch
-Patch4: 0005-Fixed-issue-blanking-non-param-type-relationships.patch
+Patch0: 0001-Fixes-to-skeleton-group-support.patch
+Patch1: 0002-updated-spec-for-0.15.1-2.patch
+Patch2: 0003-More-resilient-activation-on-F17.patch
+Patch3: 0004-Spurious-configuration-removal-off-by-default.patch
+Patch4: 0005-updated-spec-again-in-advance-of-0.15.1-2-build.patch
+Patch5: 0006-Added-test-case-duplicating-Matt-s-failure-case.patch
+Patch6: 0007-Added-more-assertions-to-prior-test-case.patch
+Patch7: 0008-Workaround-for-artifacts-of-type-sniffing-errors-in-.patch
+Patch8: 0009-Removed-unused-versioned-config-implementation.patch
+Patch9: 0010-Removed-oldstyle-versioned-configurations.patch
+Patch10: 0011-spec-file-for-v0.15.1-3.patch
 %if %{building_for_el5}
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 %endif
@@ -146,6 +159,12 @@ Wallaby.
 %patch2 -p1
 %patch3 -p1
 %patch4 -p1
+%patch5 -p1
+%patch6 -p1
+%patch7 -p1
+%patch8 -p1
+%patch9 -p1
+%patch10 -p1
 %build
 
 sed 's/^export //' < etc/sysconfig/wallaby-agent > etc/sysconfig/wallaby-agent-env
@@ -216,15 +235,14 @@ rm -rf %{buildroot}
 %{_initrddir}/wallaby
 %endif
 
-%pre
+%pre -n ruby-wallaby
 getent group wallaby >/dev/null || groupadd -r wallaby
 getent group condor >/dev/null || groupadd -r condor
 getent passwd wallaby >/dev/null || \
-  useradd -r -g condor -d %{_localstatedir}/lib/wallaby -s /sbin/nologin \
+  useradd -r %{?wallaby_uid} -g condor -d %{_localstatedir}/lib/wallaby -s /sbin/nologin \
     -c "Owner of Wallaby service" wallaby
 exit 0
 
-
 %if %{want_systemd}
 %post
 if [ $1 -eq 1 ] ; then 
@@ -294,6 +312,42 @@ fi
 
 %changelog
 
+* Tue Jun 26 2012 willb <willb at redhat> - 0.15.1-3
+- fixes for some stealthier serialized-configuration type-sniffing bugs and attendant nasty crashes (BZ 835713)
+
+* Thu Jun 21 2012 willb <willb at redhat> - 0.15.1-2
+- fixes to skeleton group support for walk-in nodes
+- more resilient Store#activateConfiguration in the face of event failure/workaround for QMF event problems on F17
+- wallaby-agent no longer deletes potentially-spurious configurations by default
+
+* Wed Jun 20 2012 willb <willb at redhat> - 0.15.1-1
+- fixes bz 834141
+- packaging improvements
+- base-db documenter improvements from upstream (internal only; not packaged)
+
+* Wed Jun 13 2012 willb <willb at redhat> - 0.15.0-1
+- sensible/unified treatment of skeleton group and default group
+
+* Thu May 31 2012 willb <willb at redhat> - 0.14.3-1
+- fixes bz 748507
+
+* Thu May 10 2012 willb <willb at redhat> - 0.14.2-2
+- fixes a trivial crashing bug that sneaked in to the prior package
+
+* Thu May 10 2012 willb <willb at redhat> - 0.14.2-1
+- packaging improvements:  ruby-wallaby now creates the wallaby user, and it does so with a proper UID on F17+ and EL6+
+- base db documentation generator (non-end-user visible)
+- shell support for inspecting node configs (non-end-user visible for now, but used by ruby implementations of ccs/ccp; BZ820419)
+
+* Thu Apr 19 2012 willb <willb at redhat> - 0.14.1-1
+- preliminary tool support for annotations
+- affectedEntities and affectedNodes methods on Store objects
+- API minor version bump; API is now 20101031.5
+
+* Mon Apr 16 2012 willb <willb at redhat> - 0.14.0-1
+- "annotation" property and "setAnnotation" method on snapshots and all configuration entities
+- API minor version bump
+
 * Mon Mar 26 2012 willb <willb at redhat> - 0.13.1-2
 - F17 fixes
 


More information about the scm-commits mailing list