Skip to content

Commit 798e89c

Browse files
committed
Merge branch 'main' into timfn/21856-add-bn-service-client
Signed-off-by: Tim Farber-Newman <[email protected]>
2 parents 403cfd7 + 19a3061 commit 798e89c

File tree

817 files changed

+6645
-67314
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

817 files changed

+6645
-67314
lines changed

.github/CODEOWNERS

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,6 @@
7171
/platform-sdk/swirlds-common/ @hiero-ledger/hiero-consensus-node-consensus-codeowners @hiero-ledger/hiero-consensus-node-foundation-codeowners
7272
/platform-sdk/swirlds-component-framework/ @hiero-ledger/hiero-consensus-node-consensus-codeowners
7373
/platform-sdk/swirlds-config-*/ @hiero-ledger/hiero-consensus-node-foundation-codeowners
74-
/platform-sdk/swirlds-fchashmap/ @hiero-ledger/hiero-consensus-node-foundation-codeowners
75-
/platform-sdk/swirlds-fcqueue/ @hiero-ledger/hiero-consensus-node-foundation-codeowners
7674
/platform-sdk/swirlds-logging/ @hiero-ledger/hiero-consensus-node-foundation-codeowners
7775
/platform-sdk/swirlds-logging-*/ @hiero-ledger/hiero-consensus-node-foundation-codeowners
7876
/platform-sdk/swirlds-merkle/ @hiero-ledger/hiero-consensus-node-foundation-codeowners

.github/workflows/platform-zxcron-release-jrs-regression.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ jobs:
5858

5959
- name: Install Github CLI
6060
env:
61-
GITHUB_TOKEN: ${{ secrets.PLATFORM_access-token }}
61+
GITHUB_TOKEN: ${{ secrets.PLATFORM_GH_ACCESS_TOKEN }}
6262
run: |
6363
curl -O -L -s https://github.com/cli/cli/releases/download/v2.12.1/gh_2.12.1_linux_amd64.deb
6464
sudo apt install -y ./gh_2.12.1_linux_amd64.deb
File renamed without changes.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
node_id=${1}
2+
3+
ps -aef | grep -w stateAnalyzer | grep -v grep | grep stateAnalyzer >/dev/null
4+
if [[ ${?} -eq 0 ]]
5+
then
6+
echo "Previous Validator is still running on ${node_id}"
7+
exit 1
8+
fi
9+
10+
cd /opt/hgcapp/services-hedera/HapiApp2.0/data/saved/validation.tmp
11+
currentRound=`ls -1t ../com.hedera.services.ServicesMain/${node_id}/123/ | head -n 1`
12+
13+
java -Xms16g -Xmx64g -XX:+UnlockExperimentalVMOptions -XX:+UseZGC -XX:ZAllocationSpikeTolerance=2 -XX:ConcGCThreads=14 \
14+
-XX:ZMarkStackSpaceLimit=16g -XX:MaxDirectMemorySize=32g -XX:NativeMemoryTracking=detail -XX:MetaspaceSize=100M \
15+
-XX:+ZGenerational -Dthread.num=16 \
16+
-jar /tmp/hedera-state-validator-*-all.jar ../com.hedera.services.ServicesMain/${node_id}/123/${currentRound} \
17+
validate rehash stateAnalyzer account tokenRelations internal leaf > validatorRun.log 2>&1
18+
result=${?}
19+
if [[ ${result} -eq 0 ]]
20+
then
21+
echo "Node: ${node_id} validation of round ${currentRound} is OK"
22+
grep -i -E 'time.* taken' validator.log validatorRun.log
23+
else
24+
echo "Node: ${node_id} validation of round ${currentRound} failed"
25+
fi
26+
exit ${result}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
%stat=();
2+
3+
while (<>) {
4+
if (/^\w+[\:]\d+$/) {
5+
($id, $counter)=split(/[\:]/,$_,2);
6+
$stat{"$id"}{"counter"}+=$counter;
7+
}
8+
}
9+
foreach $id (sort { $stat{$b}{"counter"} <=> $stat{$a}{"counter"} } keys (%stat) ) {
10+
printf("%-35s %10d\n",$id,$stat{$id}{"counter"});
11+
}

.github/workflows/support/citr/cronClean.sh

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ NODE_ROOT=/opt/hgcapp
44

55
NofNodes=`kubectl -n ${NAMESPACE} get pods | grep 'network-node' | wc -l`
66

