Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
6c28228
Cleanup old channel properly after disconnect
satran004 Aug 9, 2025
01fc01e
Changes for Chainsync pipeline impl fix
satran004 Aug 9, 2025
19259e2
Add getLatestTip method
satran004 Aug 10, 2025
82c0056
Add getHeaderTip method
satran004 Aug 10, 2025
1b2cd93
Pipeline implementation
satran004 Aug 11, 2025
3301a88
graalvm metadata files
satran004 Aug 11, 2025
a9c490c
graalvm metadata files
satran004 Aug 11, 2025
dd005d6
Parallel processing of headers and block bodies
satran004 Aug 11, 2025
a3360e2
Add gap detection, continuity checks, and extended recovery logic.
satran004 Aug 13, 2025
1ead5f3
Add server notification for new blocks in steady state
satran004 Aug 13, 2025
7a93439
Fixed rollback. Cleanup all required keys
satran004 Aug 18, 2025
4448584
Fixed rollback
satran004 Aug 19, 2025
570fafe
Remove hardcoded first block logic and improve dynamic syncing
satran004 Aug 20, 2025
faef6fa
Fix: Header and body gap issue
satran004 Aug 30, 2025
e9aed06
Set start point as header tip instead of body tip
satran004 Aug 30, 2025
71df65d
Removed gap check in Yaci Node
satran004 Aug 31, 2025
1c49c58
Mismatch error fixed
satran004 Aug 31, 2025
f1b071c
Fix sync issues
satran004 Aug 31, 2025
092a5f9
Stale block observer and recovery added
satran004 Aug 31, 2025
b72d4d3
Update to steady state if within threshold from tip during restart
satran004 Aug 31, 2025
b00d4e4
findNextBlock is now based on slot instead of block number
satran004 Aug 31, 2025
f2f8005
Remove log
satran004 Aug 31, 2025
de21374
Slot based finder approach
satran004 Sep 1, 2025
ee702a3
Add preflight availability check
satran004 Sep 2, 2025
29830d6
Mainnet sync fix
satran004 Sep 2, 2025
e4e24b1
Remove legacy ChainState-related debug and test files.
satran004 Sep 5, 2025
4dc1f92
feat: Event framework and plugin implementation
satran004 Sep 6, 2025
dc5d2ab
Global priority ordering; async defaults to virtual threads; prune APIs
satran004 Sep 8, 2025
2b05002
Added mempool transaction event
satran004 Sep 8, 2025
7a6c3c8
Added mempool transaction event
satran004 Sep 8, 2025
f7bb07e
Fix build error
satran004 Sep 8, 2025
14c1d4e
Fix build error
satran004 Sep 8, 2025
a09ca73
Adjust sync phase transition logic based on remote tip distance.
satran004 Sep 11, 2025
02c0258
Disable test for DirectRocksDBChainState in HeaderTipSupport.
satran004 Sep 11, 2025
4cfe93a
Enable detailed test logging in build configuration
satran004 Sep 11, 2025
335ff55
Update GitHub Actions workflow to use JDK 21
satran004 Sep 11, 2025
b9331a0
Add SyncTipContext for cross-manager tip synchronization
satran004 Sep 11, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/snapshot_manual.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ jobs:
uses: actions/checkout@v2
with:
submodules: 'true'
- name: Set up JDK 11
- name: Set up JDK 21
uses: actions/setup-java@v2
with:
java-version: '11'
java-version: '21'
distribution: 'temurin'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
Expand Down
6 changes: 6 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,12 @@ subprojects {
// Make all tests use JUnit 5 (for all modules including application)
tasks.withType(Test) {
useJUnitPlatform()
testLogging {
events "started", "passed", "skipped", "failed"
exceptionFormat "full"
showStandardStreams = true
}

}
}

