GetMetadataPurgeInterval returns the current value for the metadata purge interval for the backing bucket. if forceRefresh is set, we'll always fetch a new Metadata Purge Interval from the bucket, even if we had one cached.
(ctx context.Context, forceRefresh bool)
| 1608 | // GetMetadataPurgeInterval returns the current value for the metadata purge interval for the backing bucket. |
| 1609 | // if forceRefresh is set, we'll always fetch a new Metadata Purge Interval from the bucket, even if we had one cached. |
| 1610 | func (db *DatabaseContext) GetMetadataPurgeInterval(ctx context.Context, forceRefresh bool) time.Duration { |
| 1611 | // look for metadata purge interval preferentially: |
| 1612 | // 1. test override value specified in DatabaseContextOptions |
| 1613 | // 2. cached metadata purge interval (if forceRefresh is false) |
| 1614 | // 3. bucket level |
| 1615 | // 4. cluster level |
| 1616 | // 5. default fallback value |
| 1617 | if db.Options.TestPurgeIntervalOverride != nil { |
| 1618 | return *db.Options.TestPurgeIntervalOverride |
| 1619 | } |
| 1620 | |
| 1621 | // fetch cached value if available |
| 1622 | if !forceRefresh { |
| 1623 | mpi := db.CachedPurgeInterval.Load() |
| 1624 | if mpi != nil { |
| 1625 | return *mpi |
| 1626 | } |
| 1627 | } |
| 1628 | |
| 1629 | // fetch from server |
| 1630 | cbStore, ok := base.AsCouchbaseBucketStore(db.Bucket) |
| 1631 | if !ok { |
| 1632 | return DefaultPurgeInterval |
| 1633 | } |
| 1634 | serverPurgeInterval, err := cbStore.MetadataPurgeInterval(ctx) |
| 1635 | if err != nil { |
| 1636 | base.WarnfCtx(ctx, "Unable to retrieve server's metadata purge interval - using default purge interval %.2f days. %s", DefaultPurgeInterval.Hours()/24, err) |
| 1637 | } |
| 1638 | |
| 1639 | mpi := DefaultPurgeInterval |
| 1640 | if serverPurgeInterval > 0 { |
| 1641 | mpi = serverPurgeInterval |
| 1642 | } |
| 1643 | |
| 1644 | db.CachedPurgeInterval.Store(&mpi) |
| 1645 | return mpi |
| 1646 | } |
| 1647 | |
| 1648 | // GetVersionPruningWindow returns the current value for the XDCR Version Pruning Window for the backing bucket. |
| 1649 | // if forceRefresh is set, we'll always fetch a new value from the bucket, even if we had one cached. |