5656import com .google .common .io .BaseEncoding ;
5757import com .google .longrunning .Operation ;
5858import com .google .protobuf .InvalidProtocolBufferException ;
59- import com .google .spanner .admin .database .v1 .CopyBackupMetadata ;
6059import com .google .spanner .admin .database .v1 .CreateBackupMetadata ;
6160import com .google .spanner .admin .database .v1 .CreateDatabaseMetadata ;
6261import com .google .spanner .admin .database .v1 .OptimizeRestoredDatabaseMetadata ;
6362import com .google .spanner .admin .database .v1 .RestoreDatabaseMetadata ;
6463import com .google .spanner .admin .database .v1 .UpdateDatabaseDdlMetadata ;
6564import com .google .spanner .v1 .ExecuteSqlRequest .QueryOptions ;
66- import java .lang .Math ;
6765import java .math .BigDecimal ;
6866import java .time .Instant ;
6967import java .util .ArrayList ;
@@ -1661,18 +1659,21 @@ static void cancelCreateBackup(
16611659 // [END spanner_cancel_backup_create]
16621660
16631661 // [START spanner_list_backup_operations]
1664- static void listBackupOperations (
1665- InstanceAdminClient instanceAdminClient , DatabaseId databaseId , BackupId backupId ) {
1662+ static void listBackupOperations (InstanceAdminClient instanceAdminClient , DatabaseId databaseId ) {
16661663 Instance instance = instanceAdminClient .getInstance (databaseId .getInstanceId ().getInstance ());
16671664 // Get create backup operations for the sample database.
1665+ Timestamp last24Hours = Timestamp .ofTimeSecondsAndNanos (TimeUnit .SECONDS .convert (
1666+ TimeUnit .HOURS .convert (Timestamp .now ().getSeconds (), TimeUnit .SECONDS ) - 24 ,
1667+ TimeUnit .HOURS ), 0 );
16681668 String filter =
16691669 String .format (
1670- "(metadata.@type:type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) "
1671- + "AND (metadata.database:%s)" ,
1672- databaseId .getName ());
1673- Page <Operation > createBackupOperations = instance .listBackupOperations (Options .filter (filter ));
1674- System .out .println ("Create Backup Operations:" );
1675- for (Operation op : createBackupOperations .iterateAll ()) {
1670+ "(metadata.database:%s) AND "
1671+ + "(metadata.@type:type.googleapis.com/"
1672+ + "google.spanner.admin.database.v1.CreateBackupMetadata) AND "
1673+ + "(metadata.progress.start_time > \" %s\" )" ,
1674+ databaseId .getName (), last24Hours );
1675+ Page <Operation > operations = instance .listBackupOperations (Options .filter (filter ));
1676+ for (Operation op : operations .iterateAll ()) {
16761677 try {
16771678 CreateBackupMetadata metadata = op .getMetadata ().unpack (CreateBackupMetadata .class );
16781679 System .out .println (
@@ -1686,30 +1687,6 @@ static void listBackupOperations(
16861687 System .err .println (e .getMessage ());
16871688 }
16881689 }
1689-
1690- // Get copy backup operations for the sample database.
1691- filter =
1692- String .format (
1693- "(metadata.@type:type.googleapis.com/"
1694- + "google.spanner.admin.database.v1.CopyBackupMetadata) "
1695- + "AND (metadata.source_backup:%s)" ,
1696- backupId .getName ());
1697- Page <Operation > copyBackupOperations = instance .listBackupOperations (Options .filter (filter ));
1698- System .out .println ("Copy Backup Operations:" );
1699- for (Operation op : copyBackupOperations .iterateAll ()) {
1700- try {
1701- CopyBackupMetadata copyBackupMetadata = op .getMetadata ().unpack (CopyBackupMetadata .class );
1702- System .out .println (
1703- String .format (
1704- "Copy Backup %s on backup %s pending: %d%% complete" ,
1705- copyBackupMetadata .getName (),
1706- copyBackupMetadata .getSourceBackup (),
1707- copyBackupMetadata .getProgress ().getProgressPercent ()));
1708- } catch (InvalidProtocolBufferException e ) {
1709- // The returned operation does not contain CopyBackupMetadata.
1710- System .err .println (e .getMessage ());
1711- }
1712- }
17131690 }
17141691 // [END spanner_list_backup_operations]
17151692
@@ -1863,11 +1840,6 @@ static void updateBackup(DatabaseAdminClient dbAdminClient, BackupId backupId) {
18631840 TimeUnit .SECONDS .toMicros (backup .getExpireTime ().getSeconds ())
18641841 + TimeUnit .NANOSECONDS .toMicros (backup .getExpireTime ().getNanos ())
18651842 + TimeUnit .DAYS .toMicros (30L ));
1866- // New Expire Time must be less than Max Expire Time
1867- expireTime = expireTime .compareTo (backup .getMaxExpireTime ())<0 ?expireTime :backup .getMaxExpireTime ();
1868- int timeDiff = expireTime .compareTo (backup .getExpireTime ());
1869- Timestamp newExpireTime = (timeDiff < 0 ) ? expireTime : backup .getExpireTime ();
1870-
18711843 System .out .println (String .format (
18721844 "Updating expire time of backup [%s] to %s..." ,
18731845 backupId .toString (),
@@ -2076,7 +2048,7 @@ static void run(
20762048 BackupId .of (backup .getInstanceId (), backup .getBackup () + "_cancel" ));
20772049 break ;
20782050 case "listbackupoperations" :
2079- listBackupOperations (instanceAdminClient , database , backup );
2051+ listBackupOperations (instanceAdminClient , database );
20802052 break ;
20812053 case "listdatabaseoperations" :
20822054 listDatabaseOperations (instanceAdminClient , dbAdminClient , database .getInstanceId ());
@@ -2172,14 +2144,14 @@ static void printUsageAndExit() {
21722144 System .err .println (" SpannerExample querywithqueryoptions my-instance example-db" );
21732145 System .err .println (" SpannerExample createbackup my-instance example-db" );
21742146 System .err .println (" SpannerExample listbackups my-instance example-db" );
2175- System .err .println (" SpannerExample listbackupoperations my-instance example-db backup-id " );
2147+ System .err .println (" SpannerExample listbackupoperations my-instance example-db" );
21762148 System .err .println (" SpannerExample listdatabaseoperations my-instance example-db" );
21772149 System .err .println (" SpannerExample restorebackup my-instance example-db" );
21782150 System .exit (1 );
21792151 }
21802152
21812153 public static void main (String [] args ) throws Exception {
2182- if (args .length != 3 && args . length != 4 ) {
2154+ if (args .length != 3 ) {
21832155 printUsageAndExit ();
21842156 }
21852157 // [START init_client]
@@ -2203,9 +2175,6 @@ public static void main(String[] args) throws Exception {
22032175 String .format (
22042176 "%s_%02d" ,
22052177 db .getDatabase (), LocalDate .now ().get (ChronoField .ALIGNED_WEEK_OF_YEAR ));
2206- if ( args .length == 4 ) {
2207- backupName = args [3 ];
2208- }
22092178 BackupId backup = BackupId .of (db .getInstanceId (), backupName );
22102179
22112180 // [START init_client]
0 commit comments