bitwalker / bitwalker/swarm

No function clause matching Swarm.IntervalTreeClock.sum/2

Open
#141 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Elixir
Stars
1.3k
Forks
110
PR merge metrics
No merged PRs in 30d

Description

I'm using `Swarm` in a big cluster and I'm always getting the following error in exactly one node:

```
00:34:51.845 [error] GenStateMachine Swarm.Tracker terminating
** (FunctionClauseError) no function clause matching in Swarm.IntervalTreeClock.sum/2
(swarm 3.4.0) lib/swarm/tracker/crdt.ex:140: Swarm.IntervalTreeClock.sum(1, {0, 1})
(swarm 3.4.0) lib/swarm/tracker/crdt.ex:29: Swarm.IntervalTreeClock.join/2
(swarm 3.4.0) lib/swarm/tracker/tracker.ex:1005: Swarm.Tracker.handle_replica_event/4
(stdlib 3.13) gen_statem.erl:1166: :gen_statem.loop_state_callback/11
(stdlib 3.13) proc_lib.erl:226: :proc_lib.init_p_do_apply/3
```

Basically it is attempting to join two interval tree clocks `1` and `{0, 1}`, which, apparently by definition, is undefined. The ITC `1` is coming from the `%TrackerState` which holds a `clock` with this value `1`.

Either the ITC is missing a definition for this case or the `Swarm` code is saving `1` in `%TrackerState.clock` in a wrong way.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.