Prioritize local over span keys when serializing webhook payloads (#1250)
This commit is contained in:
@@ -7,15 +7,15 @@
|
||||
use std::{collections::hash_map::Entry, fmt, str::FromStr};
|
||||
|
||||
use serde::{
|
||||
Deserializer, Serializer,
|
||||
de::{self, IgnoredAny, Visitor},
|
||||
ser::SerializeMap,
|
||||
Deserializer, Serializer,
|
||||
};
|
||||
use store::U64_LEN;
|
||||
|
||||
use crate::{
|
||||
Permission, Principal, ROLE_ADMIN, Type,
|
||||
backend::internal::{PrincipalField, PrincipalUpdate, PrincipalValue},
|
||||
Permission, Principal, Type, ROLE_ADMIN,
|
||||
};
|
||||
|
||||
impl Principal {
|
||||
@@ -369,7 +369,10 @@ impl Principal {
|
||||
|
||||
pub fn update_external(&mut self, mut external: Principal) -> Vec<PrincipalUpdate> {
|
||||
let mut updates = Vec::new();
|
||||
if let Some(name) = external.take_str(PrincipalField::Description) {
|
||||
if let Some(name) = external
|
||||
.take_str(PrincipalField::Description)
|
||||
.filter(|s| !s.is_empty())
|
||||
{
|
||||
if self.get_str(PrincipalField::Description) != Some(name.as_str()) {
|
||||
updates.push(PrincipalUpdate::set(
|
||||
PrincipalField::Description,
|
||||
|
||||
@@ -6,11 +6,11 @@
|
||||
|
||||
use crate::{Error, Event, EventDetails, Key, Value};
|
||||
use ahash::AHashSet;
|
||||
use base64::{engine::general_purpose::STANDARD, Engine};
|
||||
use base64::{Engine, engine::general_purpose::STANDARD};
|
||||
use mail_parser::DateTime;
|
||||
use serde::{
|
||||
ser::{SerializeMap, SerializeSeq},
|
||||
Serialize, Serializer,
|
||||
ser::{SerializeMap, SerializeSeq},
|
||||
};
|
||||
|
||||
struct Keys<'x> {
|
||||
@@ -135,7 +135,7 @@ impl Serialize for JsonEventSerializer<Keys<'_>> {
|
||||
let keys_len = self.inner.keys.len() + self.inner.span_keys.len();
|
||||
let mut seen_keys = AHashSet::with_capacity(keys_len);
|
||||
let mut keys = serializer.serialize_map(Some(keys_len))?;
|
||||
for (key, value) in self.inner.span_keys.iter().chain(self.inner.keys.iter()) {
|
||||
for (key, value) in self.inner.keys.iter().chain(self.inner.span_keys.iter()) {
|
||||
if !matches!(value, Value::None)
|
||||
&& (self.with_spans || !matches!(key, Key::SpanId))
|
||||
&& seen_keys.insert(*key)
|
||||
|
||||
Reference in New Issue
Block a user