anchor.diff:        'Backfilling `packageName` on like entity for user ${l.userId} and package'
         ' ${l.package}');
     try {
  -    await dbService.withTransaction((Transaction tx) async {
  -      final like = await tx.lookupValue<Like>(l.key, orElse: () => null);
  -      if (like == null) {
  +    await withRetryTransaction(dbService, (tx) async {
  +      final like = await tx.lookupOrNull<Like>(l.key);
  +      if (like == null || like.packageName != null) {
           return;
         }
  -      like.packageName ??= like.package;
  -      tx.queueMutations(inserts: [like]);
  -      await tx.commit();
  -      print('Updated packageName on like entity for user ${like.userId} and '
  +      like.packageName = like.package;
  +      tx.insert(like);
  +      print('Updating packageName on like entity for user ${like.userId} and '
             'package ${like.package}');
       });
     } catch (e) {
  -    print('Failed to update packageName on ike entity for user ${l.userId} and '
  +    print(
  +        'Failed to update packageName on like entity for user ${l.userId} and '
           'package ${l.package}, error $e');
     }
   }
  
positive.code: // Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
  // for details. All rights reserved. Use of this source code is governed by a
  // BSD-style license that can be found in the LICENSE file.
  
  import 'package:appengine/appengine.dart';
  import 'package:args/args.dart';
  
negative.code: 
      useLoggingPackageAdaptor();
      await for (Like l in dbService.query<Like>().run()) {
        final r = await pool.request();
        futures.add(() async {
          try {
            await _backfillLikes(l);
          } finally {
            r.release();
          }
        }());
      }
  
      await Future.wait(futures);
  