Commit graph

218 commits

Author SHA1 Message Date
Matt Ramotar
35b283204a
Update CONTRIBUTING.md (#589)
* Update CONTRIBUTING.md

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Fix formatting

---------

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>
2023-12-15 11:32:14 -05:00
ab4d2e088b
Add cacheOnly option to StoreReadRequest (#586)
* Add cacheOnly option to StoreReadRequest

Signed-off-by: William Brawner <me@wbrawner.com>

* Fix doc on StoreReadRequest.cacheOnly

Signed-off-by: William Brawner <me@wbrawner.com>

* Hit disk caches for cacheOnly requests

Signed-off-by: William Brawner <me@wbrawner.com>

* Rename cacheOnly to localOnly

Signed-off-by: William Brawner <william.p.brawner@aexp.com>

* Send NoNewData and log warning for localOnly requests with no local data sources configured

Signed-off-by: William Brawner <william.p.brawner@aexp.com>

---------

Signed-off-by: William Brawner <me@wbrawner.com>
Signed-off-by: William Brawner <william.p.brawner@aexp.com>
2023-12-07 17:32:09 -05:00
Mike Nakhimovich
56132f8f03
fix validator (#573)
* fix validator

* thank the lord we have tests ;-)

* fix tests again :-)

* lint

* lint
2023-08-11 12:45:27 -04:00
Matt Ramotar
74bb49ddb5
Migrate to version catalogs (#561)
Signed-off-by: Matt Ramotar <mramotar@dropbox.com>
2023-07-05 18:31:37 -04:00
Mike Nakhimovich
2499d6e080
[WIP] split read and write SOT types (#560)
* split read and write SOT types

* all but 2 tests passing

* remove extranous parameterized type on simple store factory

* pr review

* pr review

* Passing except for UpdaterTests (#565)

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* mark mutablestore experimental

---------

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>
Co-authored-by: Matt Ramotar <mramotar@dropbox.com>
2023-07-05 16:24:37 -04:00
Matt Ramotar
fbcd34fd16
Make it easier to work with lists (#548)
* Make it possible to provide memory cache

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Format

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Add HybridCache

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Fix putList

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Enable memory cache delegation with Guava as default

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Add MutableStoreWithHybridCacheTests

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Support all cache methods

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Rename to multicache

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Refactor from list decomposition to collection decomposition

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Remove ReactiveCircus/android-emulator-runner

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Remove MemoryCache

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Update .ci_test_and_publish.yml

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Update .ci_test_and_publish.yml

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Update .ci_test_and_publish.yml

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Update .ci_test_and_publish.yml

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Format

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Prepare for release 5.0.0-beta01

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

---------

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>
2023-05-19 16:41:42 -04:00
Matt Ramotar
c6a87f9ed1
Incorporate @tsenggordon comments from #545 (#551)
Signed-off-by: matt-ramotar <mramotar@dropbox.com>
2023-05-08 19:26:32 -04:00
Matt Ramotar
d1e46a9d02
Introduce Fallback Mechanisms (#545)
* Superstore

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Move to impl

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Add firstData

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Add Superstore factory

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Add README

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Add SuperstoreTests

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Move to util

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Rename to primary

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Address comments from @tsenggordon

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Format

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Cover fallback to SOT on fresh fail

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Refactor based on @yigit feedback in #540

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Enable Fetcher identification

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Cover failing fallback

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Remove superstore

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Format

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Remove logs

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Update README.md

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Add Proposal template (#523)

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Support Rx2 (#531)

* Add rx2 module

* Support Rx2

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Add unit tests

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Format

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

---------

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Superstore

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Remove superstore

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Remove ReactiveCircus/android-emulator-runner

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Fix Rx2 merge issues

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Send failure if no fallback

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Remove Fallback interface and FallbackResponse class

Signed-off-by: matt-ramotar <mramotar@dropbox.com>

* Document Fetcher.name

Signed-off-by: matt-ramotar <mramotar@dropbox.com>

---------

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>
Signed-off-by: matt-ramotar <mramotar@dropbox.com>
2023-05-08 18:18:37 -04:00
Matt Ramotar
e050a15afc
Separate MutableStoreBuilder from StoreBuilder (#542)
* Separate MutableStoreBuilder from StoreBuilder

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Enable conversion from StoreBuilder to MutableStoreBuilder

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Clean up

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Fix tests

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

---------

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>
2023-04-12 22:11:02 -04:00
Matt Ramotar
80ec206472
Update build.gradle.kts
Signed-off-by: Matt Ramotar <mramotar@dropbox.com>
2023-03-15 17:19:09 -04:00
Matt Ramotar
1d6d9c77af
Target linuxX64 (#537) 2023-03-15 16:26:14 -04:00
Ajesh
e6786d20dc
Make bookkeeper optional (#529)
Signed-off-by: Ajesh <ajesh_nair@ymail.com>
Co-authored-by: Ajesh <aj@Ajeshs-MacBook-Pro.local>
2023-03-03 20:35:09 -05:00
Emanuele
2cbce8ac20
Add iOS simulator support for KMM projects (#516)
Signed-off-by: Emanuele Papa <ema987@gmail.com>
2023-02-25 12:29:09 -05:00
Matt
5eff430629 Expose AtomicFU (#505)
Signed-off-by: mramotar <mramotar@dropbox.com>

Signed-off-by: mramotar <mramotar@dropbox.com>
2023-01-16 16:31:12 -05:00
Matt
01cfe83ea6 Add Validator (#500)
* Resolve conflicts

Signed-off-by: mramotar <mramotar@dropbox.com>

* Fix rebase issues

Signed-off-by: mramotar <mramotar@dropbox.com>

* Fix tests

Signed-off-by: mramotar <mramotar@dropbox.com>

Signed-off-by: mramotar <mramotar@dropbox.com>
2023-01-16 16:31:12 -05:00
Matt
ae07e0672c Clean Up (#499)
* Remove "Representation" from generics

Signed-off-by: mramotar <mramotar@dropbox.com>

* Remove "Representation" from generics

Signed-off-by: mramotar <mramotar@dropbox.com>

* Rename to Validator

Signed-off-by: mramotar <mramotar@dropbox.com>

* Add logo!

Signed-off-by: mramotar <mramotar@dropbox.com>

* Update README.md

Signed-off-by: mramotar <mramotar@dropbox.com>

* Format

Signed-off-by: mramotar <mramotar@dropbox.com>

* Update CI

Signed-off-by: Matt <mramotar@dropbox.com>

* Remove "Representation" from generics

Signed-off-by: mramotar <mramotar@dropbox.com>

* Remove "Representation" from generics

Signed-off-by: mramotar <mramotar@dropbox.com>

* Rename to Validator

Signed-off-by: mramotar <mramotar@dropbox.com>

* Add logo!

Signed-off-by: mramotar <mramotar@dropbox.com>

* Update README.md

Signed-off-by: mramotar <mramotar@dropbox.com>

* Format

Signed-off-by: mramotar <mramotar@dropbox.com>

* Rename generics

Signed-off-by: mramotar <mramotar@dropbox.com>

* Rename input to value

Signed-off-by: mramotar <mramotar@dropbox.com>

* Update README

Signed-off-by: mramotar <mramotar@dropbox.com>

* Update README

Signed-off-by: mramotar <mramotar@dropbox.com>

Signed-off-by: mramotar <mramotar@dropbox.com>
Signed-off-by: Matt <mramotar@dropbox.com>
2023-01-16 16:31:12 -05:00
Matt
1b21081986 Add Write + Conflict Resolution (#496)
* Stub Store write

Signed-off-by: mramotar <mramotar@dropbox.com>

* Format

Signed-off-by: mramotar <mramotar@dropbox.com>

* Compile

Signed-off-by: mramotar <mramotar@dropbox.com>

* Fix tests

Signed-off-by: mramotar <mramotar@dropbox.com>

* Stash M1

Signed-off-by: mramotar <mramotar@dropbox.com>

* Make Updater and Bookkeeper optional

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Add conflict resolution

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Cover simple write

Signed-off-by: Matt Ramotar <mramotar@dropbox.com>

* Add MutableStore

Signed-off-by: mramotar <mramotar@dropbox.com>

* Add RealMutableStore

Signed-off-by: mramotar <mramotar@dropbox.com>

* Update workflows

Signed-off-by: mramotar <mramotar@dropbox.com>

* Format

Signed-off-by: mramotar <mramotar@dropbox.com>

* Remove references to Market

Signed-off-by: mramotar <mramotar@dropbox.com>

* Remove Converter interface

Signed-off-by: mramotar <mramotar@dropbox.com>

* Move Converter typealias

Signed-off-by: mramotar <mramotar@dropbox.com>

* Remove Google copyright

Signed-off-by: mramotar <mramotar@dropbox.com>

* Update CHANGELOG.md

Signed-off-by: mramotar <mramotar@dropbox.com>

Signed-off-by: mramotar <mramotar@dropbox.com>
Signed-off-by: Matt Ramotar <mramotar@dropbox.com>
2023-01-16 16:31:12 -05:00
mnakhimovich
fee0bccde7 [Store5] Target Android, iOS, JVM, JS (#493)
* [Temp] Remove all modules

* Remove references to Store 4

* Update CHANGELOG

* Update README

* Add Store 5 foundation
Co-authored-by: Andre Claßen <aclassen@users.noreply.github.com>
Co-authored-by: Mike Nakhimovich <mnakhimovich@Mikes-MBP.localdomain>
2023-01-16 16:31:12 -05:00
matt-ramotar
59a20f91dd
Bump Maven publish plugin (#467)
* Bump Maven publish plugin

Signed-off-by: mramotar <mramotar@dropbox.com>

* Use Dropbox Store

Signed-off-by: mramotar <mramotar@dropbox.com>

Signed-off-by: mramotar <mramotar@dropbox.com>
2022-11-29 09:33:26 -05:00
matt-ramotar
157a2161a9
Flip coordinates (#463)
Signed-off-by: mramotar <mramotar@dropbox.com>

Signed-off-by: mramotar <mramotar@dropbox.com>
2022-11-20 11:16:52 -05:00
lukisk
4cc5b052d9
release fetcher in nonCancellable scope (#432)
* release fetcher in nonCancellable scope

* replace wildcard imports
2022-04-22 19:20:25 -05:00
Sam Edwards
83205da5ec
Version Bumps - AGP 7.1.2, Kotlin 1.6.10 and related updates (#414)
* Latest is 0.8.0, but 0.4.0 works.  Starts to break at 0.5.0.

* Kotlin Atomic Plugin working with 0.14.4

* Atomic Kotlin Plugin working with 0.15.0

* Atomic Kotlin Plugin working with 0.15.1

* Upgrade Gradle Wrapper to 7.4.1

* AGP 4.1.0 -> 4.2.0

* AGP 4.2.0 -> 7.0.2

* AGP 7.0.2 -> 7.1.2

* Kotlin 1.6.10 and Spotless Plugin 6.3.0 Upgrade

* WARNING:The specified Android SDK Build Tools version (29.0.3) is ignored, as it is below the minimum supported version (30.0.3) for Android Gradle Plugin 7.1.2.

* Using --rerun-tasks instead of clean.

* KT Lint formatting update.

Co-authored-by: Sam Edwards <samedwards@dropbox.com>
2022-03-17 14:03:15 -04:00
David Chang
bf2adbf127
Move to Maven Publish Gradle Plugin (#358)
* Move to Maven Publish Gradle Plugin

* Remove release scripts

* Update release docs
2021-12-08 12:45:33 -05:00
Marco Romano
3f71c43d99
Revert to Duration.INFINITE (#353)
This should still maintain compatiblity with Kotlin 1.4 and 1.5 whilst also ensuring forward compatiblilty with Kotlin 1.6.
Compatibility with 1.4-M3 should be safe to drop.
2021-12-07 09:52:21 -05:00
Chris Mitchell
862da9b4f9
Fix missing experimental annotations (#305)
* Revert "Remove unnecessary FlowPreview & ExperimentalCoroutinesApi annotations.  These are not needed with newer versions of Kotlin. (#289)"

This reverts commit 61b8cb0633.

* Fix missing experimental annotations
2021-09-09 08:46:48 -07:00
Sam Edwards
61b8cb0633
Remove unnecessary FlowPreview & ExperimentalCoroutinesApi annotations. These are not needed with newer versions of Kotlin. (#289) 2021-09-08 18:57:02 -04:00
Yigit Boyar
e79ae4362f
Update kotlin to 1.5.21, coroutines to 1.5.1 (#281)
This is just a version bump, we still need to followup
with cleanup.

Test: ./gradlew check
2021-07-25 15:15:32 -07:00
Mike Nakhimovich
86ab7a5251
Fire off kotlin 1.5 compatible snapshot (#273)
* upgrade to kotlin 1.5 warning breaking change

* upgrading to kotlin15, create new snapshot

Co-authored-by: miken <miken@dropbox.com>
2021-05-10 14:28:52 -04:00
Mike Nakhimovich
35fd9af24f
Remove deprecated code to fix error when users upgrade to kotlin 1.5 (#265)
* upgrade to kotlin 1.5 warning breaking change

* achieve compatibility with 1.4 and 1.5

* trigger travis

* fix lint

Co-authored-by: miken <miken@dropbox.com>
2021-05-06 11:45:17 -04:00
Mike Nakhimovich
7ba28a8588
add piggyback to all stores (#257)
* add piggyback to all stores

* lint

* pr feedback

Co-authored-by: miken <miken@dropbox.com>
2021-02-04 02:26:25 -05:00
Yigit Boyar
d6e73e1fe2
update coroutines to 1.4.0, kotlin to 1.4.10 (#242)
* update coroutines to 1.4.0, kotlin to 1.4.0

This CL updates coroutines to 1.4.0, kotlin to 1.4.10 and
also removes the only usage of ConflatedBroadcastChannel
(in SOTWithBarrier) with MutableStateFlow.

* expand SOTWithBarrier failure test

This change improves the failure test case to ensure it continues
for future writes
2020-11-08 14:52:26 -08:00
Eyal Guthmann
e773021fec
Revert to use the old guava port cache (via jar) (#200)
* Revert to using guava port cache by depending on jar

* Apply suggestions from code review

* revert code to old cache

* clean up build.gradle

* manually remove cache4 entries that are regenerated locally because of some dirty cache?

* bump gradle

* rerun tasks

* try to deflake rx tests

* cache builder tests

* api dump

* bump ktlint to work with 1.4 features

* formatting

Co-authored-by: Mike Nakhimovich <digitalbuddha@users.noreply.github.com>
2020-09-14 14:49:34 -07:00
ghus-raba
8c8fcc8271
Move filesystem types (#229)
* Move Persister to filesystem module

* Move DiskRead to filesystem module

* Move DiskWrite to filesystem module

Co-authored-by: Frantisek Nagy <frantisek.nagy@erstegroup.com>
2020-09-11 08:35:51 -07:00
ghus-raba
6002efdd90
Replace BarCode with Pair<String, String> (#228)
Co-authored-by: Frantisek Nagy <frantisek.nagy@erstegroup.com>
2020-09-10 08:56:23 -07:00
Eyal Guthmann
1a4b0b0966
use covariance to remove generic types from subtypes like Error (#220) 2020-08-21 14:08:38 -07:00
Yang
a0477c1ed2
Update to Kotlin 1.4.0, Coroutines 1.3.9 and revert to using Duration.INFINITE (#195)
* Update to Kotlin 1.4.0-rc and Coroutines 1.3.8-1.4.0-rc, fix type inference issues.

* Kotlin 1.4.0.

* Coroutines 1.3.9.
2020-08-14 14:17:17 -04:00
Eyal Guthmann
ecc3470d55
Add StoreResult.NoNewData for empty fetchers. (#194)
* Add StoreResult.NoNewData for empty fetchers.

* handle no SoT case

* update comments
2020-08-07 09:26:51 -07:00
Eyal Guthmann
eb5b8c2fe8
Fix memory leak caused by capturing the user's coroutine context when… (#199)
Fix memory leak caused by capturing the user's coroutine context when creating a fetcher
2020-08-05 15:37:51 -07:00
Orhan Tozan
868059d060
Remove duplicate comment (#192) 2020-07-28 11:58:22 -07:00
Eyal Guthmann
b18db6f61f
Minor cleanup in RealStore.diskNetworkCombined (#190)
* Minor cleanup in RealStore.diskNetworkCombined

* add missing comment

* one more if-else -> when

* lint
2020-07-23 16:30:57 -07:00
Chris Banes
9c9f70a16d
Avoid using Duration.INFINITE (#189)
It currently breaks consumers compiling with Kotlin
1.4-M3 (not sure why).

Added some TODOs to revert back to using Duration.INFINITE
once Store is compiled with Kotlin 1.4

Closes #188
2020-07-23 09:08:10 -07:00
Yigit Boyar
61762f2f96
Emit source of truth errors to subscribers #177 (#180)
* reproduce #177 and fix reader errors

* dispatch write errors to receiver

Now source of truth can unblock reader while also letting them
know that an error happened while writing. This forces readers
to first dispatch the error then whatever data they have.

I've also added new public WriteException/ReadException classes
to SourceOfTruth so that it is easy to diagnose these problems
when it hits to the developer's code
2020-06-27 11:57:04 -07:00
Yigit Boyar
b86050496c
Yigit/move fetcher factories to fetcher (#168) (#181)
* Move Fetcher factories into companion

Fetcher factories were global methods, which made them hard
to discover since IDE cannot easily auto-complete.

This PR moves them into the companion of Fetcher while also
making Fetcher a real interface instead of a typealias.

Even though it is a bit more code for the developer, now they
can easily discover how to create a Fetcher by typing Fetcher.

Fixes: #167

* make rx methods start w/ from too for consistency

* Rename fether factories to be more clear, hopefully :/

* remove fetch method, use invoke instead

* Make Fetcher.from the one that receives a suspend fun.
Create Fetcher.fromFlow for the flowing version.

Rename both SourceOfTruth builder methods to . Rely on param names to disambiguate

* use .of instead, this seems better to me.

We should probably get rid of StoreBuilder.from and make it
Store.builder()

* fix jvm name for SourceOfTruth.of with flow function

* fix RxSourceOfTruth name to match original class

* specify bounds for FactoryFetcher

* updates per PR review

* update graph per SoT rename

* update rxjava3 APIs as well

These appeared after i rebased, missed them completely.
Also fixed some tests, appearantly IJ parameter name refactor does
not always work

* supress wrong unnecessary cast warning

without this, multicaster cannot resolve to the base StoreResponse type

* upgade gradle, try to fix build by disabling caching

* split subscribers

* resubscribe

Co-authored-by: miken <miken@dropbox.com>

Co-authored-by: miken <miken@dropbox.com>
2020-06-19 06:00:50 -04:00
Yuki312
a5c29ffd3e
fix doc: default policy of max items = 100 (#169) 2020-05-30 16:47:44 -07:00
Yang
7c3ce55b63
Coroutines 1.3.5 (#166)
* Update Kotlin, Coroutines, Rx2, OkHttp, Okio, Gradle.

* Clean up @FlowPreview @ExperimentalCoroutinesApi which are no longer required.
2020-05-09 10:21:25 -04:00
Eyal Guthmann
e71a4e9e4a
Support non exception errors from fetcher (#123)
* Support non exception errors from fetcher

* revert parital changes to store builder to reduce noise

* finish off diff

* Allow to create a FetcherResult.Error without a Throwable. Add tests

* Add missing funcion and more tests

* lint

* unflake RxFlowableStoreTest

* try to rename FakeFetcher to FakeRxFetcher to (maybe) solve missing codcov

* move SourceOfTruth out of impl package

* Rename accidental change of RxStoreBuilder.fromMaybe back to formSingle

* Introduce Fetcher from #139

* fix Rx artifact

* delete legacy presistor factory

* fix api file

* move fetcher to be a typealias

* code review comments + clean up documentation

* code review comments

* Update store/src/main/java/com/dropbox/android/external/store4/Fetcher.kt

Co-Authored-By: Yigit Boyar <yboyar@google.com>

* Revert "Update sample app's build.gradle to refer to the externally released version of Store (#159)"

This reverts commit fc8da86f63.

* update releasing.md

Co-authored-by: Yigit Boyar <yboyar@google.com>
2020-04-29 10:31:10 -07:00
Dave Parker
8f0625fc70
Contain @ExperimentalStdlibApi within relevant scope. (#154)
* Contain @ExperimentalStdlibApi within relevant scope.

The alpha04 release of Store caused the requirement of the @ExperimentalStdlibApi annotation for client code. I looked into it, and the only thing in Store that required the annotation was the Kotlin ArrayDeque used in the BufferImpl class. That class is private in the ChannelManager.kt file, so I opted that file into the annotation and removed all other occurences of the annotation.

Code compiles, all 208 tests pass.

* update to correct git glitch in /build.gradle

* update to address 'needless blank line' linter

* Prepare for release 4.0.0-alpha05

* Prepare for next development version.

Co-authored-by: Dave Parker <davidp@dropbox.com>
2020-04-19 19:51:50 -04:00
Yang
e6158669d4
Fix a deadlock during cache eviction (#155)
* Fix a deadlock during cache eviction due to duplicate CacheEntries with different accessTime being added to accessOrder HashSet.

* Rename test.
2020-04-19 19:50:12 -04:00
Claus Holst
ee133dc5a0
#126 [Feature Request] Migrate cache library to use kotlin.time APIs (#129)
* Migrate cache library to use kotlin.time APIs

* Fix docs and inline durations in tests

* Migrate cache library to use kotlin.time APIs

* Only require ExperimentalTime when setting cache expiration

* Set ExperimentalTime on RealStore to use it on MemoryPolicy

* Set ExperimentalTime on Cache interface and not on functions

* Avoid ExperimentalTime annotation in filesystem module

* Remove unneeded ExpirationTime annotation

* Remove unneeded ExpirationTime annotation
2020-03-16 14:29:19 -07:00
Claus Holst
5d5e89b13b
Use Kotlin version of ArrayDeque in ChannelManager (#134) 2020-03-16 08:08:32 -07:00