-
Notifications
You must be signed in to change notification settings - Fork 665
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fixes #3465 #3466 #3468
fixes #3465 #3466 #3468
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ay, what an easy fix.. thanks!
When might we see this in the valhalla:latest docker image? Thanks! |
@brad-4k its merged to master so its already there |
Is there a way to get a version from it to verify? I pulled yesterday and still getting the error. Trying to update (I think) right now: I still get:
|
sorry this repository is not connected to the gis-ops one. that is a |
Oh, right! Sorry! In the famous words of Homer Simpson, DOH! |
No worries, an honest mistake! |
we rebuild and push a new image every saturday morning (it's a cron) as |
what was going wrong?
so when going from proto2 to proto3 we get a new scalar type called
bytes
. this is useful in languages like java and python which want to make assertions about the type of data that is in a string vs a byte array. in c++ we roll our own so the apis are exactly the same regardless.we have this concept of tagged values which are arbitrary data which we can attach to any edge via its edge info. the tag usually refers to the tag in osm and the value is any payload we want to attach. the first types of these were strings and were additional names for things like tunnels and bridges. but then we added other stuff like
layer
which is an integer andpronunciation
which is a custom c++ struct and finally also bike share stations which are actually serialized protobufs.because proto3 doesnt want c++ to send non utf8 binary stuff as a python
str
or javaString
and have the person on the other end in those languages get screwed over, they have implemented checks in serialization/deserialization to check that even if we dont differentiate in c++.how to fix
there were two ways to fix this. the first way would be to not put any non textual things in the tagged value. indeed we are currently only using tunnels for the osrm serializer. so in
triplegbuilder
we could have filtered the binary ones out. the thing is though that then if you called trace attributes and you wanted all that data you would only get the filtered list. so instead of that i've just changed the type to bytes so we can keep putting all the values in there and the consumer on the other end can know how and whether or not they want to use the data.