Moved a bunch of time functions into UTC. Fixes bugs which we only see for 4 hours...
authorMatt Amos <zerebubuth@gmail.com>
Sun, 29 Mar 2009 01:31:04 +0000 (01:31 +0000)
committerMatt Amos <zerebubuth@gmail.com>
Sun, 29 Mar 2009 01:31:04 +0000 (01:31 +0000)
12 files changed:
app/controllers/amf_controller.rb
app/controllers/api_controller.rb
app/controllers/changeset_controller.rb
app/controllers/message_controller.rb
app/controllers/trace_controller.rb
app/models/changeset.rb
app/models/node.rb
app/models/relation.rb
app/models/user.rb
app/models/way.rb
test/functional/api_controller_test.rb
test/functional/changeset_controller_test.rb

index b4cbaeaf02c038f9ac4b162be8f5465d7625c343..e701f21702cf25a4596c8bf3216ece223d0936bb 100644 (file)
@@ -157,7 +157,7 @@ class AmfController < ApplicationController
     cs.tags = cstags
     cs.user_id = user.id
     # smsm1 doesn't like the next two lines and thinks they need to be abstracted to the model more/better
-    cs.created_at = Time.now
+    cs.created_at = Time.now.getutc
     cs.closed_at = cs.created_at + Changeset::IDLE_TIMEOUT
     cs.save_with_tags!
     return [0,cs.id]
index cae510284068a2d48f3bad0ce29b73425b008030..f0ba325682c567f400c94d6bd0d398f1f9b9f804 100644 (file)
@@ -225,7 +225,7 @@ class ApiController < ApplicationController
       endtime = Time.parse(params[:end])
     else
       hours = (params[:hours] || '1').to_i.hours
-      endtime = Time.now
+      endtime = Time.now.getutc
       starttime = endtime - hours
     end
 
index d69e7f4c1f53545aef09385bedbc5a8948c0b498..e88387a760907b2f066a9be423405b55d0a2787b 100644 (file)
@@ -461,7 +461,7 @@ private
   # if parameter 'open' is nill then open and closed changsets are returned
   def conditions_open(open)
     return open.nil? ? nil : ['closed_at >= ? and num_changes <= ?', 
-                              DateTime.now, Changeset::MAX_ELEMENTS]
+                              Time.now.getutc, Changeset::MAX_ELEMENTS]
   end
   
   ##
@@ -469,7 +469,7 @@ private
   # ('closed at' time has passed or changes limit is hit)
   def conditions_closed(closed)
     return closed.nil? ? nil : ['closed_at < ? and num_changes > ?', 
-                              DateTime.now, Changeset::MAX_ELEMENTS]
+                                Time.now.getutc, Changeset::MAX_ELEMENTS]
   end
 
   ##
index c039fe636e643c1aed4ab1f24cea7fd4978e5e16..a04aa82c0c7959e0b504d2a7f0da211a1fde99b7 100644 (file)
@@ -15,7 +15,7 @@ class MessageController < ApplicationController
       @message = Message.new(params[:message])
       @message.to_user_id = @to_user.id
       @message.from_user_id = @user.id
-      @message.sent_on = Time.now
+      @message.sent_on = Time.now.getutc
    
       if @message.save
         flash[:notice] = 'Message sent'
index 6528dffde1a862328f2a139021f0af24d373850f..c0a0b36b53274809f365638a9f4378bba2bba15c 100644 (file)
@@ -117,7 +117,7 @@ class TraceController < ApplicationController
                             :description => params[:trace][:description],
                             :public => params[:trace][:public],
                             :inserted => false, :user => @user,
-                            :timestamp => Time.now})
+                            :timestamp => Time.now.getutc})
         @trace.valid?
         @trace.errors.add(:gpx_file, "can't be blank")
       end
@@ -313,7 +313,7 @@ private
                         :description => description, :public => public})
     @trace.inserted = false
     @trace.user = @user
-    @trace.timestamp = Time.now
+    @trace.timestamp = Time.now.getutc
 
     if @trace.save
       FileUtils.mv(filename, @trace.trace_name)
index d420f537a2472d8fe0a0f0058dee62952dd8adcf..d41a8298940c5bdfd08f6632a27f12ddfa892a05 100644 (file)
@@ -42,12 +42,12 @@ class Changeset < ActiveRecord::Base
     # note that this may not be a hard limit - due to timing changes and
     # concurrency it is possible that some changesets may be slightly 
     # longer than strictly allowed or have slightly more changes in them.
-    return ((closed_at > Time.now) and (num_changes <= MAX_ELEMENTS))
+    return ((closed_at > Time.now.getutc) and (num_changes <= MAX_ELEMENTS))
   end
 
   def set_closed_time_now
     if is_open?
-      self.closed_at = Time.now
+      self.closed_at = Time.now.getutc
     end
   end
   
@@ -60,10 +60,10 @@ class Changeset < ActiveRecord::Base
 
       doc.find('//osm/changeset').each do |pt|
         if create
-          cs.created_at = Time.now
+          cs.created_at = Time.now.getutc
           # initial close time is 1h ahead, but will be increased on each
           # modification.
