gerrit.series.AssembleSeries: improve logging, also log i and j

This commit is contained in:
Florian Klink 2019-12-03 23:54:41 +01:00
parent fb9e9fa724
commit ece32d3d7c

View file

@ -18,14 +18,14 @@ import (
// Concatenation moves changesets of the later changeset in the previous one // Concatenation moves changesets of the later changeset in the previous one
// in a cleanup phase, we remove orphaned series (those without any changesets inside) // in a cleanup phase, we remove orphaned series (those without any changesets inside)
// afterwards, we do an integrity check, just to be on the safe side. // afterwards, we do an integrity check, just to be on the safe side.
func AssembleSeries(changesets []*Changeset, log *log.Logger) ([]*Serie, error) { func AssembleSeries(changesets []*Changeset, logger *log.Logger) ([]*Serie, error) {
series := make([]*Serie, 0) series := make([]*Serie, 0)
mapLeafToSerie := make(map[string]*Serie, 0) mapLeafToSerie := make(map[string]*Serie, 0)
for _, changeset := range changesets { for _, changeset := range changesets {
logger := log.WithField("changeset", changeset.String()) l := logger.WithField("changeset", changeset.String())
logger.Debug("creating initial serie") l.Debug("creating initial serie")
serie := &Serie{ serie := &Serie{
ChangeSets: []*Changeset{changeset}, ChangeSets: []*Changeset{changeset},
} }
@ -34,29 +34,33 @@ func AssembleSeries(changesets []*Changeset, log *log.Logger) ([]*Serie, error)
} }
// Combine series using a fixpoint approach, with a max iteration count. // Combine series using a fixpoint approach, with a max iteration count.
log.Debug("glueing together phase") logger.Debug("glueing together phase")
for i := 1; i < 100; i++ { for i := 1; i < 100; i++ {
didUpdate := false didUpdate := false
log.Debugf("at iteration %d", i) logger.Debugf("at iteration %d", i)
for _, serie := range series { for j, serie := range series {
logger := log.WithField("serie", serie.String()) l := logger.WithFields(log.Fields{
"i": i,
"j": j,
"serie": serie.String(),
})
parentCommitIDs, err := serie.GetParentCommitIDs() parentCommitIDs, err := serie.GetParentCommitIDs()
if err != nil { if err != nil {
return series, err return series, err
} }
if len(parentCommitIDs) != 1 { if len(parentCommitIDs) != 1 {
// We can't append merge commits to other series // We can't append merge commits to other series
logger.Infof("No single parent, skipping.") l.Infof("No single parent, skipping.")
continue continue
} }
parentCommitID := parentCommitIDs[0] parentCommitID := parentCommitIDs[0]
logger.Debug("Looking for a predecessor.") l.Debug("Looking for a predecessor.")
// if there's another serie that has this parent as a leaf, glue together // if there's another serie that has this parent as a leaf, glue together
if otherSerie, ok := mapLeafToSerie[parentCommitID]; ok { if otherSerie, ok := mapLeafToSerie[parentCommitID]; ok {
if otherSerie == serie { if otherSerie == serie {
continue continue
} }
logger := logger.WithField("otherSerie", otherSerie) l = l.WithField("otherSerie", otherSerie)
myLeafCommitID, err := serie.GetLeafCommitID() myLeafCommitID, err := serie.GetLeafCommitID()
if err != nil { if err != nil {
@ -64,7 +68,7 @@ func AssembleSeries(changesets []*Changeset, log *log.Logger) ([]*Serie, error)
} }
// append our changesets to the other serie // append our changesets to the other serie
logger.Debug("Splicing together.") l.Debug("Splicing together.")
otherSerie.ChangeSets = append(otherSerie.ChangeSets, serie.ChangeSets...) otherSerie.ChangeSets = append(otherSerie.ChangeSets, serie.ChangeSets...)
delete(mapLeafToSerie, parentCommitID) delete(mapLeafToSerie, parentCommitID)
@ -77,23 +81,23 @@ func AssembleSeries(changesets []*Changeset, log *log.Logger) ([]*Serie, error)
didUpdate = true didUpdate = true
} else { } else {
logger.Debug("Not found.") l.Debug("Not found.")
} }
} }
series = removeOrphanedSeries(series) series = removeOrphanedSeries(series)
if !didUpdate { if !didUpdate {
log.Infof("converged after %d iterations", i) logger.Infof("converged after %d iterations", i)
break break
} }
} }
// Check integrity, just to be on the safe side. // Check integrity, just to be on the safe side.
for _, serie := range series { for _, serie := range series {
logger := log.WithField("serie", serie.String()) l := logger.WithField("serie", serie.String())
logger.Debugf("checking integrity") l.Debugf("checking integrity")
err := serie.CheckIntegrity() err := serie.CheckIntegrity()
if err != nil { if err != nil {
logger.Errorf("checking integrity failed: %s", err) l.Errorf("checking integrity failed: %s", err)
} }
} }
return series, nil return series, nil