Skip to content

Commit d8f31c5

Browse files
authored
Merge branch 'master' into leo/db-ops
2 parents 9f49267 + 0310dfd commit d8f31c5

File tree

236 files changed

+6384
-1193
lines changed

Some content is hidden

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

236 files changed

+6384
-1193
lines changed

.github/workflows/builds.yml

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ on:
4343
type: boolean
4444
description: 'Build amd64 `without_adx` and `without_netgo_without_adx` images, and arm64 images'
4545
required: false
46+
private_build:
47+
type: boolean
48+
description: 'Build private images'
49+
required: false
4650

4751
jobs:
4852
# matrix_builder generates a matrix that includes the roles selected in the input
@@ -109,16 +113,30 @@ jobs:
109113
credentials_json: ${{ secrets.GCR_SERVICE_KEY_SECRET }}
110114
- name: Set up Google Cloud SDK
111115
uses: google-github-actions/setup-gcloud@v1
112-
- name: Authenticate docker with gcloud
116+
117+
- name: Authenticate Docker with gcloud
113118
run: |
114-
gcloud auth configure-docker
119+
if [[ "${{ github.event.inputs.private_build }}" == "true" ]]; then
120+
gcloud auth configure-docker us-central1-docker.pkg.dev
121+
else
122+
gcloud auth configure-docker
123+
fi
124+
125+
- name: Set CONTAINER_REGISTRY
126+
id: set-registry
127+
run: |
128+
if [[ "${{ github.event.inputs.private_build }}" == "true" ]]; then
129+
echo "CONTAINER_REGISTRY=${{ vars.PRIVATE_REGISTRY }}" >> $GITHUB_ENV
130+
else
131+
echo "CONTAINER_REGISTRY=${{ vars.PUBLIC_REGISTRY }}" >> $GITHUB_ENV
132+
fi
115133
116134
- name: Build/Push ${{ matrix.role }} amd64 images with adx (default)
117135
env:
118136
IMAGE_TAG: ${{ inputs.docker_tag }}
119137
CADENCE_DEPLOY_KEY: ${{ secrets.CADENCE_DEPLOY_KEY }}
120138
run: |
121-
make docker-build-${{ matrix.role }}-with-adx docker-push-${{ matrix.role }}-with-adx
139+
make docker-build-${{ matrix.role }}-with-adx docker-push-${{ matrix.role }}-with-adx CONTAINER_REGISTRY=$CONTAINER_REGISTRY
122140
123141
- name: Build/Push ${{ matrix.role }} amd64 images without netgo and without adx, arm64 images
124142
if: ${{ inputs.include_alternative_builds }}
@@ -128,7 +146,7 @@ jobs:
128146
run: |
129147
make docker-build-${{ matrix.role }}-without-adx docker-push-${{ matrix.role }}-without-adx \
130148
docker-build-${{ matrix.role }}-without-netgo-without-adx docker-push-${{ matrix.role }}-without-netgo-without-adx \
131-
docker-cross-build-${{ matrix.role }}-arm docker-push-${{ matrix.role }}-arm
149+
docker-cross-build-${{ matrix.role }}-arm docker-push-${{ matrix.role }}-arm CONTAINER_REGISTRY=$CONTAINER_REGISTRY
132150
133151
134152

.github/workflows/ci.yml

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,19 @@ jobs:
5555
# https://github.com/golangci/golangci-lint-action/issues/244
5656
skip-cache: true
5757

