Skip to content

Commit c556cca

Browse files
authored
Merge pull request #1 from rd-lumi/fix-build-mipsel-with-atomic-fail
Fix build mipsel with atomic fail
2 parents 3ac2d9f + c7d2896 commit c556cca

File tree

3 files changed

+17
-7
lines changed

3 files changed

+17
-7
lines changed

Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,4 @@ tracing = { version = "0.1", default-features = false }
4848
tracing-core = { version = "0.1", default-features = false }
4949
tracing-subscriber = { version = "0.3", default-features = false }
5050
url = { version = "2.5.2", default-features = false } #https://github.com/servo/rust-url/issues/992
51+
portable-atomic = "1.9.0"

opentelemetry-sdk/Cargo.toml

+3
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ tokio-stream = { workspace = true, optional = true }
3030
http = { workspace = true, optional = true }
3131
tracing = {workspace = true, optional = true}
3232

33+
[target.'cfg(any(target_arch = "powerpc", target_arch = "mips"))'.dependencies]
34+
portable-atomic = {workspace = true}
35+
3336
[package.metadata.docs.rs]
3437
all-features = true
3538
rustdoc-args = ["--cfg", "docsrs"]

opentelemetry-sdk/src/metrics/internal/mod.rs

+13-7
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use core::fmt;
99
use std::collections::{HashMap, HashSet};
1010
use std::mem::take;
1111
use std::ops::{Add, AddAssign, DerefMut, Sub};
12-
use std::sync::atomic::{AtomicBool, AtomicI64, AtomicU64, AtomicUsize, Ordering};
12+
use std::sync::atomic::Ordering;
1313
use std::sync::{Arc, RwLock};
1414

1515
use aggregate::is_under_cardinality_limit;
@@ -18,6 +18,12 @@ pub(crate) use exponential_histogram::{EXPO_MAX_SCALE, EXPO_MIN_SCALE};
1818
use once_cell::sync::Lazy;
1919
use opentelemetry::{otel_warn, KeyValue};
2020

21+
#[cfg(any(target_arch = "mips", target_arch = "powerpc"))]
22+
use portable_atomic::{AtomicBool, AtomicI64, AtomicU64, AtomicUsize};
23+
24+
#[cfg(not(any(target_arch = "mips", target_arch = "powerpc")))]
25+
use std::sync::atomic::{AtomicBool, AtomicI64, AtomicU64, AtomicUsize};
26+
2127
use crate::metrics::AttributeSet;
2228

2329
pub(crate) static STREAM_OVERFLOW_ATTRIBUTES: Lazy<Vec<KeyValue>> =
@@ -410,8 +416,8 @@ mod tests {
410416
#[test]
411417
fn can_add_and_get_u64_atomic_value() {
412418
let atomic = u64::new_atomic_tracker(0);
413-
atomic.add(15);
414-
atomic.add(10);
419+
AtomicTracker::add(&atomic, 15);
420+
AtomicTracker::add(&atomic, 10);
415421

416422
let value = atomic.get_value();
417423
assert_eq!(value, 25);
@@ -420,7 +426,7 @@ mod tests {
420426
#[test]
421427
fn can_reset_u64_atomic_value() {
422428
let atomic = u64::new_atomic_tracker(0);
423-
atomic.add(15);
429+
AtomicTracker::add(&atomic, 15);
424430

425431
let value = atomic.get_and_reset_value();
426432
let value2 = atomic.get_value();
@@ -449,8 +455,8 @@ mod tests {
449455
#[test]
450456
fn can_add_and_get_i64_atomic_value() {
451457
let atomic = i64::new_atomic_tracker(0);
452-
atomic.add(15);
453-
atomic.add(-10);
458+
AtomicTracker::add(&atomic, 15);
459+
AtomicTracker::add(&atomic, -10);
454460

455461
let value = atomic.get_value();
456462
assert_eq!(value, 5);
@@ -459,7 +465,7 @@ mod tests {
459465
#[test]
460466
fn can_reset_i64_atomic_value() {
461467
let atomic = i64::new_atomic_tracker(0);
462-
atomic.add(15);
468+
AtomicTracker::add(&atomic, 15);
463469

464470
let value = atomic.get_and_reset_value();
465471
let value2 = atomic.get_value();

0 commit comments

Comments
 (0)