Skip to content

Commit b4913b0

Browse files
committed
fix: add epoch to reportPublisherToCountry
1 parent c8b7454 commit b4913b0

File tree

4 files changed

+68
-29
lines changed

4 files changed

+68
-29
lines changed

sentry/src/access.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ mod test {
209209
publisher: IDS["publisher2"].clone(),
210210
ad_unit: None,
211211
ad_slot: None,
212-
referrer: None
212+
referrer: None,
213213
})
214214
.collect()
215215
}
@@ -223,7 +223,7 @@ mod test {
223223
uid: IDS["follower"].clone(),
224224
ip: Default::default(),
225225
referrer_header: None,
226-
country: None
226+
country: None,
227227
};
228228

229229
let rule = Rule {
@@ -259,7 +259,7 @@ mod test {
259259
uid: IDS["follower"].clone(),
260260
ip: Default::default(),
261261
country: None,
262-
referrer_header: None
262+
referrer_header: None,
263263
};
264264

265265
let rule = Rule {

sentry/src/analytics_recorder.rs

Lines changed: 53 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
use crate::epoch;
22
use crate::Session;
33
use primitives::sentry::Event;
4+
use primitives::sentry::{ChannelReport, PublisherReport};
45
use primitives::{BigNum, Channel};
56
use redis;
67
use redis::aio::MultiplexedConnection;
7-
use primitives::sentry::{ChannelReport, PublisherReport};
88

9+
use slog::{error, Logger};
910

1011
fn get_payout(channel: &Channel, event: &Event) -> BigNum {
1112
match event {
@@ -16,8 +17,8 @@ fn get_payout(channel: &Channel, event: &Event) -> BigNum {
1617
} else {
1718
BigNum::from(0)
1819
}
19-
},
20-
_ => BigNum::from(0)
20+
}
21+
_ => BigNum::from(0),
2122
}
2223
}
2324

