Skip to content

Commit

Permalink
Merge branch 'develop' into ata-creation
Browse files Browse the repository at this point in the history
  • Loading branch information
silaslenihan committed Feb 12, 2025
2 parents 96d5942 + 6fb8bbd commit 0843bf0
Show file tree
Hide file tree
Showing 13 changed files with 418 additions and 36 deletions.
16 changes: 8 additions & 8 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
- uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5
- name: cache docker build image
id: cache-image
uses: actions/cache@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
with:
path: contracts/docker-build.tar
key: ${{ runner.os }}-docker-pnpm-build-${{ needs.get_projectserum_version.outputs.projectserum_version }}-${{ hashFiles('**/Cargo.lock') }}
Expand All @@ -47,18 +47,18 @@ jobs:
steps:
- uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5
- name: Cache cargo target dir
uses: actions/cache@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
with:
path: contracts/target
key: ${{ runner.os }}-v2-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
- name: Cache hello-world target dir
uses: actions/cache@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
with:
path: contracts/examples/hello-world/target
key: ${{ runner.os }}-v2-cargo-build-target-hello-world-${{ hashFiles('**/Cargo.lock') }}
- name: cache docker build image
id: cache-image
uses: actions/cache@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
with:
path: contracts/docker-build.tar
key: ${{ runner.os }}-docker-pnpm-build-${{ needs.get_projectserum_version.outputs.projectserum_version }}-${{ hashFiles('**/Cargo.lock') }}
Expand Down Expand Up @@ -92,13 +92,13 @@ jobs:
steps:
- uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5
- name: Cache cargo target dir
uses: actions/cache@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
with:
path: contracts/target
key: ${{ runner.os }}-v2-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
- name: cache docker build image
id: cache-image
uses: actions/cache@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
with:
path: contracts/docker-build.tar
key: ${{ runner.os }}-docker-pnpm-build-${{ needs.get_projectserum_version.outputs.projectserum_version }}-${{ hashFiles('**/Cargo.lock') }}
Expand Down Expand Up @@ -133,14 +133,14 @@ jobs:
uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5

- name: Cache cargo target dir
uses: actions/cache@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
with:
path: contracts/target
key: ${{ runner.os }}-v2-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}

- name: cache docker build image
id: cache-image
uses: actions/cache@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
with:
fail-on-cache-miss: true
path: contracts/docker-build.tar
Expand Down
4 changes: 3 additions & 1 deletion .mockery.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,6 @@ packages:
dir: "pkg/solana/logpoller"
filename: mock_orm.go
mockname: MockORM

github.com/smartcontractkit/chainlink-solana/pkg/solana/chainreader:
interfaces:
EventsReader:
3 changes: 3 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ module github.com/smartcontractkit/chainlink-solana
go 1.23.3

