Commit Graph

500 Commits

Author SHA1 Message Date
Igor Artamonov
9c07b18912 problem: exception stacktrace in logs 2019-11-05 22:19:40 -05:00
Igor Artamonov
2a93b9efa3 problem: stuck if upstream returned null 2019-11-05 22:11:47 -05:00
Igor Artamonov
90648ecd8c solution: revise for the latest etherjar 2019-10-26 23:33:12 -04:00
Igor Artamonov
6aed2395b6 problem: tx broadcast breaks call (and causes timeout) if it's already broadcasted 2019-10-17 19:29:27 -04:00
Igor Artamonov
ff9bcefe25 solution: better handle for minor upstream errors 2019-10-16 20:58:57 -04:00
Igor Artamonov
cd1a7d1b91 solution: update to latest etherjar with updated blockjson model 2019-10-16 16:03:52 -04:00
Igor Artamonov
cdb631dbf8 problem: chain backed by single grpc upstream is unavailable 2019-10-16 00:03:24 -04:00
Igor Artamonov
77685c314a solution: use reactor-based rpc client 2019-10-11 22:54:12 -04:00
Igor Artamonov
ee0ab43f9c problem: too many timeouts under load or spike in load 2019-09-12 23:29:20 -04:00
Igor Artamonov
bd6d6aa6bb solution: configurable timeout 2019-09-10 22:36:20 -04:00
Igor Artamonov
ea0b137e0f solution: handle connections errors during grpc upstream check 2019-09-10 17:56:52 -04:00
Igor Artamonov
f0248c6cc0 problem: grpc upstream timeouts
solution: tune connection settings
2019-09-08 23:54:20 -04:00
Igor Artamonov
7fd27d581a solution: paths relative to config, default is at /etc/dshackle 2019-09-08 22:30:46 -04:00
Igor Artamonov
26d2b0a3a0 solution: use port 2449 by default 2019-09-07 21:34:11 -04:00
Igor Artamonov
1ea6345cd6 problem: upstream which didn't respond to head block is available for calls, may fail
solution: mark as unavailable immediately after head request error
2019-09-06 01:29:10 -04:00
Igor Artamonov
706f472355 solution: upstream apis as a controller Publisher 2019-09-06 00:15:10 -04:00
Igor Artamonov
cdd9e6bf5f problem: may loose status/details of a grpc upstream 2019-09-05 00:33:56 -04:00
Igor Artamonov
ead9cb2c77 solution: debug utility to extract method from matcher 2019-09-05 00:31:10 -04:00
Igor Artamonov
fbc6e5588b problem: interval throws error if it's not consumed fast enough 2019-09-05 00:29:41 -04:00
Igor Artamonov
d553560be2 problem: duplicate logic for Head following
solution: refactor to default implementation
2019-09-04 21:48:22 -04:00
Igor Artamonov
ee66704620 solution: use grpc transport from etherjar 2019-09-04 00:24:22 -04:00
Igor Artamonov
5e6b586cf8 problem: doesn't retry on upstream error 2019-08-31 23:31:58 -04:00
Igor Artamonov
aa3f66c059 problem: confusing logging 2019-08-31 23:30:54 -04:00
Igor Artamonov
8b7888eb8c problem: grpc upstream can change set of provided upstreams
solution: periodically recheck and update current list
2019-08-31 22:53:43 -04:00
Igor Artamonov
26f1229f36 problem: gets block from cache without transaction data when it requested 2019-08-29 21:24:17 -04:00
Igor Artamonov
17d46aafc2 problem: run with INFO logging by default 2019-08-28 22:10:17 -04:00
Igor Artamonov
2d275c5170 problem: wastes 200ms even for a single call because takes next api before validation
solution: manage apis flow right after value recorded
2019-08-26 22:36:45 -04:00
Igor Artamonov
bc83b1b120 solution: setup custom upstream methods 2019-08-25 20:50:16 -04:00
Igor Artamonov
e5c9124705 solution: reorganize packages 2019-08-25 18:37:57 -04:00
Igor Artamonov
ac30b522e6 solution: propagate native call exception to downstream 2019-08-23 21:39:31 -04:00
Igor Artamonov
d873130567 solution: open source it 2019-08-22 21:07:12 -04:00
Igor Artamonov
f8edcf5762 problem: calls gRPC upstream even if it's unavailable 2019-08-22 15:21:10 -04:00
Igor Artamonov
5dab6115b3 problem: unnecessary logging 2019-08-22 15:19:58 -04:00
Igor Artamonov
6716abfb4d problem: unable to run without default options 2019-08-21 17:39:20 -04:00
Igor Artamonov
8a99212fc5 solution: cache latest blocks in memory 2019-08-20 23:14:49 -04:00
Igor Artamonov
887cf07e16 solution: refactor head streaming to simple flux subscription 2019-08-19 23:20:05 -04:00
Igor Artamonov
a03325a619 solution: rename grpc target to method 2019-08-19 22:47:35 -04:00
Igor Artamonov
03ce6f74a5 problem: unnecessary method for Head 2019-08-16 22:03:32 -04:00
Igor Artamonov
303d7e1164 problem: a Websocket based upstream lacks current height until it loaded through Websocket
solution: load initial block through RPC, then continue with Websocket
2019-08-16 21:31:06 -04:00
Igor Artamonov
8d83935672 solution: support basic auth for websockets 2019-08-15 23:38:12 -04:00
Igor Artamonov
38afb2a1a4 solution: configure rpc server TLS certificate 2019-08-15 18:54:17 -04:00
Igor Artamonov
e2520f4dbf problem: double subscription to same upstream 2019-08-13 23:20:02 -04:00
Igor Artamonov
0b156d12e7 problem: starts subscription on init, may keep them forever 2019-08-13 22:28:26 -04:00
Igor Artamonov
62ec04f151 problem: unused options 2019-08-13 16:45:02 -04:00
Igor Artamonov
3957b8cf42 solution: allows to disable upstream validation 2019-08-13 16:41:24 -04:00
Igor Artamonov
89bd52a267 problem: doesn't update head subscription through remote dshackle, because upstream becomes ready later after chain setup
solution: fix and refactor to avoid such situation in code
2019-08-11 20:22:37 -04:00
Igor Artamonov
29cea2575e problem: gives duplicate blocks if came simultaneously from different upstreams 2019-08-11 16:03:03 -04:00
Igor Artamonov
07bca4fa22 problem: doesn't track edge cases correctly, like not broadcasted transaction 2019-08-09 23:36:40 -04:00
Igor Artamonov
5660f4ca09 problem: service may miss available chain if initialized after 2019-08-09 23:27:03 -04:00
Igor Artamonov
7205a33ff3 solution: correctly account for upstream lag 2019-08-09 00:29:26 -04:00