@@ -26,6 +27,7 @@ pub async fn record(
2627
channel: &Channel,
2728
session: &Session,
2829
events: &[Event],
30+
logger: &Logger,
2931
) {
3032
let mut db = redis::pipe();
3133

@@ -48,17 +50,27 @@ pub async fn record(
4850
let payout = get_payout(channel, event)
4951
.to_u64()
5052
.expect("should always have a payout");
51-
let payAmount = payout / 10u64.pow(18);
53+
let pay_amount = payout / 10u64.pow(18);
5254

5355
if let Some(ad_unit) = ad_unit {
5456
db.zincr(
55-
format!("{}:{}:{}", PublisherReport::ReportPublisherToAdUnit, event, publisher),
57+
format!(
58+
"{}:{}:{}",
59+
PublisherReport::ReportPublisherToAdUnit,
60+
event,
61+
publisher
62+
),
5663
ad_unit,
5764
1,
5865
)
5966
.ignore();
6067
db.zincr(
61-
format!("{}:{}:{}", ChannelReport::ReportChannelToAdUnit, event, publisher),
68+
format!(
69+
"{}:{}:{}",
70+
ChannelReport::ReportChannelToAdUnit,
71+
event,
72+
publisher
73+
),
6274
ad_unit,
6375
1,
6476
)
@@ -67,15 +79,25 @@ pub async fn record(
6779

6880
if let Some(ad_slot) = ad_slot {
6981
db.zincr(
70-
format!("{}:{}:{}", PublisherReport::ReportPublisherToAdSlot, event, publisher),
82+
format!(
83+
"{}:{}:{}",
84+
PublisherReport::ReportPublisherToAdSlot,
85+
event,
86+
publisher
87+
),
7188
ad_slot,
7289
1,
7390
)
7491
.ignore();
7592
db.zincr(
76-
format!("{}:{}:{}", PublisherReport::ReportPublisherToAdSlotPay, event, publisher),
93+
format!(
94+
"{}:{}:{}",
95+
PublisherReport::ReportPublisherToAdSlotPay,
96+
event,
97+
publisher
98+
),
7799
ad_slot,
78-
payAmount,
100+
pay_amount,
79101
)
80102
.ignore();
81103
}
@@ -98,25 +120,40 @@ pub async fn record(
98120
let hostname = match (referrer, &session.referrer_header) {
99121
(Some(referrer), _) | (_, Some(referrer)) => {
100122
referrer.split('/').nth(2).map(ToString::to_string)
101-
},
102-
_ => None
123+
}
124+
_ => None,
103125
};
104126

105127
if let Some(hostname) = &hostname {
106128
db.zincr(
107-
format!("{}:{}:{}", PublisherReport::ReportPublisherToHostname,event, publisher),
129+
format!(
130+
"{}:{}:{}",
131+
PublisherReport::ReportPublisherToHostname,
132+
event,
133+
publisher
134+
),
108135
hostname,
109136
1,
110137
)
111138
.ignore();
112139
db.zincr(
113-
format!("{}:{}:{}", ChannelReport::ReportChannelToHostname, event, channel.id),
140+
format!(
141+
"{}:{}:{}",
142+
ChannelReport::ReportChannelToHostname,
143+
event,
144+
channel.id
145+
),
114146
hostname,
115147
1,
116148
)
117149
.ignore();
118150
db.zincr(
119-
format!("{}:{}:{}", ChannelReport::ReportChannelToHostnamePay, event, channel.id),
151+
format!(
152+
"{}:{}:{}",
153+
ChannelReport::ReportChannelToHostnamePay,
154+
event,
155+
channel.id
156+
),
120157
hostname,
121158
1,
122159
)
@@ -126,7 +163,7 @@ pub async fn record(
126163
_ => {}
127164
});
128165

129-
if let Err(e) = db.query_async::<_, Option<String>>(&mut conn).await {
130-
// log error
166+
if let Err(err) = db.query_async::<_, Option<String>>(&mut conn).await {
167+
error!(&logger, "Server error: {}", err; "module" => "analytics-recorder");
131168
}
132169
}

sentry/src/db/analytics.rs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,11 @@ use crate::epoch;
33
use crate::Session;
44
use bb8::RunError;
55
use chrono::Utc;
6-
use futures::future::try_join_all;
7-
use futures::future::TryFutureExt;
86
use primitives::analytics::{AnalyticsQuery, AnalyticsResponse, ANALYTICS_QUERY_LIMIT};
97
use primitives::sentry::{AdvancedAnalyticsResponse, ChannelReport, Event, PublisherReport};
108
use primitives::{ChannelId, ValidatorId};
119
use redis;
1210
use redis::aio::MultiplexedConnection;
13-
use redis::AsyncCommands;
14-
use redis::Commands;
1511
use std::collections::HashMap;
1612
use std::error::Error;
1713

@@ -165,11 +161,17 @@ pub async fn get_advanced_reports(
165161
let mut publisher_stats = HashMap::new();
166162

167163
for publisher_report in publisher_reports.iter() {
168-
let result = stat_pair(
169-
redis.clone(),
170-
&format!("{}:{}:{}", publisher_report, event, publisher),
171-
)
172-
.await?;
164+
let pair = match publisher_report {
165+
PublisherReport::ReportPublisherToCountry => format!(
166+
"{}:{}:{}:{}",
167+
epoch().floor(),
168+
publisher_report,
169+
event,
170+
publisher
171+
),
172+
_ => format!("{}:{}:{}", publisher_report, event, publisher),
173+
};
174+
let result = stat_pair(redis.clone(), &pair).await?;
173175
publisher_stats.insert(publisher_report.clone(), result);
174176
}
175177

sentry/src/event_reducer.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ mod test {
7474
publisher: IDS["publisher"].clone(),
7575
ad_unit: None,
7676
ad_slot: None,
77-
referrer: None
77+
referrer: None,
7878
};
7979

8080
for _ in 0..101 {

0 commit comments

Comments
 (0)