7-
for i in `seq 1 1 $NofNodes`
7+
for i in `seq 1 1 ${NofNodes}`
88
do
9-
kubectl -n ${NAMESPACE} exec network-node${i}-0 -c root-container -- bash -c "find $NODE_ROOT/*Streams/*/ -type f -mmin +59 -exec rm -f {} \;" >/dev/null 2>&1 &
9+
kubectl -n ${NAMESPACE} exec network-node${i}-0 -c root-container -- bash -c "find ${NODE_ROOT}/*Streams/*/ -type f -mmin +59 -exec rm -f {} \;" >/dev/null 2>&1 &
1010
done
1111

1212
wait
@@ -19,8 +19,9 @@ kubectl -n ${NAMESPACE} get secret minio-secrets -o yaml | grep 'config.env' | a
1919
username=`grep MINIO_ROOT_USER /tmp/.$$.tmp.s | awk -F = '{print $NF}'`
2020
userpwd=`grep MINIO_ROOT_PASSWORD /tmp/.$$.tmp.s | awk -F = '{print $NF}'`
2121

22-
kubectl -n ${NAMESPACE} exec $nlgpod -- bash -c "if [ ! -f ./mc ]; then curl https://dl.min.io/client/mc/release/linux-amd64/mc -o mc; fi"
23-
kubectl -n ${NAMESPACE} exec $nlgpod -- bash -c "chmod a+rx ./mc"
24-
kubectl -n ${NAMESPACE} exec $nlgpod -- bash -c "./mc alias set myminio http://$minioIP:9000 $username $userpwd"
25-
kubectl -n ${NAMESPACE} exec $nlgpod -- bash -c "./mc rm --older-than 0d1h0s --recursive --versions --force myminio/solo-streams/ >/dev/null 2>&1"
26-
kubectl -n ${NAMESPACE} exec $nlgpod -- bash -c "./mc rm --older-than 0d1h0s --recursive --versions --force myminio/solo-backups/ >/dev/null 2>&1"
22+
kubectl -n ${NAMESPACE} exec ${nlgpod} -- bash -c "if [ ! -f ./mc ]; then curl https://dl.min.io/client/mc/release/linux-amd64/mc -o mc; fi"
23+
kubectl -n ${NAMESPACE} exec ${nlgpod} -- bash -c "chmod a+rx ./mc"
24+
kubectl -n ${NAMESPACE} exec ${nlgpod} -- bash -c "./mc alias set myminio http://${minioIP}:9000 ${username} ${userpwd}"
25+
kubectl -n ${NAMESPACE} exec ${nlgpod} -- bash -c "./mc rm --older-than 0d1h0s --recursive --versions --force myminio/solo-streams/ >/dev/null 2>&1"
26+
kubectl -n ${NAMESPACE} exec ${nlgpod} -- bash -c "./mc rm --older-than 0d1h0s --recursive --versions --force myminio/solo-backups/ >/dev/null 2>&1"
27+
Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,28 @@
11
NAMESPACE=$1
22
NODE_ROOT=/opt/hgcapp/services-hedera/HapiApp2.0
3-
LOG_DIR=$NODE_ROOT/output
4-
STATS_DIR=$NODE_ROOT/data/stats
5-
CONFIG_DIR=$NODE_ROOT/data/config
3+
LOG_DIR=${NODE_ROOT}/output
4+
STATS_DIR=${NODE_ROOT}/data/stats
5+
CONFIG_DIR=${NODE_ROOT}/data/config
66

77
TOOLDIR=`dirname $0`
88

99
mkdir podlog_${NAMESPACE}
1010

1111
NofNodes=`kubectl -n ${NAMESPACE} get pods | grep 'network-node' | wc -l`
1212

13-
for i in `seq 1 1 $NofNodes`
13+
for i in `seq 1 1 ${NofNodes}`
1414
do
1515
sh ${TOOLDIR}/kubectlt -n ${NAMESPACE} exec -it network-node${i}-0 -c root-container -- \
16-
bash -c "grep -h -i -E 'error|exception|warn' $LOG_DIR/*.log |grep -v -E 'error-|-error|exception-|-exception|exception[\=]' | grep -v 'The most likely causes'" > podlog_${NAMESPACE}/podlog_${NAMESPACE}_network-node${i}-errors.log
17-
cat podlog_${NAMESPACE}/podlog_${NAMESPACE}_network-node${i}-errors.log | perl ${TOOLDIR}/backPresureStats.pl >> podlog_${NAMESPACE}/podlog_${NAMESPACE}_network-node${i}-errors.log
16+
bash -c "grep -h -i -E 'error|exception|warn' ${LOG_DIR}/*.log | grep -v -E 'error-|-error|exception-|-exception|exception[\=]' | grep -v 'The most likely causes'" > podlog_${NAMESPACE}/podlog_${NAMESPACE}_network-node${i}-errors.log
17+
cat podlog_${NAMESPACE}/podlog_${NAMESPACE}_network-node${i}-errors.log | perl ${TOOLDIR}/backPressureStats.pl >> podlog_${NAMESPACE}/podlog_${NAMESPACE}_network-node${i}-errors.log
1818
done
1919