58-
5958
tidy:
6059
name: Tidy
6160
runs-on: ubuntu-latest
6261
steps:
6362
- name: Checkout repo
6463
uses: actions/checkout@v3
64+
65+
- name: Setup private build environment
66+
if: ${{ vars.PRIVATE_BUILDS_SUPPORTED == 'true' }}
67+
uses: ./actions/private-setup
68+
with:
69+
cadence_deploy_key: ${{ secrets.CADENCE_DEPLOY_KEY }}
70+
6571
- name: Setup Go
6672
uses: actions/setup-go@v4
6773
timeout-minutes: 10 # fail fast. sometimes this step takes an extremely long time
@@ -139,6 +145,13 @@ jobs:
139145
steps:
140146
- name: Checkout repo
141147
uses: actions/checkout@v3
148+
149+
- name: Setup private build environment
150+
if: ${{ vars.PRIVATE_BUILDS_SUPPORTED == 'true' }}
151+
uses: ./actions/private-setup
152+
with:
153+
cadence_deploy_key: ${{ secrets.CADENCE_DEPLOY_KEY }}
154+
142155
- name: Setup Go
143156
uses: actions/setup-go@v4
144157
timeout-minutes: 10 # fail fast. sometimes this step takes an extremely long time
@@ -178,6 +191,13 @@ jobs:
178191
steps:
179192
- name: Checkout repo
180193
uses: actions/checkout@v3
194+
195+
- name: Setup private build environment
196+
if: ${{ vars.PRIVATE_BUILDS_SUPPORTED == 'true' }}
197+
uses: ./actions/private-setup
198+
with:
199+
cadence_deploy_key: ${{ secrets.CADENCE_DEPLOY_KEY }}
200+
181201
- name: Setup Go
182202
uses: actions/setup-go@v4
183203
timeout-minutes: 10 # fail fast. sometimes this step takes an extremely long time
@@ -216,6 +236,13 @@ jobs:
216236
with:
217237
# all tags are needed for integration tests
218238
fetch-depth: 0
239+
240+
- name: Setup private build environment
241+
if: ${{ vars.PRIVATE_BUILDS_SUPPORTED == 'true' }}
242+
uses: ./actions/private-setup
243+
with:
244+
cadence_deploy_key: ${{ secrets.CADENCE_DEPLOY_KEY }}
245+
219246
- name: Setup Go
220247
uses: actions/setup-go@v4
221248
timeout-minutes: 10 # fail fast. sometimes this step takes an extremely long time
@@ -255,9 +282,17 @@ jobs:
255282
targets: ${{ fromJSON(needs.create-integration-dynamic-test-matrix.outputs.dynamic-matrix)}}
256283
## need to set image explicitly due to GitHub logging issue as described in https://github.com/onflow/flow-go/pull/3087#issuecomment-1234383202
257284
runs-on: ${{ matrix.targets.runner }}
285+
258286
steps:
259287
- name: Checkout repo
260288
uses: actions/checkout@v3
289+
290+
- name: Setup private build environment
291+
if: ${{ vars.PRIVATE_BUILDS_SUPPORTED == 'true' }}
292+
uses: ./actions/private-setup
293+
with:
294+
cadence_deploy_key: ${{ secrets.CADENCE_DEPLOY_KEY }}
295+
261296
- name: Setup Go
262297
uses: actions/setup-go@v4
263298
timeout-minutes: 10 # fail fast. sometimes this step takes an extremely long time
@@ -348,6 +383,13 @@ jobs:
348383
with:
349384
# all tags are needed for integration tests
350385
fetch-depth: 0
386+
387+
- name: Setup private build environment
388+
if: ${{ vars.PRIVATE_BUILDS_SUPPORTED == 'true' }}
389+
uses: ./actions/private-setup
390+
with:
391+
cadence_deploy_key: ${{ secrets.CADENCE_DEPLOY_KEY }}
392+
351393
- name: Setup Go
352394
uses: actions/setup-go@v4
353395
timeout-minutes: 10 # fail fast. sometimes this step takes an extremely long time

