fix(champ): may fix pg deadlocks: autosave already saves value at the same time

This commit is contained in:
Colin Darie 2023-03-20 12:59:18 +01:00
parent 76cf93c189
commit 954652fcf5
No known key found for this signature in database
GPG key ID: 4FB865FDBCA4BCC4
3 changed files with 1 additions and 8 deletions

View file

@ -9,12 +9,11 @@ module SiretChampEtablissementFetchableConcern
return clear_etablissement!(:invalid_checksum) if invalid_because?(siret, :checksum) # i18n-tasks-use t('errors.messages.invalid_siret_checksum')
return clear_etablissement!(:not_found) unless (etablissement = APIEntrepriseService.create_etablissement(self, siret, user&.id)) # i18n-tasks-use t('errors.messages.siret_not_found')
update!(value: siret, etablissement: etablissement)
update!(etablissement: etablissement)
rescue => error
if error.try(:network_error?) && !APIEntrepriseService.api_up?
# TODO: notify ops
update!(
value: siret,
etablissement: APIEntrepriseService.create_etablissement_as_degraded_mode(self, siret, user.id)
)
@etablissement_fetch_error_key = :api_entreprise_down

View file

@ -109,7 +109,6 @@ describe Champs::SiretController, type: :controller do
it 'saves the etablissement in degraded mode and SIRET on the model' do
champ.reload
expect(champ.value).to eq(siret)
expect(champ.etablissement.siret).to eq(siret)
expect(champ.etablissement.as_degraded_mode?).to be true
end
@ -143,7 +142,6 @@ describe Champs::SiretController, type: :controller do
it 'populates the etablissement and SIRET on the model' do
champ.reload
expect(champ.value).to eq(siret)
expect(champ.etablissement.siret).to eq(siret)
expect(champ.etablissement.naf).to eq("6202A")
expect(dossier.reload.etablissement).to eq(nil)

View file

@ -68,8 +68,6 @@ RSpec.describe SiretChampEtablissementFetchableConcern do
before { expect(APIEntrepriseService).to receive(:api_up?).and_return(false) }
it { expect { fetch_etablissement! }.to change { champ.reload.value }.to(siret) }
it { expect { fetch_etablissement! }.to change { champ.reload.etablissement } }
it { expect { fetch_etablissement! }.to change { champ.reload.etablissement.as_degraded_mode? }.to(true) }
@ -96,8 +94,6 @@ RSpec.describe SiretChampEtablissementFetchableConcern do
let(:api_etablissement_status) { 200 }
let(:api_etablissement_body) { File.read('spec/fixtures/files/api_entreprise/etablissements.json') }
it { expect { fetch_etablissement! }.to change { champ.reload.value }.to(siret) }
it { expect { fetch_etablissement! }.to change { champ.reload.etablissement.siret }.to(siret) }
it { expect { fetch_etablissement! }.to change { champ.reload.etablissement.naf }.to("6202A") }