2020
cat podlog_${NAMESPACE}/podlog_${NAMESPACE}_network-node*-errors.log | grep -v -E 'exception[\=]null' |\
2121
perl -ne 'if (/^\d{4}[\-]\d{2}[\-]\d{2}\s+\d{2}[\:]\d{2}[\:]\d{2}[\.]\d+\s+\d+\s+(.*)$/) {print "$1\n";} else {print;}' | perl -pne '~s/\d+/N/g' |sort | uniq -c | sort -n -k 1 -r |\
2222
grep -v 'Report[\[]' | grep -v 'contracts.evm.chargeGasOnEvmHandleException [\=] true' > podlog_${NAMESPACE}/error_summary.txt
23-
cat podlog_${NAMESPACE}/podlog_${NAMESPACE}_network-node*-errors.log | perl ${TOOLDIR}/backPresureStats.pl >> podlog_${NAMESPACE}/error_summary.txt
23+
cat podlog_${NAMESPACE}/podlog_${NAMESPACE}_network-node*-errors.log | perl ${TOOLDIR}/backPressureStats.pl >> podlog_${NAMESPACE}/error_summary.txt
2424

25-
for i in `seq 1 1 $NofNodes`
25+
for i in `seq 1 1 ${NofNodes}`
2626
do
2727
mkdir podlog_${NAMESPACE}/network-node${i}_logs
2828
mkdir podlog_${NAMESPACE}/network-node${i}_logs/stats
@@ -32,12 +32,12 @@ do
3232
sh ${TOOLDIR}/kubectlt -n ${NAMESPACE} exec -it network-node${i}-0 -c root-container -- bash -c "journalctl" > podlog_${NAMESPACE}/network-node${i}_logs/journalctl.log
3333

3434
sh ${TOOLDIR}/kubectlt -n ${NAMESPACE} exec -it network-node${i}-0 -c root-container -- \
35-
bash -c "cd $NODE_ROOT; cp gc.log* ./output/"
35+
bash -c "cd ${NODE_ROOT}; cp gc.log* ./output/"
3636

37-
sh ${TOOLDIR}/kubectlt -n ${NAMESPACE} cp -c root-container network-node${i}-0:$LOG_DIR podlog_${NAMESPACE}/network-node${i}_logs
38-
sh ${TOOLDIR}/kubectlt -n ${NAMESPACE} cp -c root-container network-node${i}-0:$STATS_DIR podlog_${NAMESPACE}/network-node${i}_logs/stats
39-
sh ${TOOLDIR}/kubectlt -n ${NAMESPACE} cp -c root-container network-node${i}-0:$CONFIG_DIR podlog_${NAMESPACE}/network-node${i}_logs/config
40-
sh ${TOOLDIR}/kubectlt -n ${NAMESPACE} cp -c root-container network-node${i}-0:$NODE_ROOT/config.txt podlog_${NAMESPACE}/network-node${i}_logs/config/config.txt
41-
sh ${TOOLDIR}/kubectlt -n ${NAMESPACE} cp -c root-container network-node${i}-0:$NODE_ROOT/settingsUsed.txt podlog_${NAMESPACE}/network-node${i}_logs/config/settingsUsed.txt
37+
sh ${TOOLDIR}/kubectlt -n ${NAMESPACE} cp -c root-container network-node${i}-0:${LOG_DIR} podlog_${NAMESPACE}/network-node${i}_logs
38+
sh ${TOOLDIR}/kubectlt -n ${NAMESPACE} cp -c root-container network-node${i}-0:${STATS_DIR} podlog_${NAMESPACE}/network-node${i}_logs/stats
39+
sh ${TOOLDIR}/kubectlt -n ${NAMESPACE} cp -c root-container network-node${i}-0:${CONFIG_DIR} podlog_${NAMESPACE}/network-node${i}_logs/config
40+
sh ${TOOLDIR}/kubectlt -n ${NAMESPACE} cp -c root-container network-node${i}-0:${NODE_ROOT}/config.txt podlog_${NAMESPACE}/network-node${i}_logs/config/config.txt
41+
sh ${TOOLDIR}/kubectlt -n ${NAMESPACE} cp -c root-container network-node${i}-0:${NODE_ROOT}/settingsUsed.txt podlog_${NAMESPACE}/network-node${i}_logs/config/settingsUsed.txt
4242

