Skip to content

Commit c058e1b

Browse files
committed
internal/postgres: add retraction/deprecation info to GetUnitMeta
For golang/go#43265 For golang/go#41321 Change-Id: I8dc86d87882b96d3c3ffe7c1d035937f210b9a91 Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/296229 Trust: Jonathan Amsterdam <[email protected]> Run-TryBot: Jonathan Amsterdam <[email protected]> TryBot-Result: kokoro <[email protected]> Reviewed-by: Julie Qiu <[email protected]>
1 parent 25c6b92 commit c058e1b

File tree

4 files changed

+41
-21
lines changed

4 files changed

+41
-21
lines changed

internal/postgres/details.go

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,9 @@ import (
1212
"fmt"
1313
"reflect"
1414
"regexp"
15-
"time"
1615

1716
"golang.org/x/pkgsite/internal"
1817
"golang.org/x/pkgsite/internal/derrors"
19-
"golang.org/x/pkgsite/internal/experiment"
20-
"golang.org/x/pkgsite/internal/log"
2118
"golang.org/x/pkgsite/internal/middleware"
2219
)
2320

@@ -67,7 +64,7 @@ func (db *DB) GetNestedModules(ctx context.Context, modulePath string) (_ []*int
6764
return nil, err
6865
}
6966

70-
if err := populateRawLatestInfo(ctx, db, modules); err != nil {
67+
if err := populateRawLatestInfos(ctx, db, modules); err != nil {
7168
return nil, err
7269
}
7370

@@ -171,17 +168,8 @@ func (db *DB) GetModuleInfo(ctx context.Context, modulePath, resolvedVersion str
171168
return nil, fmt.Errorf("row.Scan(): %v", err)
172169
}
173170

174-
if experiment.IsActive(ctx, internal.ExperimentRetractions) {
175-
// Get information about retractions an deprecations, and apply it.
176-
start := time.Now()
177-
info, err := db.GetRawLatestInfo(ctx, modulePath)
178-
if err != nil {
179-
return nil, err
180-
}
181-
if info != nil {
182-
info.PopulateModuleInfo(mi)
183-
}
184-
log.Debugf(ctx, "raw latest info fetched and applied in %dms", time.Since(start).Milliseconds())
171+
if err := populateRawLatestInfo(ctx, db, mi); err != nil {
172+
return nil, err
185173
}
186174
return mi, nil
187175
}

internal/postgres/unit.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,9 @@ func (db *DB) GetUnitMeta(ctx context.Context, fullPath, requestedModulePath, re
7171
}
7272

7373
um.Licenses = lics
74+
if err := populateRawLatestInfo(ctx, db, &um.ModuleInfo); err != nil {
75+
return nil, err
76+
}
7477
return &um, nil
7578
default:
7679
return nil, err

internal/postgres/unit_test.go

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ func TestGetUnitMeta(t *testing.T) {
2727
defer release()
2828
ctx, cancel := context.WithTimeout(context.Background(), testTimeout)
2929
defer cancel()
30+
ctx = experiment.NewContext(ctx, internal.ExperimentRetractions)
3031

3132
for _, testModule := range []struct {
3233
module, version, packageSuffix string
@@ -59,6 +60,8 @@ func TestGetUnitMeta(t *testing.T) {
5960
}
6061
}
6162

63+
addRawLatest(ctx, t, testDB, "m.com", "v.1.1.0", "module m.com\nretract v1.0.1 // bad")
64+
6265
type teststruct struct {
6366
name string
6467
path, module, version string
@@ -136,7 +139,12 @@ func TestGetUnitMeta(t *testing.T) {
136139
{
137140
name: "directory",
138141
path: "m.com/dir",
139-
want: wantUnitMeta("m.com", "v1.0.1", ""),
142+
want: func() *internal.UnitMeta {
143+
um := wantUnitMeta("m.com", "v1.0.1", "")
144+
um.Retracted = true
145+
um.RetractionRationale = "bad"
146+
return um
147+
}(),
140148
},
141149
{
142150
name: "module at master version",
@@ -174,14 +182,17 @@ func TestGetUnitMeta(t *testing.T) {
174182
if test.version == "" {
175183
test.version = internal.LatestVersion
176184
}
177-
test.want = sample.UnitMeta(
185+
want := sample.UnitMeta(
178186
test.path,
179187
test.want.ModulePath,
180188
test.want.Version,
181189
test.want.Name,
182190
test.want.IsRedistributable,
183191
)
184-
test.want.CommitTime = sample.CommitTime
192+
want.CommitTime = sample.CommitTime
193+
want.Retracted = test.want.Retracted
194+
want.RetractionRationale = test.want.RetractionRationale
195+
test.want = want
185196
checkUnitMeta(ctx, test)
186197
})
187198
}

internal/postgres/version.go

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ func getPathVersions(ctx context.Context, db *DB, path string, versionTypes ...v
9393
if err := db.db.RunQuery(ctx, query, collect, path); err != nil {
9494
return nil, err
9595
}
96-
if err := populateRawLatestInfo(ctx, db, versions); err != nil {
96+
if err := populateRawLatestInfos(ctx, db, versions); err != nil {
9797
return nil, err
9898
}
9999
return versions, nil
@@ -109,8 +109,26 @@ func versionTypeExpr(vts []version.Type) string {
109109
return strings.Join(vs, ", ")
110110
}
111111

112-
func populateRawLatestInfo(ctx context.Context, db *DB, mis []*internal.ModuleInfo) (err error) {
113-
defer derrors.WrapStack(&err, "populateRawLatestInfo(%d ModuleInfos)", len(mis))
112+
func populateRawLatestInfo(ctx context.Context, db *DB, mi *internal.ModuleInfo) (err error) {
113+
defer derrors.WrapStack(&err, "populateRawLatestInfo(%q)", mi.ModulePath)
114+
115+
if experiment.IsActive(ctx, internal.ExperimentRetractions) {
116+
// Get information about retractions an deprecations, and apply it.
117+
start := time.Now()
118+
info, err := db.GetRawLatestInfo(ctx, mi.ModulePath)
119+
if err != nil {
120+
return err
121+
}
122+
if info != nil {
123+
info.PopulateModuleInfo(mi)
124+
}
125+
log.Debugf(ctx, "raw latest info fetched and applied in %dms", time.Since(start).Milliseconds())
126+
}
127+
return nil
128+
}
129+
130+
func populateRawLatestInfos(ctx context.Context, db *DB, mis []*internal.ModuleInfo) (err error) {
131+
defer derrors.WrapStack(&err, "populateRawLatestInfos(%d ModuleInfos)", len(mis))
114132

115133
if experiment.IsActive(ctx, internal.ExperimentRetractions) {
116134
start := time.Now()

0 commit comments

Comments
 (0)