Skip to content

Commit

Permalink
SummaryCache code_change
Browse files Browse the repository at this point in the history
  • Loading branch information
bchamagne committed Feb 16, 2024
1 parent 65dca2c commit 82e340e
Showing 1 changed file with 35 additions and 1 deletion.
36 changes: 35 additions & 1 deletion lib/archethic/beacon_chain/subset/summary_cache.ex
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ defmodule Archethic.BeaconChain.Subset.SummaryCache do
alias Archethic.BeaconChain
alias Archethic.BeaconChain.Slot
alias Archethic.BeaconChain.SummaryTimer
alias Archethic.BeaconChain.ReplicationAttestation
alias Archethic.TransactionChain.TransactionSummary
alias Archethic.Crypto

alias Archethic.PubSub
Expand All @@ -14,7 +16,7 @@ defmodule Archethic.BeaconChain.Subset.SummaryCache do
alias Archethic.Utils.VarInt

use GenServer
@vsn 1
@vsn 2

@table_name :archethic_summary_cache

Expand All @@ -39,6 +41,38 @@ defmodule Archethic.BeaconChain.Subset.SummaryCache do
{:ok, %{}}
end

# update the TransactionSummary in memory
def code_change(1, state, _extra) do
# credo:disable-for-lines:26
elements =
:ets.tab2list(@table_name)
|> Enum.map(fn {subset, {slot, node_public_key}} ->
slot =
Map.update!(
slot,
:transaction_attestations,
fn attestations ->
Enum.map(
attestations,
fn attestation = %ReplicationAttestation{transaction_summary: summary} ->
%ReplicationAttestation{
attestation
| transaction_summary: struct(TransactionSummary, Map.from_struct(summary))
}
end
)
end
)

{subset, {slot, node_public_key}}
end)

:ets.delete_all_objects(@table_name)
:ets.insert(@table_name, elements)

{:ok, state}
end

def code_change(_version, state, _extra), do: {:ok, state}

def handle_info(:self_repair_sync, state) do
Expand Down

0 comments on commit 82e340e

Please sign in to comment.