Skip to content

Commit 8860131

Browse files
committed
Add feature_set to EpochInfo
1 parent bd3fedd commit 8860131

File tree

2 files changed

+26
-13
lines changed

2 files changed

+26
-13
lines changed

src/cmd.zig

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2902,30 +2902,30 @@ fn loggingPanic(message: []const u8, first_trace_addr: ?usize) noreturn {
29022902
std.debug.defaultPanic(message, first_trace_addr);
29032903
}
29042904

2905-
pub const RpcLeaderScheduleService = struct {
2905+
/// NOTE: This only populates the leader schedule, and leaves the epoch stake & features empty (ie ALL_DISABLED).
2906+
const RpcLeaderScheduleService = struct {
29062907
allocator: std.mem.Allocator,
29072908
logger: RpcLeaderScheduleServiceLogger,
29082909
rpc_client: sig.rpc.Client,
29092910
epoch_tracker: *sig.core.EpochTracker,
29102911

2911-
const Self = @This();
2912-
const RpcLeaderScheduleServiceLogger = sig.trace.Logger(@typeName(Self));
2912+
const RpcLeaderScheduleServiceLogger = sig.trace.Logger(@typeName(RpcLeaderScheduleService));
29132913

2914-
pub fn init(
2914+
fn init(
29152915
allocator: std.mem.Allocator,
29162916
logger: RpcLeaderScheduleServiceLogger,
29172917
epoch_tracker: *sig.core.EpochTracker,
29182918
rpc_client: sig.rpc.Client,
2919-
) Self {
2919+
) RpcLeaderScheduleService {
29202920
return .{
29212921
.allocator = allocator,
2922-
.logger = logger.withScope(@typeName(Self)),
2922+
.logger = logger.withScope(@typeName(RpcLeaderScheduleService)),
29232923
.rpc_client = rpc_client,
29242924
.epoch_tracker = epoch_tracker,
29252925
};
29262926
}
29272927

2928-
pub fn run(self: *Self, exit: *std.atomic.Value(bool)) void {
2928+
fn run(self: *RpcLeaderScheduleService, exit: *std.atomic.Value(bool)) void {
29292929
var i: usize = 0;
29302930
while (!exit.load(.monotonic)) {
29312931
if (i % 1000 == 0) {
@@ -2942,7 +2942,7 @@ pub const RpcLeaderScheduleService = struct {
29422942
}
29432943
}
29442944

2945-
fn refresh(self: *Self) !void {
2945+
fn refresh(self: *RpcLeaderScheduleService) !void {
29462946
const response = try self.rpc_client.getSlot(.{});
29472947
defer response.deinit();
29482948
const slot = try response.result();
@@ -2969,10 +2969,13 @@ pub const RpcLeaderScheduleService = struct {
29692969
&self.epoch_tracker.epoch_schedule,
29702970
);
29712971

2972-
var entry = try self.allocator.create(sig.core.EpochInfo);
2972+
const entry = try self.allocator.create(sig.core.EpochInfo);
29732973
entry.* = .{
29742974
.leaders = leaders,
29752975
.stakes = .EMPTY,
2976+
// TODO: if you need features here for whatever reason, you'll have to implement
2977+
// some way to forward them from replay, or source them by some other means.
2978+
.feature_set = .ALL_DISABLED,
29762979
};
29772980
entry.stakes.stakes.epoch = e;
29782981
errdefer {
@@ -2986,7 +2989,7 @@ pub const RpcLeaderScheduleService = struct {
29862989
}
29872990

29882991
fn getLeaderSchedule(
2989-
self: *Self,
2992+
self: *RpcLeaderScheduleService,
29902993
slot: sig.core.Slot,
29912994
epoch_schedule: *const sig.core.EpochSchedule,
29922995
) !LeaderSchedule {

src/core/epoch_tracker.zig

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,7 @@ pub const EpochTracker = struct {
253253
epoch_info_ptr.* = .{
254254
.leaders = leaders,
255255
.stakes = epoch_stakes,
256+
.feature_set = feature_set.*,
256257
};
257258

258259
try self.rooted_epochs.insert(allocator, epoch_info_ptr);
@@ -287,6 +288,7 @@ pub const EpochTracker = struct {
287288
.{
288289
.leaders = leaders,
289290
.stakes = epoch_stakes,
291+
.feature_set = feature_set.*,
290292
},
291293
);
292294
}
@@ -338,6 +340,7 @@ pub const EpochTracker = struct {
338340
.end = 0,
339341
},
340342
.stakes = stakes,
343+
.feature_set = .ALL_DISABLED,
341344
};
342345
errdefer epoch_info_ptr.deinit(allocator);
343346

@@ -351,16 +354,22 @@ pub const EpochTracker = struct {
351354
pub const EpochInfo = struct {
352355
leaders: LeaderSchedule,
353356
stakes: EpochStakes,
357+
feature_set: sig.core.FeatureSet,
354358

355359
pub fn deinit(self: *const EpochInfo, allocator: Allocator) void {
356360
self.leaders.deinit(allocator);
357361
self.stakes.deinit(allocator);
358362
}
359363

360-
fn init(leaders: LeaderSchedule, stakes: EpochStakes) !EpochInfo {
364+
fn init(
365+
leaders: LeaderSchedule,
366+
stakes: EpochStakes,
367+
feature_set: sig.core.FeatureSet,
368+
) EpochInfo {
361369
return .{
362370
.leaders = leaders,
363371
.stakes = stakes,
372+
.feature_set = feature_set,
364373
};
365374
}
366375

@@ -383,7 +392,7 @@ pub const EpochInfo = struct {
383392
});
384393
errdefer leaders.deinit(allocator);
385394

386-
return .init(leaders, stakes);
395+
return .init(leaders, stakes, .ALL_DISABLED);
387396
}
388397
};
389398

@@ -647,13 +656,14 @@ test RootedEpochBuffer {
647656
}
648657
for (epoch - 2..epoch + 1, 0..) |epoch_i, i| {
649658
const info = try buffer.get(epoch_i);
650-
expected[i] = EpochInfo{
659+
expected[i] = .{
651660
.leaders = .{
652661
.leaders = try allocator.dupe(Pubkey, info.leaders.leaders),
653662
.start = info.leaders.start,
654663
.end = info.leaders.end,
655664
},
656665
.stakes = try info.stakes.clone(allocator),
666+
.feature_set = .ALL_DISABLED,
657667
};
658668
}
659669

0 commit comments

Comments
 (0)