4343
done

.github/workflows/support/citr/log4j2.xml

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -192,15 +192,6 @@
192192
<!-- Beta Mirror -->
193193
<MarkerFilter marker="BETA_MIRROR_NODE" onMatch="ACCEPT" onMismatch="NEUTRAL"/>
194194

195-
<!-- FCMap -->
196-
<MarkerFilter marker="FCM_COPY" onMatch="DENY" onMismatch="NEUTRAL"/>
197-
<MarkerFilter marker="FCM_COPY_FROM" onMatch="DENY" onMismatch="NEUTRAL"/>
198-
<MarkerFilter marker="FCM_COPY_TO" onMatch="DENY" onMismatch="NEUTRAL"/>
199-
<MarkerFilter marker="FCM_DEMO" onMatch="DENY" onMismatch="NEUTRAL"/>
200-
<MarkerFilter marker="FCM_COPY_FROM_DIFF" onMatch="DENY" onMismatch="NEUTRAL"/>
201-
<MarkerFilter marker="FCM_COPY_TO_DIFF" onMatch="DENY" onMismatch="NEUTRAL"/>
202-
<MarkerFilter marker="FC_SERIALIZATION" onMatch="DENY" onMismatch="NEUTRAL"/>
203-
204195
<!-- Merkle Trees & Hashing -->
205196
<MarkerFilter marker="MERKLE_FORCE_FLUSH" onMatch="DENY" onMismatch="NEUTRAL"/>
206197
<MarkerFilter marker="MERKLE_HASHING" onMatch="DENY" onMismatch="NEUTRAL"/>
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
NAMESPACE=$1
22
NODE_ROOT=/opt/hgcapp/services-hedera/HapiApp2.0
3-
LOG_DIR=$NODE_ROOT/output
3+
LOG_DIR=${NODE_ROOT}/output
44

55

66
NofNodes=`kubectl -n ${NAMESPACE} get pods | grep 'network-node' | wc -l`
77

