56
56
import com .google .common .io .BaseEncoding ;
57
57
import com .google .longrunning .Operation ;
58
58
import com .google .protobuf .InvalidProtocolBufferException ;
59
- import com .google .spanner .admin .database .v1 .CopyBackupMetadata ;
60
59
import com .google .spanner .admin .database .v1 .CreateBackupMetadata ;
61
60
import com .google .spanner .admin .database .v1 .CreateDatabaseMetadata ;
62
61
import com .google .spanner .admin .database .v1 .OptimizeRestoredDatabaseMetadata ;
63
62
import com .google .spanner .admin .database .v1 .RestoreDatabaseMetadata ;
64
63
import com .google .spanner .admin .database .v1 .UpdateDatabaseDdlMetadata ;
65
64
import com .google .spanner .v1 .ExecuteSqlRequest .QueryOptions ;
66
- import java .lang .Math ;
67
65
import java .math .BigDecimal ;
68
66
import java .time .Instant ;
69
67
import java .util .ArrayList ;
@@ -1661,18 +1659,21 @@ static void cancelCreateBackup(
1661
1659
// [END spanner_cancel_backup_create]
1662
1660
1663
1661
// [START spanner_list_backup_operations]
1664
- static void listBackupOperations (
1665
- InstanceAdminClient instanceAdminClient , DatabaseId databaseId , BackupId backupId ) {
1662
+ static void listBackupOperations (InstanceAdminClient instanceAdminClient , DatabaseId databaseId ) {
1666
1663
Instance instance = instanceAdminClient .getInstance (databaseId .getInstanceId ().getInstance ());
1667
1664
// 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 );
1668
1668
String filter =
1669
1669
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 ()) {
1676
1677
try {
1677
1678
CreateBackupMetadata metadata = op .getMetadata ().unpack (CreateBackupMetadata .class );
1678
1679
System .out .println (
@@ -1686,30 +1687,6 @@ static void listBackupOperations(
1686
1687
System .err .println (e .getMessage ());
1687
1688
}
1688
1689
}
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
- }
1713
1690
}
1714
1691
// [END spanner_list_backup_operations]
1715
1692
@@ -1863,11 +1840,6 @@ static void updateBackup(DatabaseAdminClient dbAdminClient, BackupId backupId) {
1863
1840
TimeUnit .SECONDS .toMicros (backup .getExpireTime ().getSeconds ())
1864
1841
+ TimeUnit .NANOSECONDS .toMicros (backup .getExpireTime ().getNanos ())
1865
1842
+ 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
-
1871
1843
System .out .println (String .format (
1872
1844
"Updating expire time of backup [%s] to %s..." ,
1873
1845
backupId .toString (),
@@ -2076,7 +2048,7 @@ static void run(
2076
2048
BackupId .of (backup .getInstanceId (), backup .getBackup () + "_cancel" ));
2077
2049
break ;
2078
2050
case "listbackupoperations" :
2079
- listBackupOperations (instanceAdminClient , database , backup );
2051
+ listBackupOperations (instanceAdminClient , database );
2080
2052
break ;
2081
2053
case "listdatabaseoperations" :
2082
2054
listDatabaseOperations (instanceAdminClient , dbAdminClient , database .getInstanceId ());
@@ -2172,14 +2144,14 @@ static void printUsageAndExit() {
2172
2144
System .err .println (" SpannerExample querywithqueryoptions my-instance example-db" );
2173
2145
System .err .println (" SpannerExample createbackup my-instance example-db" );
2174
2146
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" );
2176
2148
System .err .println (" SpannerExample listdatabaseoperations my-instance example-db" );
2177
2149
System .err .println (" SpannerExample restorebackup my-instance example-db" );
2178
2150
System .exit (1 );
2179
2151
}
2180
2152
2181
2153
public static void main (String [] args ) throws Exception {
2182
- if (args .length != 3 && args . length != 4 ) {
2154
+ if (args .length != 3 ) {
2183
2155
printUsageAndExit ();
2184
2156
}
2185
2157
// [START init_client]
@@ -2203,9 +2175,6 @@ public static void main(String[] args) throws Exception {
2203
2175
String .format (
2204
2176
"%s_%02d" ,
2205
2177
db .getDatabase (), LocalDate .now ().get (ChronoField .ALIGNED_WEEK_OF_YEAR ));
2206
- if ( args .length == 4 ) {
2207
- backupName = args [3 ];
2208
- }
2209
2178
BackupId backup = BackupId .of (db .getInstanceId (), backupName );
2210
2179
2211
2180
// [START init_client]
0 commit comments