Commit Graph

602 Commits

Author SHA1 Message Date
Francisco Gindre 7ab30b0d0c
Merge pull request #594 from Chlup/593_fix_testSmallDownloadAsync_test
[#593] Fix testSmallDownloadAsync test
2022-10-28 09:16:43 -03:00
Michal Fousek 02ee0a54ea [#593] Fix testSmallDownloadAsync test
- Test was failling with:
generalError(message: "block not found in cache, should always be in cache in darkside mode")
- There was no wait so lightwalletd in darkside mode didn't have enough time to accept mocked state.
2022-10-28 12:18:19 +02:00
Lukas Korba cfe71d5da2
[#523] Make a CompactBlockProcessor an Actor (#565)
- Sample app refactored for the processor being an actor
- tests refactored as well
- dark side tests fixed
- utilities separated to new file
- synchronizer's start and stop are no longer in async context
- updating the UI for the scan fixed
2022-10-27 12:51:38 +02:00
Francisco Gindre b7528b4bf8
Merge pull request #573 from zcash/release/0.16.12-beta
[#572] release 0.16.12-beta with new checkpoints
2022-10-24 16:45:43 -03:00
Francisco Gindre bbe5a577d5 [#572] release 0.16.12-beta with new checkpoints 2022-10-21 18:47:47 -03:00
Francisco Gindre 3613dfcf06
Merge pull request #558 from zcash/release/0.16.11-beta
[#557] Update checkpoints and release 0.16.11-beta
2022-10-06 03:44:48 -07:00
Francisco Gindre fe90ef0010 [#557] Update checkpoints and release 0.16.11-beta
Closes #557
2022-10-04 19:52:27 -03:00
Lukas Korba 9b6ff51b29
[#492] Get rid of blocking API (#551)
- blocking API removed, only latestBlockHeight() stayed
- non-blocking closure based API removed
- unit tests updated to use async API

[#492] Get rid of blocking API (#551)

- forgotten commented code cleaned up
- some comments were still mentioning result (completion closure), removed
2022-10-03 20:05:11 -03:00
Lukas Korba fa5bbbb2bf
[#541] Initialise gRPC on a separate thread (#545)
MultiThreadedEventLoopGroup has been replaced with NIOTSEventLoopGroup. It's recommended by authors of grpc-swift especially for iOS platform and it allows us to set the priority because NIOTSEventLoopGroup is GCD based while MultiThreadedEventLoopGroup is pthread based.

[#541] Initialise gRPC on a separate thread (#545)

- priority increased to .default
2022-10-03 15:54:43 -03:00
Lukas Korba 46d8c04afc
[#546] TransactionEncoder To Async/Await (#547)
- async/await API update
- code cleaned up from the unused APIs
2022-10-03 12:44:33 +02:00
Francisco Gindre 28985a4e38
Merge pull request #536 from LukasKorba/486_sendToAddress_async_await
[#486] sendToAddress async/await
2022-09-23 12:08:31 -07:00
Francisco Gindre c834b13f29
Merge pull request #537 from LukasKorba/487_shieldFunds_to_async_await
[#487] shieldFunds to async/await
2022-09-23 12:08:07 -07:00
Francisco Gindre bdd61be8c5
Merge pull request #540 from zcash/fix/0.16.10-beta
Fix: [#539] 0.16.10-beta not in Podspec of that version
2022-09-21 09:33:30 -07:00
Francisco Gindre 9e41fb4375 Fix: [#539] 0.16.10-beta not in Podspec of that version 2022-09-21 13:27:35 -03:00
Lukas Korba 2c93802828 [#487] shieldFunds to async/await
- API refactored to async

[#487] shieldFunds to async/await

- unit tests refactored
2022-09-21 16:36:41 +02:00
Lukas Korba 61683a85f3 [486] sendToAddress async/await
- sendToAddress and SaplingParameterDownloader refactored to async
- unit tests WIP

[486] sendToAddress async/await

- testing code cleanup

[#486] sendToAddress async/await

- reducing number of Tasks in Sample app

[#486] sendToAddress async/await

- I finally figure out how to make the dark side tests async, using new sendToAddress APIs and pass, POC done, 18 more tests to refactor

[#486] sendToAddress async/await

- async sendToAddress unit test refactored except NetworkUpgradeTests

[#486] sendToAddress async/await

- NetworkUpgradeTests refactored to async API

[#486] sendToAddress async/await

- cleanup

[#486] sendToAddress async/await (#536)

- PR comments resolved
2022-09-21 13:47:17 +02:00
Francisco Gindre 77d11470d5
Merge pull request #533 from zcash/release/0.16.10-beta
Release/0.16.10 beta
2022-09-19 09:43:21 -07:00
Francisco Gindre d8ee9ff277 - [#532] Download does not stop correctly
Issue Reported on [0.16.x-beta]

When the synchronizer is stopped, the processor does not cancel
the download correctly. Then when attempting to resume sync, the
synchronizer is not on `.stopped` and can't be resumed

Fix:
This commit makes sure that the download streamer checks cancelation
before processing any block, or getting called back to report progress
2022-09-16 18:08:31 -03:00
Francisco Gindre db15465ebe Merge branch 'master' into release/0.16.10-beta 2022-09-16 18:04:14 -03:00
Francisco Gindre 044d7d99d5 Bump version and add new checkpoints 2022-09-16 17:41:47 -03:00
Francisco Gindre 60aa28628b [#532] [0.16.x-beta] Download does not stop correctly
Issue Reported:

When the synchronizer is stopped, the processor does not cancel
the download correctly. Then when attempting to resume sync, the
synchronizer is not on .stopped and can't be resumed

this doesn't appear to happen in master branch that uses
structured concurrency for operations.

Fix:
This commit makes sure that the download streamer checks cancelation
before processing any block, or getting called back to report progress
2022-09-16 16:59:31 -03:00
Lukas Korba 90f38973ac
Merge pull request #519 from LukasKorba/476_CompactBlockProcessor_async
[476] CompactBlockProcessor to async/await
2022-09-15 15:08:46 +02:00
Lukas Korba 2b65bd46e4 [476] CompactBlockProcessor to async/await
- getting rid of the Operation Queue
- the cleanup is needed
- the update of tests is needed
- tested and it successfully finishes the sync process

[476] CompactBlockProcessor to async/await

- old processNewBlocks() removed

[476] CompactBlockProcessor to async/await

- unused operations removed

[476] CompactBlockProcessor to async/await

- unit tests update

[476] CompactBlockProcessor to async/await

- unit tests refactored

[476] CompactBlockProcessor to async/await

- cleanup of deprecated method

[476] CompactBlockProcessor to async/await

- fail(error) was called even for canceled tasks but that must be excluded

[476] CompactBlockProcessor to async/await

- removal of all ZcashOperations from the code (unit test will follow)

[476] CompactBlockProcessor to async/await

- network tests in building and success order again

[476] CompactBlockProcessor to async/await

- offline tests in building and success order

[476] CompactBlockProcessor to async/await (519)

- cleanup of suspending the task

[476] CompactBlockProcessor to async/await (519)

- most comments resolved

[476] CompactBlockProcessor to async/await (519)

- thread safe state for both sync and async context

[476] CompactBlockProcessor to async/await (519)

- fixed build for a sample project

[476] CompactBlockProcessor to async/await (519)

- func testStartNotifiesSuscriptors() reverted

[476] CompactBlockProcessor to async/await (519)

- TODO added to track why we used NSLock instead of an Actor
- Task priority enhanced

[476] CompactBlockProcessor to async/await (519)

- cleanup in Tasks and priorities
2022-09-15 08:10:12 +02:00
Francisco Gindre 91719508ec
Merge pull request #528 from zcash/release/0.16.9-beta
[#525] Release 0.16.9-beta

Approval on https://github.com/zcash/ZcashLightClientKit/pull/526
2022-09-12 10:07:40 -07:00
Francisco Gindre a05990b417 [#525] Release 0.16.9-beta 2022-09-12 13:18:40 -03:00
Lukas Korba 9cf2e07d25
Merge pull request #524 from LukasKorba/483_OutboundTransactionManager_Async
[483] OutboundTransactionManager To Async/Await
2022-09-12 14:25:34 +02:00
Lukas Korba 4a2fcde353 [483] OutboundTransactionManager To Async/Await
- protocol methods updated from closure to async APIs
- PersistentTransactionManager updated to implement async APIs
- PersistentTransactionManager deleted closure APIs
- SDKSynchronizer updated to use async APIs
2022-09-12 13:27:52 +02:00
Lukas Korba 7b90e598ad
[#472] CompactBlockBatchScanningOperation to async (#505)
- CompactBlockBatchScanningOperation operation's main reimplemented to be Task based

[472] CompactBlockBatchScanningOperation to async

cleanup

[472] CompactBlockBatchScanningOperation to async (505)

- CompactBlockBatchScanningOperation wrapped to Task
2022-08-30 11:28:00 -03:00
Lukas Korba 87f50a796c
[#473] CompactBlockEnhancementOperation to async/await (#513)
- Wrapped to Task
- Downloader APIs upgraded to async one
2022-08-30 11:07:36 -03:00
Lukas Korba b684a2f486
[#474] FetchUnspentTxOutputsOperation to async/await (#514)
- wrapped to Task
- downloader uses the new async API
2022-08-30 11:00:48 -03:00
Lukas Korba 29f159845d
[#471] CompactBlockValidationOperation to async (#515)
- CompactBlockValidationOperation wrapped to Task
2022-08-30 10:56:39 -03:00
Lukas Korba be24044b51
[#470] CompactBlockStreamDownloadOperation to async (#506)
- using new sync APIs for storage and service
- whole logic wrapped in the Task

Closes #470
2022-08-29 16:53:49 -03:00
Lukas Korba 16d1948b5b
[#465] CompactBlockDownloading to Async/Await (#507)
Closes #465
- CompactBlockDownloading closures removed
- CompactBlockDownloading new async API provided
2022-08-29 16:31:01 -03:00
Francisco Gindre 30bfa6c633
Merge pull request #504 from zcash/release-0.16.8-beta
[#503] Add new checkpoints on top of 0.16.7-beta and release .8
2022-08-26 11:46:51 -07:00
Lukas Korba 742e6bd8ec
[#464] CompactBlockStorage To async/await (#494)
- await/async APIs provided
- async throws unit tests using new API implemented

[464] CompactBlockStorage To async/await (494)

- removed deprecated closure APIs
- upgraded use of the async APIs
- tests updated
2022-08-26 14:52:12 -03:00
Francisco Gindre 3606a13623 [#503] Add new checkpoints on top of 0.16.7-beta and release .8
Closes #503

This commit adds new checkpoints on top 0.16.7-beta and serves as
a point to tag the release of 0.16.8-beta
2022-08-26 13:21:42 -03:00
Lukas Korba f1a570bbc2
[#463] Migrate LightwalletService to Async/Await (#493)
- migration of the protocol's methods done
- split the code so there's blocking and non-blocking API separately

[463] Migrate LightwalletService to Async/Await

- draft

[463] Migrate LightwalletService to Async/Await

- failing tests under investigation

[463] Migrate LightwalletService to Async/Await

- code cleanup
- tests cleanup
- async throws unit tests added

[463] Migrate LightwalletService to Async/Await

- sample app updated to the latest API

[463] Migrate LightwalletService to Async/Await

- cleanup

[463] Migrate LightwalletService to Async/Await

- cleanup

[463] Migrate LightwalletService to Async/Await

- fixed non-building tests

[463] Migrate LightwalletService to Async/Await

- reverting back to lastHeight()

[463] Migrate LightwalletService to Async/Await

updated code to AsyncStream

[463] Migrate LightwalletService to Async/Await (493)

- tests fixed
- blockRange reimplemented to use AsyncStream
- grpc proto files regenerated to exclude Server
2022-08-25 10:39:59 -03:00
Francisco Gindre 29e06d0b8a
[#501] Bump MacOS minimum deployment target to 10_15 (#502)
This is needed to be ablo to build on Macs without running Xcode IDE
Closes #501
2022-08-24 18:18:28 -03:00
Lukas Korba 6d0f241ed6
[#475] NextStateHelper to async/await (#495)
- refactored to await/async
2022-08-23 16:58:15 -03:00
Lukas Korba 5d662dc98b
[#496] Travis CI and GA update to support compiler >= 5.6 (#497)
- travis.yml updated to xcode13.4
- github actions updated to run on macos 12
2022-08-23 16:08:10 -03:00
Francisco Gindre fb061b27a8
[#457] Release 0.16.7-beta (#458)
Adds checkpoints on testnet and mainnet
updates changelog.md
2022-08-15 18:38:52 -03:00
Francisco Gindre 40df80ef25
[#455] revert queue priority downgrade changes from [#435] (#456)
Closes #455

this reverts queue priority changes from commit `a5d0e447748257d2af5c9101391dd05a5ce929a2` since we detected it might prevent downloads to be scheduled in a
timely fashion

Co-authored-by: pacu <pacu@pacus-MacBook-Pro.local>
2022-08-15 17:03:03 -03:00
Francisco Gindre a37c140441 0.16.6-beta
Update podspec
2022-08-02 09:14:37 -03:00
Francisco Gindre fba4cecbe6
[#452] Release ZcashLightClientKit 0.16.5-beta (#453)
0.16.5-beta

- [#449] Use CompactBlock Streamer download instead of batch downloads (#451)
This increases the speed of downloads significantly while reducing the memory footprint.
- [#435] thread sanitizer issues (#448)
Issues related to Thread Sanitizer warnings

Closes #452
2022-07-31 09:42:12 -03:00
Francisco Gindre a2283f0171
[#449] Use CompactBlock Streamer download instead of batch downloads (#451)
* [#449] Use CompactBlock Streamer download instead of batch downloade

This commit implements a small buffer for the stream download operation
so it does not store a block at a time and does it in batches instead.

Closes #449

* Fix tests

* PR Suggestions
2022-07-30 20:01:18 -03:00
Francisco Gindre a5d0e44774
[#435] thread sanitizer issues (#448)
* [#435] this commit attempts to fix thread being starved dues to inversion
of priorities where a .userInitiated thread ends up depending on a lower
priority one on GRPC.

* Add an Synchronizer State struct to report state at once

* Make CompactBlockProcessor's downloader available internally for SDKSynchronizer
remove duplicate handling of processor finished

* PR Suggestions
2022-07-29 15:20:55 -03:00
Francisco Gindre fef4bccce8
[#446] Release 0.16.4-beta (#447)
Closes #446
2022-07-29 11:41:14 -03:00
Francisco Gindre 3be694c920
[#444] Syncing Restarts to zero when the wallet is wiped and synced from zero in one go. (#445)
This commit changes the way walletBirthday is stored in the synchronizer and intinitializer. Wallets syncing from creation/restore would have a problem where the birthday stored in the Blocks Table would be the one corresponding to the chekpoint found a the time of syncing, but the compact block downloader would start downloading blocks from the height provided by the user when the wallet was restored. This would cause a `validationFailed` error at the height checkpoint.height + 1 and restart downloading from checkpoint.height and then resume correctly.

Darksidewalletd test setUp was changed re be able to reproduce the error since injection guaranteed correctness and it was not possible to reproduce the error with it since the wallet birthday height provided matched exactly with the checkpoint on disk and that's the only case that avoided this error.

Closes #444
2022-07-29 10:33:23 -03:00
Francisco Gindre 96520aeb7c
[#440] Split constants for Download Batches and Scanning Batches (#441)
this commit splits the batch sizes so that wallets can be tweaked to either scan or download more or less blocks depending of the CompactBlockProcessor.Config used. Defaults are provided

This also bumps up the default time out for GRPC services to 30 seconds to unary calls and 100 seconds to streaming calls
Also, adds some documentation formatting that won't hurt

PR Suggestions

PR Suggestions
2022-07-29 10:07:08 -03:00
Francisco Gindre 1f1f69bc24 [#438] Release 0.16.3-beta
This commit changes the Podspec and changelog.md
2022-07-26 11:14:26 -03:00