Skip to content

Commit

Permalink
🐛 Only create connector once to fix ident mangling (#460)
Browse files Browse the repository at this point in the history
Creating the tracker connector inside of the loop results in Decrypt
being called on the tracker's Identity once for each ticket to be
created. Decrypt is not idempotent, so this scrambles the password on
subsequent calls. This was causing batch creation of Jira tickets to
fail strangely, as only the first ticket in any batch would be created
before the credentials were scrambled.

Fixes https://issues.redhat.com/projects/MTA/issues/MTA-696

Signed-off-by: Sam Lucidi <slucidi@redhat.com>
  • Loading branch information
mansam committed Jul 25, 2023
1 parent 7766a0c commit 89241be
Showing 1 changed file with 7 additions and 6 deletions.
13 changes: 7 additions & 6 deletions tracker/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,11 @@ func (m *Manager) createPending() {
}
for i := range list {
tracker := &list[i]
conn, err := NewConnector(tracker)
if err != nil {
Log.Error(err, "Unable to build connector for tracker.", "tracker", tracker.ID)
continue
}
for j := range tracker.Tickets {
t := &tracker.Tickets[j]
ago := t.LastUpdated.Add(IntervalCreateRetry)
Expand All @@ -167,7 +172,7 @@ func (m *Manager) createPending() {
if t.Created || (t.Error && !ago.Before(time.Now())) {
continue
}
err := m.create(tracker, t)
err = m.create(conn, t)
if err != nil {
Log.Error(err, "Failed to create ticket.", "ticket", t.ID)
}
Expand All @@ -176,11 +181,7 @@ func (m *Manager) createPending() {
}

// Create the ticket in its tracker.
func (m *Manager) create(tracker *model.Tracker, ticket *model.Ticket) (err error) {
conn, err := NewConnector(tracker)
if err != nil {
return
}
func (m *Manager) create(conn Connector, ticket *model.Ticket) (err error) {
err = conn.Create(ticket)
if err != nil {
return
Expand Down

0 comments on commit 89241be

Please sign in to comment.