Releases: itzmeanjan/harmony
Integrated pub0sub, new graphql query methods
What's new ?
- I'm now using Pub/Sub Hub
0hub
for publishing transactions joining/ leaving {pending, queued} pool - Added new graphql query methods for finding out all txs waiting in {pending, queued} pool with gas price >= or <= specified one
- Now transaction gas price can be queried in numeric form, using graphql field
gasPriceGwei
Possible race condition eliminated, came from dependency
What's new ?
Just a dependency version update, which introduced one race condition.
Library
pubsub
was not handling access to shared variable with locks, was resolved here ✌️
All set ✅
Swapped out Redis Pub/Sub, now using `pubsub`
What's new ? 🤔
Previously for communicating new tx(s) ( joining/ leaving mempool ) to clients subscribing to various topics, Redis Pub/Sub was used. Recently I also worked on developing one in-app messaging library for Go projects called pubsub
, which leverages native Go functionalities for enabling in-app message passing in following patterns
- SPSC
- SPMC
- MPSC
- MPMC
You can read more about that library here
I decided to use pubsub
, replacing Redis Pub/Sub. It after through testing everything seemed to fit well.
And here's release flaunting pubsub
in harmony
🔥
✌️
Releasing v0.9.2
What's new ? 🤔
- Cleans up occupied memory, used for keeping track of
dropped
/confirmed
/unstuck
tx(s) - Overtime this memory usage won't become a problem anymore
- After 1 hour tracked txHashes are pruned as of now, which can be made more flexible 🧐
Released v0.9.1 with go routine supervisor
What's new ? 🤔
Just added one go routine supervisor go routine, which will keep track of block header listener worker's health & if header listener dies in mid, new worker to be spawn up to take its place after a while. It'll also process those blocks which were produced during offtime.
Releasing v0.9.0
What's new ? 🤔
- Consider slowly propagated tx(s), using buffered queue of tx(s) which are included in mined block, but could not be found in mempool immediately
- Prune them later when they're propagated through network & received by
harmony
Solving dangling tx(s) issue, which are actually mined, but used to be considered as pending
Improved stat API
What's new ?
/v1/stat
API has been updated to include more info
{
"pendingPoolSize": 113569,
"queuedPoolSize": 22768,
"uptime": "14h59m12.066436482s",
"processed": 822953,
"latestBlock": 12261127,
"latestSeenAgo": "7.876590164s",
"networkID": 1
}
First production grade release 🥳
What's new ?
- After extensively running it with Ethereum Mainnet, under high tx pressure, it has shown good performance while processing inbound/ outbound tx(s) 😎
- Also packs lots of improvement in how state is managed in each of pending/ queued pool
- All operations are concurrent safe, with out using any locking primitives, all powered by go routines & channels
- Using better data structures, give us better performance
- You can also ask
harmony
to not consume whole memory, by setting {Pending, Queued}PoolSize fields
Releasing v0.7.0
What's new ? 🥳
- Avoiding lock-contention as much as possible, using channels more
- Lazily prune pending/ queued pool state
- Subscribe to block header(s) for learning about which block is including which tx(s) & prune those if seen in mempool
- All utility methods build on top of mempool, will be leveraging multiple cores ( if available )
✌️
Releasing v0.6.0
What's new ?
- Improved in-memory state management 🥳
- Response time lesser than before, as lots of queries are ready to answered ✅
- Overall better performance that before
- Now P2P network's peer connections are protected with
NOISE