Skip to content

Commit

Permalink
Merge pull request #3101 from ipfs/feat/reprovide-config
Browse files Browse the repository at this point in the history
reprovider: add config option to set reprovide interval
  • Loading branch information
whyrusleeping authored Aug 20, 2016
2 parents 7276fd8 + 0b6bfab commit eac1c63
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 1 deletion.
15 changes: 14 additions & 1 deletion core/core.go
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,20 @@ func (n *IpfsNode) startOnlineServices(ctx context.Context, routingOption Routin
}

n.Reprovider = rp.NewReprovider(n.Routing, n.Blockstore)
go n.Reprovider.ProvideEvery(ctx, kReprovideFrequency)

if cfg.Reprovider.Interval != "0" {
interval := kReprovideFrequency
if cfg.Reprovider.Interval != "" {
dur, err := time.ParseDuration(cfg.Reprovider.Interval)
if err != nil {
return err
}

interval = dur
}

go n.Reprovider.ProvideEvery(ctx, interval)
}

// setup local discovery
if do != nil {
Expand Down
11 changes: 11 additions & 0 deletions docs/config.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ a running daemon do not read the config file at runtime.
- [`Identity`](#identity)
- [`Ipns`](#ipns)
- [`Mounts`](#mounts)
- [`ReproviderInterval`](#reproviderinterval)
- [`SupernodeRouting`](#supernoderouting)
- [`Swarm`](#swarm)
- [`Tour`](#tour)
Expand Down Expand Up @@ -192,6 +193,16 @@ Mountpoint for `/ipns/`.
- `FuseAllowOther`
Sets the FUSE allow other option on the mountpoint.

## `ReproviderInterval`
Sets the time between rounds of reproviding local content to the routing
system. If unset, it defaults to 12 hours. If set to the value `"0"` it will
disable content reproviding.

Note: disabling content reproviding will result in other nodes on the network
not being able to discover that you have the objects that you have. If you want
to have this disabled and keep the network aware of what you have, you must
manually announce your content periodically.

## `SupernodeRouting`
Deprecated.

Expand Down
2 changes: 2 additions & 0 deletions repo/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ type Config struct {
SupernodeRouting SupernodeClientConfig // local node's routing servers (if SupernodeRouting enabled)
API API // local node's API settings
Swarm SwarmConfig

Reprovider Reprovider
}

const (
Expand Down
3 changes: 3 additions & 0 deletions repo/config/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,9 @@ func Init(out io.Writer, nBitsForKeypair int) (*Config, error) {
"Access-Control-Allow-Headers": []string{"X-Requested-With"},
},
},
Reprovider: Reprovider{
Interval: "12h",
},
}

return conf, nil
Expand Down
5 changes: 5 additions & 0 deletions repo/config/reprovider.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package config

type Reprovider struct {
Interval string // Time period to reprovide locally stored objects to the network
}

0 comments on commit eac1c63

Please sign in to comment.