systemed / tilemaker

Make OpenStreetMap vector tiles without the stack
https://tilemaker.org/
Other
1.42k stars 228 forks source link

ignore --shard-stores if --compact is present #660

Closed cldellow closed 6 months ago

cldellow commented 6 months ago

Fixes #657

These two settings are incompatible, because CompactNodeStore does not implement .contains(...)

Instead, if --compact is present, don't shard stores. Further, throw if code calls .contains(...), so that we'll fail noisily and more clearly.

I debated teaching CompactNodeStore how to do .contains(...), e.g. by maintaning a bitmap of which entries were present. Ultimately, though, I think sharding CompactNodeStores does not make sense -- each CompactNodeStore instance will use about the same amount of memory (vs the other stores, which will each use 1/N memory)

Also a small tweak: detect if --compact is used on a non-renumbered PBF, and warn the user.

systemed commented 6 months ago

Thanks! Yes, that makes sense.

Using std::exchange on a bool is a clever little idiom - never seen that before :)