8-
for i in `seq 1 1 $NofNodes`
8+
for i in `seq 1 1 ${NofNodes}`
99
do
10-
kubectl -n ${NAMESPACE} exec -it network-node${i}-0 -c root-container -- bash -c "find $LOG_DIR -type f -name '*.log' -exec truncate -c -s 0 {} \;"
10+
kubectl -n ${NAMESPACE} exec -it network-node${i}-0 -c root-container -- bash -c "find ${LOG_DIR} -type f -name '*.log' -exec truncate -c -s 0 {} \;"
1111
done
Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
name: "ZXC: Build & Publish Hedera State Validator Uber JAR"
3+
4+
on:
5+
workflow_dispatch:
6+
inputs:
7+
ref:
8+
description: "Branch, tag, or commit to build"
9+
required: false
10+
type: string
11+
workflow_call:
12+
inputs:
13+
ref:
14+
description: "Branch, tag, or commit to build"
15+
required: false
16+
type: string
17+
outputs:
18+
gcs-uri:
19+
description: "GCS URI of the published uber JAR"
20+
value: ${{ jobs.build-publish.outputs.gcs-uri }}
21+
22+
permissions:
23+
contents: read
24+
id-token: write
25+
26+
defaults:
27+
run:
28+
shell: bash
29+
30+
jobs:
31+
build-publish:
32+
name: Build & Publish State Validator Uber JAR
33+
runs-on: hiero-citr-linux-medium
34+
35+
outputs:
36+
gcs-uri: ${{ steps.upload.outputs.gcs_uri || '' }}
37+
38+
steps:
39+
- name: Harden Runner
40+
uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
41+
with:
42+
egress-policy: audit
43+
44+
- name: Checkout Code
45+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
46+
with:
47+
fetch-depth: 0
48+
ref: ${{ inputs.ref || github.sha }}
49+
50+
- name: Set up Java
51+
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
52+
with:
53+
distribution: temurin
54+
java-version: "21"
55+
56+
- name: Set up Gradle
57+
uses: gradle/actions/setup-gradle@d156388eb19639ec20ade50009f3d1993974129d # v4.3.0
58+
with:
59+
gradle-home-cache-cleanup: true
60+
61+
- name: Build State Validator Uber shadowJar
62+
run: |
63+
./gradlew --no-daemon --stacktrace :hedera-state-validator:shadowJar
64+
65+
- name: Determine version and artifact
66+
id: version-and-artifact
67+
run: |
68+
set -euo pipefail
69+
FULL_VER=$(./gradlew --no-daemon :hedera-state-validator:properties | grep '^version:' | cut -d ' ' -f2)
70+
# Remove -SNAPSHOT suffix if present
71+
VER_WITHOUT_SNAPSHOT=${FULL_VER%-SNAPSHOT}
72+
# Extract major.minor (first two segments)
73+
MAJOR_MINOR=$(echo "$VER_WITHOUT_SNAPSHOT" | cut -d '.' -f1-2)
74+
75+
# Locate the Shadow (uber) JAR built by the module
76+
# Shadow defaults to "-all" classifier; pick the most recent matching jar
77+
ART_DIR="hedera-state-validator/build/libs"
78+
if [[ ! -d "${ART_DIR}" ]]; then
79+
echo "Artifact directory not found: ${ART_DIR}" >&2; exit 1
80+
fi
81+
JAR_PATH="$(ls -1t "${ART_DIR}"/*-all.jar 2>/dev/null | head -n1 || true)"
82+
if [[ -z "${JAR_PATH}" ]]; then
83+
# fallback to any jar if classifier is customized
84+
JAR_PATH="$(ls -1t "${ART_DIR}"/*.jar 2>/dev/null | head -n1 || true)"
85+
fi
86+
if [[ -z "${JAR_PATH}" ]]; then
87+
echo "No jar found in ${ART_DIR}" >&2; exit 1
88+
fi
89+
90+
DEST_NAME="hedera-state-validator-${MAJOR_MINOR}.jar"
91+
echo "full_ver=${FULL_VER}" >> "${GITHUB_OUTPUT}"
92+
echo "major_minor=${MAJOR_MINOR}" >> "${GITHUB_OUTPUT}"
93+
echo "jar_path=${JAR_PATH}" >> "${GITHUB_OUTPUT}"
94+
echo "dest_name=${DEST_NAME}" >> "${GITHUB_OUTPUT}"
95+
96+
- name: Authenticate to Google Cloud
97+
id: gcloud-auth
98+
uses: step-security/google-github-auth@40f6deebd366f16c782d7a0ad0844e3b96a032a6 # v2.1.10
99+
with:
100+
workload_identity_provider: "projects/235822363393/locations/global/workloadIdentityPools/hedera-builds-pool/providers/hedera-builds-gh-actions"
101+
service_account: "[email protected]"
102+
token_format: "access_token"
103+
create_credentials_file: true
104+
105+
- name: Setup Google Cloud SDK
106+
id: setup-gcloud
107+
uses: google-github-actions/setup-gcloud@77e7a554d41e2ee56fc945c52dfd3f33d12def9a # v2.1.4
108+
with:
109+
version: "latest"
110+
install_components: "gsutil"
111+
112+
- name: Upload to GCS
113+
id: upload
114+
env:
115+
SRC: ${{ steps.version-and-artifact.outputs.jar_path }}
116+
DEST_NAME: ${{ steps.version-and-artifact.outputs.dest_name }}
117+
BUCKET_PATH: "gs://hedera-ci-ephemeral-artifacts/hedera/hedera-state-validator"
118+
run: |
119+
set -euo pipefail
120+
echo "Source: ${SRC}"
121+
echo "Destination: ${BUCKET_PATH}/${DEST_NAME}"
122+
gsutil -m cp "${SRC}" "${BUCKET_PATH}/${DEST_NAME}"
123+
echo "gcs_uri=${BUCKET_PATH}/${DEST_NAME}" >> "${GITHUB_OUTPUT}"
124+
125+
- name: Summary
126+
run: |
127+
echo "### Published Hedera State Validator Uber JAR" >> "${GITHUB_STEP_SUMMARY}"
128+
echo "Version: ${{ steps.version-and-artifact.outputs.full_ver }}" >> "${GITHUB_STEP_SUMMARY}"
129+
echo "File: ${{ steps.version-and-artifact.outputs.dest_name }}" >> "${GITHUB_STEP_SUMMARY}"
130+
echo "GCS URI: ${{ steps.upload.outputs.gcs_uri }}" >> "${GITHUB_STEP_SUMMARY}"

0 commit comments

Comments
 (0)