Skip to content

Commit

Permalink
Fix Saves with transactionnal StopAres in StopVisitUpdateManager
Browse files Browse the repository at this point in the history
  • Loading branch information
Edouard Maffert committed May 30, 2018
1 parent 0ca1121 commit 8535f1a
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 14 deletions.
1 change: 1 addition & 0 deletions features/step_definitions/stop_visits.rb
Expand Up @@ -31,6 +31,7 @@ def stop_visit_path(id, attributes = {})
end

Then(/^one StopVisit has the following attributes:$/) do |attributes|
# puts RestClient.get stop_visits_path, {content_type: :json, :Authorization => "Token token=#{$token}"}
response = RestClient.get stop_visits_path, {content_type: :json, :Authorization => "Token token=#{$token}"}
response_array = JSON.parse(response.body)

Expand Down
32 changes: 18 additions & 14 deletions model/stop_visit_update_manager.go
Expand Up @@ -26,15 +26,13 @@ func newStopAreaUpdateManager(transactionProvider TransactionProvider) *StopArea
}

func (manager *StopAreaUpdateManager) UpdateStopArea(event *StopAreaUpdateEvent) {
tx := manager.transactionProvider.NewTransaction()
defer tx.Close()

if event.StopAreaMonitoredEvent != nil {
manager.UpdateMonitoredStopArea(event, tx)
tx.Commit()
manager.UpdateMonitoredStopArea(event)
return
}

tx := manager.transactionProvider.NewTransaction()

stopArea, found := tx.Model().StopAreas().Find(event.StopAreaId)
if !found {
logger.Log.Debugf("StopAreaUpdateEvent for unknown StopArea %v", event.StopAreaId)
Expand All @@ -48,23 +46,23 @@ func (manager *StopAreaUpdateManager) UpdateStopArea(event *StopAreaUpdateEvent)
stopArea.CollectedAlways = event.StopAreaAttributes.CollectedAlways
stopArea.CollectGeneralMessages = true
stopArea.Monitored = true
stopArea.Save()
stopArea.id = StopAreaId(manager.NewUUID())

event.StopAreaId = stopArea.Id()
event.StopAreaId = stopArea.id
}

logger.Log.Debugf("Update StopArea %v", stopArea.Id())
stopArea.Updated(manager.Clock().Now())
stopArea.Save()
tx.Model().StopAreas().Save(&stopArea)
tx.Commit()
tx.Close()

if event.Origin != "" {
status, ok := stopArea.Origins.Origin(event.Origin)
if !status || !ok {
manager.UpdateMonitoredStopArea(NewStopAreaMonitoredEvent(manager.NewUUID(), event.StopAreaId, event.Origin, true), tx)
manager.UpdateMonitoredStopArea(NewStopAreaMonitoredEvent(manager.NewUUID(), event.StopAreaId, event.Origin, true))
}
}

tx.Commit()

for _, stopVisitUpdateEvent := range event.StopVisitUpdateEvents {
manager.UpdateStopVisit(stopVisitUpdateEvent)
}
Expand All @@ -73,17 +71,22 @@ func (manager *StopAreaUpdateManager) UpdateStopArea(event *StopAreaUpdateEvent)
}
}

func (manager *StopAreaUpdateManager) UpdateMonitoredStopArea(event *StopAreaUpdateEvent, tx *Transaction) {
func (manager *StopAreaUpdateManager) UpdateMonitoredStopArea(event *StopAreaUpdateEvent) {
// Should never happen, but don't want to ever have a go nil pointer exception
if event.StopAreaMonitoredEvent == nil {
return
}

tx := manager.transactionProvider.NewTransaction()

for _, stopArea := range tx.Model().StopAreas().FindAscendants(event.StopAreaId) {
stopArea.Origins.SetPartnerStatus(event.StopAreaMonitoredEvent.Partner, event.StopAreaMonitoredEvent.Status)
stopArea.Monitored = stopArea.Origins.Monitored()
stopArea.Save()
tx.Model().StopAreas().Save(&stopArea)
}

tx.Commit()
tx.Close()
}

func (manager *StopAreaUpdateManager) UpdateStopVisit(event *StopVisitUpdateEvent) {
Expand Down Expand Up @@ -123,6 +126,7 @@ func NewStopVisitUpdater(tx *Transaction, event *StopVisitUpdateEvent) *StopVisi
func (updater *StopVisitUpdater) Update() {
stopArea, ok := updater.tx.Model().StopAreas().FindByObjectId(updater.event.StopAreaObjectId)
if !ok { // Should never happen
logger.Log.Debugf("can't find SA: %v", updater.event.StopAreaObjectId)
return
}

Expand Down

0 comments on commit 8535f1a

Please sign in to comment.