require (
github.com/cometbft/cometbft v0.37.5
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc
github.com/gagliardetto/binary v0.8.0
github.com/gagliardetto/gofuzz v1.2.2
Expand Down Expand Up @@ -50,6 +51,8 @@ require (
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
github.com/gabriel-vasile/mimetype v1.4.6 // indirect
github.com/go-json-experiment/json v0.0.0-20231102232822-2e55bd4e08b0 // indirect
github.com/go-kit/log v0.2.1 // indirect
github.com/go-logfmt/logfmt v0.5.1 // indirect
github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-ole/go-ole v1.3.0 // indirect
Expand Down
4 changes: 4 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -168,9 +168,13 @@ github.com/go-json-experiment/json v0.0.0-20231102232822-2e55bd4e08b0 h1:ymLjT4f
github.com/go-json-experiment/json v0.0.0-20231102232822-2e55bd4e08b0/go.mod h1:6daplAwHHGbUGib4990V3Il26O0OC4aRyvewaaAihaA=
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU=
github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0=
github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA=
github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
Expand Down
2 changes: 1 addition & 1 deletion integration-tests/testconfig/default.toml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ inside_k8 = false
network = "localnet"
user = "default"
stateful_db = false
devnet_image = "anzaxyz/agave:v2.0.24"
devnet_image = "anzaxyz/agave:v2.1.11"

[OCR2]
node_count = 6
Expand Down
4 changes: 4 additions & 0 deletions pkg/solana/chain.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ import (

type LogPoller interface {
Start(context.Context) error
Ready() error
Close() error
RegisterFilter(ctx context.Context, filter logpoller.Filter) error
UnregisterFilter(ctx context.Context, name string) error
Expand Down Expand Up @@ -552,6 +553,9 @@ func (c *chain) Close() error {
c.lggr.Debug("Stopping multinode")
closeAll = append(closeAll, c.multiNode, c.txSender)
}
if c.lp.Ready() == nil {
c.lp.Close()
}
return services.CloseAll(closeAll...)
})
}
Expand Down
29 changes: 23 additions & 6 deletions pkg/solana/chainreader/chain_reader.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ import (
)

type EventsReader interface {
Start(ctx context.Context) error
Ready() error
RegisterFilter(context.Context, logpoller.Filter) error
FilteredLogs(context.Context, []query.Expression, query.LimitAndSort, string) ([]logpoller.Log, error)
}
Expand Down Expand Up @@ -115,13 +117,25 @@ func (s *ContractReaderService) Name() string {
// and error.
func (s *ContractReaderService) Start(ctx context.Context) error {
return s.StartOnce(ServiceName, func() error {
if len(s.filters) == 0 {
// No dependency on EventReader
return nil
}
if s.reader.Ready() != nil {
// Start EventReader if it hasn't already been
// Lazily starting it here rather than earlier, since nodes running only ordinary DF jobs don't need it
err := s.reader.Start(ctx)
if err != nil &&
!strings.Contains(err.Error(), "has already been started") { // in case another thread calls Start() after Ready() returns
return fmt.Errorf("%d event filters defined in ChainReader config, but unable to start event reader: %w", len(s.filters), err)
}
}
// registering filters needs a context so we should be able to use the start function context.
for _, filter := range s.filters {
if err := s.reader.RegisterFilter(ctx, filter); err != nil {
return err
}
}

return nil
})
}
Expand Down Expand Up @@ -533,8 +547,8 @@ func (s *ContractReaderService) addAddressResponseHardCoderModifier(namespace st
func (s *ContractReaderService) addEventRead(
namespace, genericName string,
contractAddress solana.PublicKey,
_ codec.IDL,
_ codec.IdlEvent,
idl codec.IDL,
eventIdl codec.IdlEvent,
readDefinition config.ReadDefinition,
events EventsReader,
) error {
Expand All @@ -546,7 +560,8 @@ func (s *ContractReaderService) addEventRead(
applyIndexedFieldTuple(mappedTuples, subKeys, readDefinition.IndexedField2, 2)
applyIndexedFieldTuple(mappedTuples, subKeys, readDefinition.IndexedField3, 3)

filter := toLPFilter(readDefinition.PollingFilter, contractAddress, subKeys[:])
filter := toLPFilter(readDefinition.PollingFilter, contractAddress, subKeys[:],
codec.EventIDLTypes{Event: eventIdl, Types: idl.Types})

s.filters = append(s.filters, filter)
s.bdRegistry.AddReadBinding(namespace, genericName, newEventReadBinding(
Expand All @@ -565,12 +580,14 @@ func toLPFilter(
f *config.PollingFilter,
address solana.PublicKey,
subKeyPaths [][]string,
eventIdl codec.EventIDLTypes,
) logpoller.Filter {
return logpoller.Filter{
Address: logpoller.PublicKey(address),
EventName: f.EventName,
EventSig: logpoller.EventSignature([]byte(f.EventName)[:logpoller.EventSignatureLength]),
SubkeyPaths: logpoller.SubKeyPaths(subKeyPaths),
EventSig: logpoller.NewEventSignatureFromName(f.EventName),
EventIdl: logpoller.EventIdl(eventIdl),
SubkeyPaths: subKeyPaths,
Retention: f.Retention,
MaxLogsKept: f.MaxLogsKept,
}
Expand Down
Loading

0 comments on commit 0843bf0

Please sign in to comment.