Skip to content

Commit 2303c51

Browse files
committed
Remove leaf check from RevTree Unmarshal (assume JSON is always correct and isn't storing non-leaf channelmap entries)
1 parent 896ac31 commit 2303c51

File tree

2 files changed

+6
-30
lines changed

2 files changed

+6
-30
lines changed

db/revtree.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -192,20 +192,20 @@ func (tree *RevTree) UnmarshalJSON(inputjson []byte) (err error) {
192192
(*tree)[rep.Revs[i]] = info
193193
}
194194

195-
if len(rep.ChannelsMap) > 0 || len(rep.Channels_Old) > 0 {
196-
leaves := tree.Leaves()
195+
if len(rep.ChannelsMap) > 0 {
197196
for iStr, channels := range rep.ChannelsMap {
198197
i, err := strconv.ParseInt(iStr, 10, 64)
199198
if err != nil {
200199
return err
201200
}
202201
info := (*tree)[rep.Revs[i]]
203-
if _, isLeaf := leaves[info.ID]; isLeaf {
204-
info.Channels = channels
205-
}
202+
info.Channels = channels
206203
}
204+
}
207205

208-
// we shouldn't be in a situation where we have both channels and channelsMap populated, but we still need to handle the old format.
206+
// we shouldn't be in a situation where we have both channels and channelsMap populated, but we still need to handle the old format
207+
if len(rep.Channels_Old) > 0 {
208+
leaves := tree.Leaves()
209209
for i, channels := range rep.Channels_Old {
210210
info := (*tree)[rep.Revs[i]]
211211
if _, isLeaf := leaves[info.ID]; isLeaf {

db/revtree_test.go

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -364,37 +364,13 @@ func TestRevTreeChannelMapLeafOnly(t *testing.T) {
364364
})
365365
require.NoError(t, err)
366366

367-
// Intentionally keep a non-leaf channelsMap entry to ensure that unmarshalling strips it
368-
treeJSON := []byte(`{
369-
"revs":["3-three","2-two","1-one","3-drei","4-four"],
370-
"parents":[1,2,-1,1,0],
371-
"channelsMap":{"0":["EN"],"3":["DE"],"4":["EN-gb","EN-us"]}
372-
}`)
373-
374367
// marshal RevTree into storage format
375368
bytes, err := base.JSONMarshal(tree)
376369
require.NoError(t, err)
377370
// unmarshal back into revTreeList to ensure non-leaf channels are stripped on marshal for stored format
378371
var storedMap revTreeList
379372
require.NoError(t, base.JSONUnmarshal(bytes, &storedMap))
380373
assert.Len(t, storedMap.ChannelsMap, 2, "expected only two channelsMap entries (for the leaf revisions)")
381-
382-
// unmarshal treeJSON into RevTree to ensure non-leaf channels are stripped on unmarshal
383-
var gotmap RevTree
384-
require.NoError(t, base.JSONUnmarshal(treeJSON, &gotmap))
385-
386-
ri, err := gotmap.getInfo("3-three")
387-
require.NoError(t, err)
388-
assert.Nil(t, ri.Channels) // no channels on remarshalled RevTree for non-leaf revision
389-
390-
ri, err = gotmap.getInfo("4-four")
391-
require.NoError(t, err)
392-
assert.Equal(t, rev4Channels, ri.Channels) // leaf revision channels
393-
394-
ri, err = gotmap.getInfo("3-drei")
395-
require.NoError(t, err)
396-
assert.Equal(t, base.SetOf("DE"), ri.Channels) // leaf revision channels
397-
398374
}
399375

400376
func TestRevTreeIsLeaf(t *testing.T) {

0 commit comments

Comments
 (0)