Expand Down
11 changes: 11 additions & 0 deletions core/bin/main/META-INF/native-image/yaci/jni-config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
[
{
"name" : "io.netty.channel.kqueue.KQueueStaticallyReferencedJniMethods"
},
{
"name" : "io.netty.channel.kqueue.Native"
},
{
"name" : "io.netty.channel.kqueue.BsdSocket"
}
]
14 changes: 14 additions & 0 deletions core/bin/main/META-INF/native-image/yaci/native-image.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
Args = --initialize-at-run-time=io.netty.channel.epoll.Epoll \
--initialize-at-run-time=io.netty.channel.epoll.Native \
--initialize-at-run-time=io.netty.channel.epoll.EpollEventLoop \
--initialize-at-run-time=io.netty.channel.epoll.EpollEventArray \
--initialize-at-run-time=io.netty.channel.DefaultFileRegion \
--initialize-at-run-time=io.netty.channel.kqueue.KQueueEventArray \
--initialize-at-run-time=io.netty.channel.kqueue.KQueueEventLoop \
--initialize-at-run-time=io.netty.channel.kqueue.Native \
--initialize-at-run-time=io.netty.channel.unix.Errors \
--initialize-at-run-time=io.netty.channel.unix.IovArray \
--initialize-at-run-time=io.netty.channel.unix.Limits \
--initialize-at-run-time=io.netty.util.internal.logging.Log4JLogger \
--initialize-at-run-time=io.netty.channel.kqueue.KQueue \
--initialize-at-run-time=io.netty.handler.ssl.BouncyCastleAlpnSslUtils
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
Args = --static --libc=musl --initialize-at-run-time=io.netty.channel.epoll.Epoll \
--initialize-at-run-time=io.netty.channel.epoll.Native \
--initialize-at-run-time=io.netty.channel.epoll.EpollEventLoop \
--initialize-at-run-time=io.netty.channel.epoll.EpollEventArray \
--initialize-at-run-time=io.netty.channel.DefaultFileRegion \
--initialize-at-run-time=io.netty.channel.kqueue.KQueueEventArray \
--initialize-at-run-time=io.netty.channel.kqueue.KQueueEventLoop \
--initialize-at-run-time=io.netty.channel.kqueue.Native \
--initialize-at-run-time=io.netty.channel.unix.Errors \
--initialize-at-run-time=io.netty.channel.unix.IovArray \
--initialize-at-run-time=io.netty.channel.unix.Limits \
--initialize-at-run-time=io.netty.util.internal.logging.Log4JLogger \
--initialize-at-run-time=io.netty.channel.kqueue.KQueue \
--initialize-at-run-time=io.netty.handler.ssl.BouncyCastleAlpnSslUtils
148 changes: 148 additions & 0 deletions core/bin/main/META-INF/native-image/yaci/reflect-config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
[
{
"name":"io.netty.buffer.AbstractByteBufAllocator",
"queryAllDeclaredMethods":true
},
{
"name":"io.netty.buffer.AbstractReferenceCountedByteBuf",
"fields":[{"name":"refCnt"}]
},
{
"name":"io.netty.buffer.PooledByteBufAllocator"
},
{
"name":"io.netty.channel.AbstractChannelHandlerContext",
"fields":[{"name":"handlerState"}]
},
{
"name":"io.netty.channel.ChannelHandlerAdapter",
"methods":[{"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }]
},
{
"name":"io.netty.channel.ChannelInboundHandlerAdapter",
"methods":[{"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelUnregistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelWritabilityChanged","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }, {"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }]
},
{
"name":"io.netty.channel.ChannelInitializer",
"methods":[{"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }]
},
{
"name":"io.netty.channel.ChannelOutboundBuffer",
"fields":[{"name":"totalPendingSize"}, {"name":"unwritable"}]
},
{
"name":"io.netty.channel.ChannelOutboundHandlerAdapter",
"methods":[{"name":"bind","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, {"name":"close","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, {"name":"connect","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, {"name":"deregister","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, {"name":"disconnect","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, {"name":"flush","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"read","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }]
},
{
"name":"io.netty.channel.DefaultChannelConfig",
"fields":[{"name":"autoRead"}, {"name":"writeBufferWaterMark"}]
},
{
"name":"io.netty.channel.DefaultChannelPipeline",
"fields":[{"name":"estimatorHandle"}]
},
{
"name":"io.netty.channel.DefaultChannelPipeline$HeadContext",
"methods":[{"name":"bind","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, {"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelUnregistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelWritabilityChanged","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"close","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, {"name":"connect","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, {"name":"deregister","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, {"name":"disconnect","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }, {"name":"flush","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"read","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, {"name":"write","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object","io.netty.channel.ChannelPromise"] }]
},
{
"name":"io.netty.channel.DefaultChannelPipeline$TailContext",
"methods":[{"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelUnregistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelWritabilityChanged","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }, {"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }]
},
{
"name":"io.netty.channel.DefaultFileRegion"
},
{
"name":"io.netty.channel.kqueue.KQueueDomainSocketChannel",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"io.netty.channel.kqueue.KQueueEventLoop",
"fields":[{"name":"wakenUp"}]
},
{
"name":"io.netty.channel.socket.nio.NioSocketChannel",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"io.netty.channel.unix.DatagramSocketAddress"
},
{
"name":"io.netty.channel.unix.DomainDatagramSocketAddress"
},
{
"name":"io.netty.channel.unix.FileDescriptor",
"fields":[{"name":"state"}]
},
{
"name":"io.netty.channel.unix.PeerCredentials"
},
{
"name":"io.netty.handler.codec.ByteToMessageDecoder",
"methods":[{"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }]
},
{
"name":"io.netty.handler.codec.MessageToByteEncoder",
"methods":[{"name":"write","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object","io.netty.channel.ChannelPromise"] }]
},
{
"name":"io.netty.util.AbstractReferenceCounted",
"fields":[{"name":"refCnt"}]
},
{
"name":"io.netty.util.DefaultAttributeMap",
"fields":[{"name":"attributes"}]
},
{
"name":"io.netty.util.NettyRuntime"
},
{
"name":"io.netty.util.Recycler$DefaultHandle",
"fields":[{"name":"state"}]
},
{
"name":"io.netty.util.ReferenceCountUtil",
"queryAllDeclaredMethods":true
},
{
"name":"io.netty.util.ResourceLeakDetector$DefaultResourceLeak",
"fields":[{"name":"droppedRecords"}, {"name":"head"}]
},
{
"name":"io.netty.util.concurrent.DefaultPromise",
"fields":[{"name":"result"}]
},
{
"name":"io.netty.util.concurrent.SingleThreadEventExecutor",
"fields":[{"name":"state"}, {"name":"threadProperties"}]
},
{
"name":"io.netty.util.internal.NativeLibraryUtil",
"methods":[{"name":"loadLibrary","parameterTypes":["java.lang.String","boolean"] }]
},
{
"name":"io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueColdProducerFields",
"fields":[{"name":"producerLimit"}]
},
{
"name":"io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueConsumerFields",
"fields":[{"name":"consumerIndex"}]
},
{
"name":"io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueProducerFields",
"fields":[{"name":"producerIndex"}]
},
{
"name":"io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueConsumerIndexField",
"fields":[{"name":"consumerIndex"}]
},
{
"name":"io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueProducerIndexField",
"fields":[{"name":"producerIndex"}]
},
{
"name":"io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueProducerLimitField",
"fields":[{"name":"producerLimit"}]
}
]
13 changes: 13 additions & 0 deletions core/bin/main/META-INF/native-image/yaci/resource-config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"resources": {
"includes": [
{
"pattern":"\\QMETA-INF/native/libnetty_transport_native_kqueue_aarch_64.dylib\\E"
},
{
"pattern":"\\QMETA-INF/native/libnetty_transport_native_kqueue_aarch_64.jnilib\\E"
}
],
"excludes": []
}
}
Loading