-          cs.closed_at = Time.now + IDLE_TIMEOUT
+          cs.closed_at = cs.created_at + IDLE_TIMEOUT
           # initially we have no changes in a changeset
           cs.num_changes = 0
         end
@@ -140,7 +140,7 @@ class Changeset < ActiveRecord::Base
   end
 
   def save_with_tags!
-    t = Time.now
+    t = Time.now.getutc
 
     # do the changeset update and the changeset tags update in the
     # same transaction to ensure consistency.
@@ -151,7 +151,7 @@ class Changeset < ActiveRecord::Base
       if (closed_at - created_at) > (MAX_TIME_OPEN - IDLE_TIMEOUT)
         self.closed_at = created_at + MAX_TIME_OPEN
       else
-        self.closed_at = Time.now + IDLE_TIMEOUT
+        self.closed_at = Time.now.getutc + IDLE_TIMEOUT
       end
       self.save!
 
index 05aae0896847509a6d92c92c8011a54fe7d95808..679048b4e3aa18dc453cde9776410b3b7ba0cb2b 100644 (file)
@@ -267,7 +267,7 @@ class Node < ActiveRecord::Base
   private
 
   def save_with_history!
-    t = Time.now
+    t = Time.now.getutc
     Node.transaction do
       self.version += 1
       self.timestamp = t
index 4b5d9e32b89ac90832e674e5434e328e1e0f92bc..a8789bc78707029a060a7db3f2de2d50cba86846 100644 (file)
@@ -51,7 +51,7 @@ class Relation < ActiveRecord::Base
     # The follow block does not need to be executed because they are dealt with 
     # in create_with_history, update_from and delete_with_history
     if create
-      relation.timestamp = Time.now
+      relation.timestamp = Time.now.getutc
       relation.visible = true
       relation.version = 0
     else
@@ -334,7 +334,7 @@ class Relation < ActiveRecord::Base
       # changed then we have to monitor their before and after state.
       tags_changed = false
 
-      t = Time.now
+      t = Time.now.getutc
       self.version += 1
       self.timestamp = t
       self.save!
index ce244fe02448bce114dbb79d25b6a009a4848f28..4113662aa411e3e5c3c60b1f809f2a0d2dc3a93d 100644 (file)
@@ -30,7 +30,7 @@ class User < ActiveRecord::Base
   file_column :image, :magick => { :geometry => "100x100>" }
 
   def after_initialize
-    self.creation_time = Time.now if self.creation_time.nil?
+    self.creation_time = Time.now.getutc if self.creation_time.nil?
   end
 
   def encrypt_password
index 94a6fa7548faf23299219d5e7f9d5aed72e82847..6e4f30d81751ef6ea01bec7de6370cd7ce95664a 100644 (file)
@@ -51,7 +51,7 @@ class Way < ActiveRecord::Base
 
     # This next section isn't required for the create, update, or delete of ways
     if create
-      way.timestamp = Time.now
+      way.timestamp = Time.now.getutc
       way.visible = true
     else
       if pt['timestamp']
@@ -296,7 +296,7 @@ class Way < ActiveRecord::Base
   private
   
   def save_with_history!
-    t = Time.now
+    t = Time.now.getutc
 
     # update the bounding box, note that this has to be done both before 
     # and after the save, so that nodes from both versions are included in the 
index a8e8087166cb3bbf975a5dffab51717ed98b8d38..32f19265a01a7fa01dcddd6b1ad2003bbc8feddb 100644 (file)
@@ -160,7 +160,7 @@ class ApiControllerTest < ActionController::TestCase
     #print @response.body
     # As we have loaded the fixtures, we can assume that there are no 
     # changes recently
-    now = Time.now
+    now = Time.now.getutc
     hourago = now - 1.hour
     # Note that this may fail on a very slow machine, so isn't a great test
     assert_select "osm[version='#{API_VERSION}'][generator='#{GENERATOR}']:root", :count => 1 do
@@ -181,7 +181,7 @@ class ApiControllerTest < ActionController::TestCase
     1.upto(16) do |zoom|
       get :changes, :zoom => zoom
       assert_response :success
-      now = Time.now
+      now = Time.now.getutc
       hourago = now - 1.hour
       # Note that this may fail on a very slow machine, so isn't a great test
       assert_select "osm[version='#{API_VERSION}'][generator='#{GENERATOR}']:root", :count => 1 do
index 7faa5602899cbb49017931d3dcc4e9600efa4f07..6465c894de77d95a09008feb53daffb3460d3133 100644 (file)
@@ -37,7 +37,7 @@ class ChangesetControllerTest < ActionController::TestCase
       assert_equal Rational(1,24), duration , "initial idle timeout should be an hour (#{cs.created_at} -> #{cs.closed_at})"
     else
       # must be number of seconds...
-      assert_equal 3600.0, duration , "initial idle timeout should be an hour (#{cs.created_at} -> #{cs.closed_at})"
+      assert_equal 3600, duration.round, "initial idle timeout should be an hour (#{cs.created_at} -> #{cs.closed_at})"
     end
   end