Releases: bestarch-ae/cacherpc
Releases · bestarch-ae/cacherpc
0.2.13
Highlights:
- Added support for
X-Request-ID
HTTP header: if the header is present in client request, it will be forwarded to upstream, if the header is absent, then the cacher will generate it locally and attach it outbound requests, and even cache hits responses - Updated project dependencies, particularly actix-web related ones
What's Changed
- Added X-Request-ID header + updated dependencies by @bobs4462 in #248
- Modified x-request-id to support cache hits as well by @bobs4462 in #249
Full Changelog: 0.2.12...0.2.13
0.2.12
Highlights
- Added new command for forcing re-connection of websockets. The command for re-connection has three modes, namely:
cache-rpc force-reconnect init <delay sec> <interval sec>
- will initiate re-connection, starting after delay seconds, and performing 1 re-connection every interval secondscache-rpc force-reconnect status
- get status of reconnection, i.e. whether it's running, number of re-connection done/remainingcache-rpc force-reconnect abort
- stop re-connection process, reports how many have been performed and how many remain
- Added 2 metrics to indicate re-connection progress:
forced_reconnections_remaining
- number of re-connection to perform yet,forced_reconnections_finished
- number of re-connections already performed - Made wide-filter based program accounts prefetching (#243) to be an optional feature, now by default cache-rpc will start with this feature disabled, while superset based request serving will still be enabled without an option to turn it off
- Added new command for turning on the feature for wide-filter based
getProgramAccounts
requests, which has 3 modes of operation:cache-rpc wide-filters on
- turns the account prefetching for given program with wider filtercache-rpc wide-filters off
- turns the above feature offcache-rpc wide-filters status
- shows the current status of the feature
- Added new metric for counting the number of self initiated
getProgramAccounts
requests -self_initiated_gpa
What's Changed
- Implemented support for additional ws-reconnection command by @bobs4462 in #245
- Made wide filters based gpa requests optional by @bobs4462 in #246
Full Changelog: 0.2.11...0.2.12
0.2.11
Highlights
- Main and the biggest change of this release is the way that
getProgramAccounts
are handled. The following logic has been implemented- If the
getProgramAccount
request is made with filter, and no cache entry is found for the given filter, then search for existence of this filter's superset, i.e. a different filter which when applied to all accounts of the program, will produce a subset of it which will include the accounts for the original filter (which was present in request). Such a filter is a less restrictive one. If found, then the list of accounts is filtered in-place by cacherpc itself before being served to client. - If superset filter cannot be found in cache, then try to search for valid intersections of the requested filter with others present in cache, i.e. new filter which will be a superset of the original filter in request.
- In case such an intersection can be found, a separate asynchronous gPA request is made to cluster/validator, which is identical to the one made by client, except for the filter.
- The original request is also made, as cacherpc cannot wait for second request to finish and should start streaming data to client as soon as possible
- The result of second request (with superset filter) is saved to cache, and should prevent future cache misses
- When an entry for the given filter is not found in cache, but the request still can be served from superset, then the ttl for the superset filter will be reset, and not for the originally requested filter, so that hot supersets will linger for long time in cache.
- If the
- Refactored
pubsub
module, splitting it into several files, for better maintainability
What's Changed
- Refactored pubsub module by @bobs4462 in #244
- Implemented optimized filter based caching for gPA by @bobs4462 in #243
Full Changelog: 0.2.10...0.2.11
0.2.10
Highlights
- Added handling of getIdentity method
- In order to enable cacherpc service to serve
getIdentity
requests, one should start it with--identity <public key>
option - If the
identity
option is not provided, all requests are forwarded to validators as usual
What's Changed
- Support getIdentity method by @bobs4462 in #242
Full Changelog: 0.2.9...0.2.10
0.2.9
Highlights
- Fixed the
content-type
header guard in request handler, so that headers likeContent-Type: application-json;charset=utf-8
will be accepted
What's Changed
- Fixed content-type header guard for request handler by @bobs4462 in #241
Full Changelog: 0.2.8...0.2.9
0.2.8
Highlights
- Added
X-Cache-Request-Header
(describing json-rpc method) topassthrough
requests,getAccountsInfo
andgetProgramAccounts
already include this header.
What's Changed
- Extra request header to differentiate json-rpc methods by @bobs4462 in #240
Full Changelog: 0.2.7...0.2.8
0.2.7
0.2.6
Highlights
- Bugfix: slot number not being saved for gPA requests made with
withContext
parameter - Implemented cache overwrite control so that new account entries won't be overwritten with more outdated data
What's Changed
- Fix: gPA slot not being saved immediately, if request made withContext by @bobs4462 in #236
- chore: bump version to 0.2.6 by @bobs4462 in #237
Full Changelog: 0.2.5...0.2.6
0.2.5
Highlights:
- Fixed bug, when cache miss occured for
getProgramAccounts
request, when requesting the same program withwithContext
flag being explicitly set to false.
What's Changed
- Hotfix: correct handling of withContext flag for gPA by @bobs4462 in #234
- chore: version bump to 0.2.5 by @bobs4462 in #235
Full Changelog: 0.2.4...0.2.5
0.2.4
Highlights:
- Configurable timeouts were added. Now both request and retry timeouts can configured via command line and config files:
--request-timeout 60s
parameter specifies the request timeout for passthrough requests, gAI and gPA requests and retry timeouts can be configured via configuration file and can be reloaded during runtime. - Optimized cache hits for gAI after owner program is purged from cache, but some of its accounts persist in cache with renewed ttl. Now if account request is made during program lifetime and is served from cache, then account slot info will be updated (if missing) with that of owner program (if exists), thus consequent requests still will be served from cache, even if owner program is purged from cache. Solves https://zubr-exchange.atlassian.net/browse/SOL-94.
- Bug-Fix for gPA requests alternating between
without | with context
. Now if program is present in cache but doesn't have context info, all gPA requests which require context will be forwarded to validator, as to avoid returningcontext = 0
to client. Solves https://zubr-exchange.atlassian.net/browse/SOL-93
What's Changed
- Rpc module refactoring by @bobs4462 in #227
- Added configurable timeouts for requests, and retries by @bobs4462 in #232
- Fixed slot = 0 case for gPA requests with context by @bobs4462 in #231
- Improved cache hit probability for accounts after owner sub ends by @bobs4462 in #230
- chore: version bump to 0.2.4 + readme update by @bobs4462 in #233
Full Changelog: 0.2.3...0.2.4