Skip to content

Commit 34534d8

Browse files
authored
Clear required flag for isBlocked fields + remove some fields. (#8434)
1 parent 9592cc1 commit 34534d8

File tree

6 files changed

+15
-64
lines changed

6 files changed

+15
-64
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ Important changes to data models, configuration, and migrations between each
22
AppEngine version, listed here to ease deployment and troubleshooting.
33

44
## Next Release (replace with git tag when deployed)
5+
* Note: removed required flag from `isBlocked` fields.
6+
* Note: started deleting `Package.blocked` and `Package.blockedReason`.
57

68
## `20241217t132200-all`
79
* Bump runtimeVersion to `2024.12.17`.

app/lib/account/models.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,9 @@ class User extends db.ExpandoModel<String> {
5252
/// [isBlocked] is set when a user account is blocked (is on administrative hold).
5353
/// When this happens user-data is preserved, but the user should not be able
5454
/// to perform any action.
55-
@db.BoolProperty(required: true)
55+
///
56+
/// TODO: remove after runtime version `2024.12.17` is no longer running.
57+
@db.BoolProperty(required: false)
5658
bool isBlocked = false;
5759

5860
/// `true` if user was moderated (pending moderation or deletion).

app/lib/package/models.dart

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -126,17 +126,11 @@ class Package extends db.ExpandoModel<String> {
126126

127127
/// Set to `true` if package should not be displayed anywhere, because of
128128
/// pending moderation or deletion.
129-
@db.BoolProperty(required: true)
129+
///
130+
/// TODO: remove after runtime version `2024.12.17` is no longer running.
131+
@db.BoolProperty(required: false)
130132
bool isBlocked = false;
131133

132-
/// The reason why the package was blocked.
133-
@db.StringProperty(indexed: false)
134-
String? blockedReason;
135-
136-
/// The timestamp when the package was blocked.
137-
@db.DateTimeProperty()
138-
DateTime? blocked;
139-
140134
/// `true` if package was moderated (pending moderation or deletion).
141135
@db.BoolProperty(required: true)
142136
bool isModerated = false;

app/lib/publisher/models.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,9 @@ class Publisher extends db.ExpandoModel<String> {
6161
/// membership information, or invite new members.
6262
/// - Administrator roles of the publisher must not be able to publisher a new version
6363
/// for packages of the publisher, or change any of the existing package's properties.
64-
@db.BoolProperty(required: true)
64+
///
65+
/// TODO: remove after runtime version `2024.12.17` is no longer running.
66+
@db.BoolProperty(required: false)
6567
bool isBlocked = false;
6668

6769
/// `true` if publisher was moderated (pending moderation or deletion).

app/lib/tool/backfill/backfill_new_fields.dart

Lines changed: 4 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ import 'package:clock/clock.dart';
66
import 'package:logging/logging.dart';
77
import 'package:meta/meta.dart';
88
import 'package:pub_dev/account/models.dart';
9-
import 'package:pub_dev/package/api_export/api_exporter.dart';
10-
import 'package:pub_dev/package/backend.dart';
119
import 'package:pub_dev/package/models.dart';
1210
import 'package:pub_dev/publisher/models.dart';
1311
import 'package:pub_dev/shared/datastore.dart';
@@ -28,34 +26,6 @@ Future<void> backfillNewFields() async {
2826
@visibleForTesting
2927
Future<void> migrateIsBlocked() async {
3028
_logger.info('Migrating isBlocked...');
31-
final pkgQuery = dbService.query<Package>()..filter('isBlocked =', true);
32-
await for (final entity in pkgQuery.run()) {
33-
await withRetryTransaction(dbService, (tx) async {
34-
final pkg = await tx.lookupValue<Package>(entity.key);
35-
// sanity check
36-
if (!pkg.isBlocked) {
37-
return;
38-
}
39-
pkg
40-
..isModerated = true
41-
..moderatedAt = pkg.moderatedAt ?? pkg.blocked ?? clock.now()
42-
..isBlocked = false
43-
..blocked = null
44-
..blockedReason = null;
45-
tx.insert(pkg);
46-
});
47-
48-
// sync exported API(s)
49-
await apiExporter?.synchronizePackage(entity.name!, forceDelete: true);
50-
51-
// retract or re-populate public archive files
52-
await packageBackend.tarballStorage.updatePublicArchiveBucket(
53-
package: entity.name!,
54-
ageCheckThreshold: Duration.zero,
55-
deleteIfOlder: Duration.zero,
56-
);
57-
}
58-
5929
final publisherQuery = dbService.query<Publisher>()
6030
..filter('isBlocked =', true);
6131
await for (final entity in publisherQuery.run()) {
@@ -95,12 +65,12 @@ Future<void> migrateIsBlocked() async {
9565
Future<void> _removeKnownUnmappedFields() async {
9666
await for (final p in dbService.query<Package>().run()) {
9767
if (p.additionalProperties.isEmpty) continue;
98-
if (p.additionalProperties.containsKey('isWithheld') ||
99-
p.additionalProperties.containsKey('withheldReason')) {
68+
if (p.additionalProperties.containsKey('blocked') ||
69+
p.additionalProperties.containsKey('blockedReason')) {
10070
await withRetryTransaction(dbService, (tx) async {
10171
final pkg = await tx.lookupValue<Package>(p.key);
102-
pkg.additionalProperties.remove('isWithheld');
103-
pkg.additionalProperties.remove('withheldReason');
72+
pkg.additionalProperties.remove('blocked');
73+
pkg.additionalProperties.remove('blockedReason');
10474
tx.insert(pkg);
10575
});
10676
}

app/test/tool/maintenance/migrate_isblocked_test.dart

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
import 'package:clock/clock.dart';
65
import 'package:pub_dev/account/backend.dart';
76
import 'package:pub_dev/package/backend.dart';
87
import 'package:pub_dev/publisher/backend.dart';
@@ -14,24 +13,6 @@ import '../../shared/test_services.dart';
1413

1514
void main() {
1615
group('Migrate isBlocked', () {
17-
testWithProfile('package', expectedLogMessages: [
18-
'SHOUT Deleting object from public bucket: "packages/oxygen-1.0.0.tar.gz".',
19-
'SHOUT Deleting object from public bucket: "packages/oxygen-1.2.0.tar.gz".',
20-
'SHOUT Deleting object from public bucket: "packages/oxygen-2.0.0-dev.tar.gz".',
21-
], fn: () async {
22-
final p1 = await packageBackend.lookupPackage('oxygen');
23-
await dbService.commit(inserts: [
24-
p1!
25-
..isBlocked = true
26-
..blocked = clock.now()
27-
..blockedReason = 'abc'
28-
]);
29-
await migrateIsBlocked();
30-
31-
final p2 = await packageBackend.lookupPackage('oxygen');
32-
expect(p2!.isModerated, true);
33-
});
34-
3516
testWithProfile('publisher', fn: () async {
3617
final p1 = await publisherBackend.getPublisher('example.com');
3718
await dbService.commit(inserts: [p1!..isBlocked = true]);

0 commit comments

Comments
 (0)