Makefile

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ IMAGE_TAG_ARM := $(IMAGE_TAG)-arm
2626
# Name of the cover profile
2727
COVER_PROFILE := coverage.txt
2828
# Disable go sum database lookup for private repos
29-
GOPRIVATE=github.com/dapperlabs/*
29+
GOPRIVATE=github.com/onflow/*-internal
3030
# OS
3131
UNAME := $(shell uname)
3232

@@ -138,8 +138,8 @@ endif
138138

139139
.PHONY: generate-openapi
140140
generate-openapi:
141-
swagger-codegen generate -l go -i https://raw.githubusercontent.com/onflow/flow/master/openapi/access.yaml -D packageName=models,modelDocs=false,models -o engine/access/rest/models;
142-
go fmt ./engine/access/rest/models
141+
swagger-codegen generate -l go -i https://raw.githubusercontent.com/onflow/flow/master/openapi/access.yaml -D packageName=models,modelDocs=false,models -o engine/access/rest/http/models;
142+
go fmt ./engine/access/rest/http/models
143143

144144
.PHONY: generate
145145
generate: generate-proto generate-mocks generate-fvm-env-wrappers
@@ -203,10 +203,11 @@ generate-mocks: install-mock-generators
203203
mockery --name 'API' --dir="./engine/protocol" --case=underscore --output="./engine/protocol/mock" --outpkg="mock"
204204
mockery --name '.*' --dir="./engine/access/state_stream" --case=underscore --output="./engine/access/state_stream/mock" --outpkg="mock"
205205
mockery --name 'BlockTracker' --dir="./engine/access/subscription" --case=underscore --output="./engine/access/subscription/mock" --outpkg="mock"
206+
mockery --name 'DataProvider' --dir="./engine/access/rest/websockets/data_providers" --case=underscore --output="./engine/access/rest/websockets/data_providers/mock" --outpkg="mock"
207+
mockery --name 'DataProviderFactory' --dir="./engine/access/rest/websockets/data_providers" --case=underscore --output="./engine/access/rest/websockets/data_providers/mock" --outpkg="mock"
206208
mockery --name 'ExecutionDataTracker' --dir="./engine/access/subscription" --case=underscore --output="./engine/access/subscription/mock" --outpkg="mock"
207209
mockery --name 'ConnectionFactory' --dir="./engine/access/rpc/connection" --case=underscore --output="./engine/access/rpc/connection/mock" --outpkg="mock"
208210
mockery --name 'Communicator' --dir="./engine/access/rpc/backend" --case=underscore --output="./engine/access/rpc/backend/mock" --outpkg="mock"
209-
210211
mockery --name '.*' --dir=model/fingerprint --case=underscore --output="./model/fingerprint/mock" --outpkg="mock"
211212
mockery --name 'ExecForkActor' --structname 'ExecForkActorMock' --dir=module/mempool/consensus/mock/ --case=underscore --output="./module/mempool/consensus/mock/" --outpkg="mock"
212213
mockery --name '.*' --dir=engine/verification/fetcher/ --case=underscore --output="./engine/verification/fetcher/mock" --outpkg="mockfetcher"
@@ -857,7 +858,8 @@ docker-all-tools: tool-util tool-remove-execution-fork
857858

858859
PHONY: docker-build-util
859860
docker-build-util:
860-
docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/util --build-arg GOARCH=$(GOARCH) --build-arg VERSION=$(IMAGE_TAG) --build-arg CGO_FLAG=$(CRYPTO_FLAG) --target production \
861+
docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/util --build-arg GOARCH=$(GOARCH) --build-arg VERSION=$(IMAGE_TAG) --build-arg CGO_FLAG=$(DISABLE_ADX) --target production \
862+
--secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \
861863
-t "$(CONTAINER_REGISTRY)/util:latest" \
862864
-t "$(CONTAINER_REGISTRY)/util:$(IMAGE_TAG)" .
863865

access/handler.go

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1066,7 +1066,7 @@ func (h *Handler) SubscribeBlocksFromStartBlockID(request *access.SubscribeBlock
10661066
}
10671067

10681068
sub := h.api.SubscribeBlocksFromStartBlockID(stream.Context(), startBlockID, blockStatus)
1069-
return subscription.HandleSubscription(sub, h.handleBlocksResponse(stream.Send, request.GetFullBlockResponse(), blockStatus))
1069+
return subscription.HandleRPCSubscription(sub, h.handleBlocksResponse(stream.Send, request.GetFullBlockResponse(), blockStatus))
10701070
}
10711071

10721072
// SubscribeBlocksFromStartHeight handles subscription requests for blocks started from block height.
@@ -1093,7 +1093,7 @@ func (h *Handler) SubscribeBlocksFromStartHeight(request *access.SubscribeBlocks
10931093
}
10941094

10951095
sub := h.api.SubscribeBlocksFromStartHeight(stream.Context(), request.GetStartBlockHeight(), blockStatus)
1096-
return subscription.HandleSubscription(sub, h.handleBlocksResponse(stream.Send, request.GetFullBlockResponse(), blockStatus))
1096+
return subscription.HandleRPCSubscription(sub, h.handleBlocksResponse(stream.Send, request.GetFullBlockResponse(), blockStatus))
10971097
}
10981098

10991099
// SubscribeBlocksFromLatest handles subscription requests for blocks started from latest sealed block.
@@ -1120,7 +1120,7 @@ func (h *Handler) SubscribeBlocksFromLatest(request *access.SubscribeBlocksFromL
11201120
}
11211121

11221122
sub := h.api.SubscribeBlocksFromLatest(stream.Context(), blockStatus)
1123-
return subscription.HandleSubscription(sub, h.handleBlocksResponse(stream.Send, request.GetFullBlockResponse(), blockStatus))
1123+
return subscription.HandleRPCSubscription(sub, h.handleBlocksResponse(stream.Send, request.GetFullBlockResponse(), blockStatus))
11241124
}
11251125

11261126
// handleBlocksResponse handles the subscription to block updates and sends
@@ -1179,7 +1179,7 @@ func (h *Handler) SubscribeBlockHeadersFromStartBlockID(request *access.Subscrib
11791179
}
11801180

11811181
sub := h.api.SubscribeBlockHeadersFromStartBlockID(stream.Context(), startBlockID, blockStatus)
1182-
return subscription.HandleSubscription(sub, h.handleBlockHeadersResponse(stream.Send))
1182+
return subscription.HandleRPCSubscription(sub, h.handleBlockHeadersResponse(stream.Send))
11831183
}
11841184

11851185
// SubscribeBlockHeadersFromStartHeight handles subscription requests for block headers started from block height.
@@ -1206,7 +1206,7 @@ func (h *Handler) SubscribeBlockHeadersFromStartHeight(request *access.Subscribe
12061206
}
12071207

12081208
sub := h.api.SubscribeBlockHeadersFromStartHeight(stream.Context(), request.GetStartBlockHeight(), blockStatus)
1209-
return subscription.HandleSubscription(sub, h.handleBlockHeadersResponse(stream.Send))
1209+
return subscription.HandleRPCSubscription(sub, h.handleBlockHeadersResponse(stream.Send))
12101210
}
12111211

12121212
// SubscribeBlockHeadersFromLatest handles subscription requests for block headers started from latest sealed block.
@@ -1233,7 +1233,7 @@ func (h *Handler) SubscribeBlockHeadersFromLatest(request *access.SubscribeBlock
12331233
}
12341234

12351235
sub := h.api.SubscribeBlockHeadersFromLatest(stream.Context(), blockStatus)
1236-
return subscription.HandleSubscription(sub, h.handleBlockHeadersResponse(stream.Send))
1236+
return subscription.HandleRPCSubscription(sub, h.handleBlockHeadersResponse(stream.Send))
12371237
}
12381238

12391239
// handleBlockHeadersResponse handles the subscription to block updates and sends
@@ -1293,7 +1293,7 @@ func (h *Handler) SubscribeBlockDigestsFromStartBlockID(request *access.Subscrib
12931293
}
12941294

12951295
sub := h.api.SubscribeBlockDigestsFromStartBlockID(stream.Context(), startBlockID, blockStatus)
1296-
return subscription.HandleSubscription(sub, h.handleBlockDigestsResponse(stream.Send))
1296+
return subscription.HandleRPCSubscription(sub, h.handleBlockDigestsResponse(stream.Send))
12971297
}
12981298

12991299
// SubscribeBlockDigestsFromStartHeight handles subscription requests for lightweight blocks started from block height.
@@ -1320,7 +1320,7 @@ func (h *Handler) SubscribeBlockDigestsFromStartHeight(request *access.Subscribe
13201320
}
13211321

13221322
sub := h.api.SubscribeBlockDigestsFromStartHeight(stream.Context(), request.GetStartBlockHeight(), blockStatus)
1323-
return subscription.HandleSubscription(sub, h.handleBlockDigestsResponse(stream.Send))
1323+
return subscription.HandleRPCSubscription(sub, h.handleBlockDigestsResponse(stream.Send))
13241324
}
13251325

13261326
// SubscribeBlockDigestsFromLatest handles subscription requests for lightweight block started from latest sealed block.
@@ -1347,7 +1347,7 @@ func (h *Handler) SubscribeBlockDigestsFromLatest(request *access.SubscribeBlock
13471347
}
13481348

13491349
sub := h.api.SubscribeBlockDigestsFromLatest(stream.Context(), blockStatus)
1350-
return subscription.HandleSubscription(sub, h.handleBlockDigestsResponse(stream.Send))
1350+
return subscription.HandleRPCSubscription(sub, h.handleBlockDigestsResponse(stream.Send))
13511351
}
13521352

13531353
// handleBlockDigestsResponse handles the subscription to block updates and sends
@@ -1433,17 +1433,21 @@ func (h *Handler) SendAndSubscribeTransactionStatuses(
14331433
sub := h.api.SubscribeTransactionStatuses(ctx, &tx, request.GetEventEncodingVersion())
14341434

14351435
messageIndex := counters.NewMonotonousCounter(0)
1436-
return subscription.HandleSubscription(sub, func(txResults []*TransactionResult) error {
1436+
return subscription.HandleRPCSubscription(sub, func(txResults []*TransactionResult) error {
14371437
for i := range txResults {
1438-
value := messageIndex.Increment()
1438+
index := messageIndex.Value()
1439+
if ok := messageIndex.Set(index + 1); !ok {
1440+
return status.Errorf(codes.Internal, "message index already incremented to %d", messageIndex.Value())
1441+
}
14391442

14401443
err = stream.Send(&access.SendAndSubscribeTransactionStatusesResponse{
14411444
TransactionResults: TransactionResultToMessage(txResults[i]),
1442-
MessageIndex: value,
1445+
MessageIndex: index,
14431446
})
14441447
if err != nil {
14451448
return rpc.ConvertError(err, "could not send response", codes.Internal)
14461449
}
1450+
14471451
}
14481452

14491453
return nil

actions/private-setup/action.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: "Private Build Setup"
2+
description: "Checks and configures the environment for building private dependencies"
3+
inputs:
4+
cadence_deploy_key:
5+
description: "Deploy Key for Private Cadence Repo"
6+
required: true
7+
go_private_value:
8+
description: "The value for GOPRIVATE"
9+
required: false
10+
default: "github.com/onflow/*-internal"
11+
runs:
12+
using: "composite"
13+
steps:
14+
- name: Load deploy key
15+
uses: webfactory/[email protected]
16+
with:
17+
ssh-private-key: "${{ inputs.cadence_deploy_key }}"
18+
known-hosts: "github.com"
19+
20+
- name: Configure git for SSH
21+
shell: bash
22+
run: |
23+
git config --global url."[email protected]:".insteadOf "https://github.com/"
24+
25+
- name: Configure GOPRIVATE env
26+
shell: bash
27+
run: |
28+
echo "GOPRIVATE=${{ inputs.go_private_value }}" >> $GITHUB_ENV
29+

admin/README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,3 +115,8 @@ curl localhost:9002/admin/run_command -H 'Content-Type: application/json' -d '{"
115115
curl localhost:9002/admin/run_command -H 'Content-Type: application/json' -d '{"commandName": "protocol-snapshot"}'
116116
curl localhost:9002/admin/run_command -H 'Content-Type: application/json' -d '{"commandName": "protocol-snapshot", "data": { "blocks-to-skip": 10 }}'
117117
```
118+
119+
### To backfill transaction error messages
120+
```
121+
curl localhost:9002/admin/run_command -H 'Content-Type: application/json' -d '{"commandName": "backfill-tx-error-messages", "data": { "start-height": 340, "end-height": 343, "execution-node-ids":["ec7b934df29248d574ae1cc33ae77f22f0fcf96a79e009224c46374d1837824e", "8cbdc8d24a28899a33140cb68d4146cd6f2f6c18c57f54c299f26351d126919e"] }}'
122+
```

0 commit comments

Comments
 (0)