@@ -9,8 +9,7 @@ import '../../experimental_sdk.dart' as sdk;
99
1010/// Applies given [sdk.SpanLimits] to a list of [api.SpanLink] s.
1111@protected
12- List <api.SpanLink > applyLinkLimits (
13- List <api.SpanLink > links, sdk.SpanLimits limits) {
12+ List <api.SpanLink > applyLinkLimits (List <api.SpanLink > links, sdk.SpanLimits limits) {
1413 final spanLink = < api.SpanLink > [];
1514
1615 for (final link in links) {
@@ -29,8 +28,7 @@ List<api.SpanLink> applyLinkLimits(
2928 for (final attr in link.attributes) {
3029 // if attributes num is already greater than maxNumAttributesPerLink
3130 // and this key doesn't exist in the list, drop it.
32- if (attributeMap.length >= limits.maxNumAttributesPerLink &&
33- ! attributeMap.containsKey (attr.key)) {
31+ if (attributeMap.length >= limits.maxNumAttributesPerLink && ! attributeMap.containsKey (attr.key)) {
3432 droppedAttributes++ ;
3533 continue ;
3634 }
@@ -51,8 +49,7 @@ List<api.SpanLink> applyLinkLimits(
5149 }
5250 }
5351
54- spanLink.add (api.SpanLink (link.context,
55- attributes: linkAttributes, droppedAttributes: droppedAttributes));
52+ spanLink.add (api.SpanLink (link.context, attributes: linkAttributes, droppedAttributes: droppedAttributes));
5653 }
5754 return spanLink;
5855}
@@ -65,14 +62,11 @@ api.Attribute applyAttributeLimits(api.Attribute attr, sdk.SpanLimits limits) {
6562
6663 if (attr.value is String ) {
6764 attr = api.Attribute .fromString (
68- attr.key,
69- applyAttributeLengthLimit (
70- attr.value as String , limits.maxNumAttributeLength));
65+ attr.key, applyAttributeLengthLimit (attr.value as String , limits.maxNumAttributeLength));
7166 } else if (attr.value is List <String >) {
7267 final listString = attr.value as List <String >;
7368 for (var j = 0 ; j < listString.length; j++ ) {
74- listString[j] = applyAttributeLengthLimit (
75- listString[j], limits.maxNumAttributeLength);
69+ listString[j] = applyAttributeLengthLimit (listString[j], limits.maxNumAttributeLength);
7670 }
7771 attr = api.Attribute .fromStringList (attr.key, listString);
7872 }
@@ -88,18 +82,13 @@ api.Attribute applyAttributeLimitsForLog(
8882 if (limits.attributeValueLengthLimit < 0 ) return attr;
8983
9084 if (attr.value is String ) {
91- final truncatedValue = applyAttributeLengthLimit (
92- attr.value as String , limits.attributeValueLengthLimit);
93-
94- if (truncatedValue == attr.value) return attr;
95-
96- return api.Attribute .fromString (attr.key, truncatedValue);
85+ return (attr.value as String ).length > limits.attributeValueLengthLimit
86+ ? api.Attribute .fromString (attr.key, (attr.value as String ).substring (0 , limits.attributeValueLengthLimit))
87+ : attr;
9788 } else if (attr.value is List <String >) {
9889 final listString = attr.value as List <String >;
99- final truncatedValues = listString
100- .map ((e) =>
101- applyAttributeLengthLimit (e, limits.attributeValueLengthLimit))
102- .toList ();
90+ final truncatedValues =
91+ listString.map ((e) => applyAttributeLengthLimit (e, limits.attributeValueLengthLimit)).toList ();
10392
10493 final equal = const ListEquality ().equals (listString, truncatedValues);
10594 if (equal) return attr;
0 commit comments