Skip to content

feat: geobuf parsing#918

Open
stmitt wants to merge 1 commit intomainfrom
feature/geobuf
Open

feat: geobuf parsing#918
stmitt wants to merge 1 commit intomainfrom
feature/geobuf

Conversation

@stmitt
Copy link
Collaborator

@stmitt stmitt commented Feb 27, 2026

Adds support for geobuf as a style.json source.

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0fd41f6efb

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +142 to +145
std::lock_guard<std::recursive_mutex> lock(self->mutex);
self->loadingResult = DataLoaderResult(std::nullopt, std::nullopt, LoaderStatus::ERROR_OTHER, "parse error");
LogError << "Unable to parse geobuf: " <<= ex.what();
return;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Resolve waiting promises on Geobuf parse failure

In the Geobuf branch, parse errors set loadingResult and then return from the async callback, which skips the resolveAllWaitingPromises() call at the bottom of load(). Any caller waiting via waitIfNotLoaded() will block indefinitely when a source returns malformed Geobuf, so the layer can hang instead of reporting a completed failure state.

Useful? React with 👍 / 👎.

}
properties[context.keys[keyIndex]] = context.values[valueIndex];
}
context.values.clear();

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep value table available for custom properties

readProperties always clears context.values, but the decoder supports both properties (tag 14) and custom_properties (tag 15) within the same Geobuf message. If both are present, decoding the first one empties the value table and the second one can no longer resolve its value indexes, causing those fields to be silently dropped.

Useful? React with 👍 / 👎.

@github-actions
Copy link

🚨 Performance Regression Detected! 🚨

Some benchmarks have worsened in this PR.

📊 Click here to view the full benchmark results 📊

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant