-
Notifications
You must be signed in to change notification settings - Fork 11
Commits on Jan 25, 2018
-
Move bisq.pricenode.{Main => app.Main}
This move avoids the use of bisq.pricenode subpackages from a class within that package, eliminating the cyclic package dependencies that doing so causes.
Configuration menu - View commit details
-
Copy full SHA for 213a8f3 - Browse repository at this point
Copy the full SHA 213a8f3View commit details -
Configuration menu - View commit details
-
Copy full SHA for 15be897 - Browse repository at this point
Copy the full SHA 15be897View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0dbb878 - Browse repository at this point
Copy the full SHA 0dbb878View commit details -
Configuration menu - View commit details
-
Copy full SHA for 99c7d8b - Browse repository at this point
Copy the full SHA 99c7d8bView commit details -
Configuration menu - View commit details
-
Copy full SHA for cbf2df4 - Browse repository at this point
Copy the full SHA cbf2df4View commit details -
Configuration menu - View commit details
-
Copy full SHA for 6bc7665 - Browse repository at this point
Copy the full SHA 6bc7665View commit details -
Configuration menu - View commit details
-
Copy full SHA for aa86199 - Browse repository at this point
Copy the full SHA aa86199View commit details -
Configuration menu - View commit details
-
Copy full SHA for 4d55e8a - Browse repository at this point
Copy the full SHA 4d55e8aView commit details -
Configuration menu - View commit details
-
Copy full SHA for f797162 - Browse repository at this point
Copy the full SHA f797162View commit details -
Configuration menu - View commit details
-
Copy full SHA for bf54408 - Browse repository at this point
Copy the full SHA bf54408View commit details -
Configuration menu - View commit details
-
Copy full SHA for 2ad083d - Browse repository at this point
Copy the full SHA 2ad083dView commit details -
Remove unnecessary static initializer from Main
This appears to have been copied and pasted from BisqAppMain in the bisq-network/exchange repository.
Configuration menu - View commit details
-
Copy full SHA for 63e9700 - Browse repository at this point
Copy the full SHA 63e9700View commit details -
Configuration menu - View commit details
-
Copy full SHA for 948f8f1 - Browse repository at this point
Copy the full SHA 948f8f1View commit details -
Configuration menu - View commit details
-
Copy full SHA for 2053f1e - Browse repository at this point
Copy the full SHA 2053f1eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 3201503 - Browse repository at this point
Copy the full SHA 3201503View commit details -
Configuration menu - View commit details
-
Copy full SHA for def6da8 - Browse repository at this point
Copy the full SHA def6da8View commit details -
Configuration menu - View commit details
-
Copy full SHA for e70dcd6 - Browse repository at this point
Copy the full SHA e70dcd6View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1c32534 - Browse repository at this point
Copy the full SHA 1c32534View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5b0edab - Browse repository at this point
Copy the full SHA 5b0edabView commit details
Commits on Jan 26, 2018
-
Configuration menu - View commit details
-
Copy full SHA for 832db42 - Browse repository at this point
Copy the full SHA 832db42View commit details -
Configuration menu - View commit details
-
Copy full SHA for d358bdc - Browse repository at this point
Copy the full SHA d358bdcView commit details -
Configuration menu - View commit details
-
Copy full SHA for 28b9e43 - Browse repository at this point
Copy the full SHA 28b9e43View commit details
Commits on Feb 3, 2018
-
Configuration menu - View commit details
-
Copy full SHA for 502f1f8 - Browse repository at this point
Copy the full SHA 502f1f8View commit details -
Configuration menu - View commit details
-
Copy full SHA for b3cdace - Browse repository at this point
Copy the full SHA b3cdaceView commit details -
Configuration menu - View commit details
-
Copy full SHA for dc4a4b2 - Browse repository at this point
Copy the full SHA dc4a4b2View commit details -
Configuration menu - View commit details
-
Copy full SHA for 19cb583 - Browse repository at this point
Copy the full SHA 19cb583View commit details
Commits on Feb 5, 2018
-
Rename bisq.price.{node => app}.*
bisq.price.node reads nicely, but 'app' packaging is the convention elsewhere, is immediately intention-revealing, and sorts alphanumerically to the top, helping the reader discover its nature as an entry point.
Configuration menu - View commit details
-
Copy full SHA for 966dfc2 - Browse repository at this point
Copy the full SHA 966dfc2View commit details -
Configuration menu - View commit details
-
Copy full SHA for d681cc5 - Browse repository at this point
Copy the full SHA d681cc5View commit details -
Configuration menu - View commit details
-
Copy full SHA for 00f662e - Browse repository at this point
Copy the full SHA 00f662eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 3c3780d - Browse repository at this point
Copy the full SHA 3c3780dView commit details -
Introduce FeeEstimationProvider interface
Casting to BtcFeesProvider in Pricenode is temporary.
Configuration menu - View commit details
-
Copy full SHA for b1d7e5b - Browse repository at this point
Copy the full SHA b1d7e5bView commit details -
Configuration menu - View commit details
-
Copy full SHA for f3075bc - Browse repository at this point
Copy the full SHA f3075bcView commit details -
Load BitcoinFees by SPI via ServiceLoader
Note that BitcoinFees should be made package-private at this point but cannot because of the lingering cast in Pricenode.
Configuration menu - View commit details
-
Copy full SHA for b9d4590 - Browse repository at this point
Copy the full SHA b9d4590View commit details -
Allow FeeEstimationService to configure itself
See the previous commit, in which a similar approach was taken with FeeEstimationProvider.
Configuration menu - View commit details
-
Copy full SHA for 9330449 - Browse repository at this point
Copy the full SHA 9330449View commit details -
Allow Pricenode to configure itself
See previous two commits for context.
Configuration menu - View commit details
-
Copy full SHA for b5d7eb0 - Browse repository at this point
Copy the full SHA b5d7eb0View commit details -
Rename bisq.price.{price => spot}
As in "Spot Exchange Rate", which is the price being dealt with in this package. See https://www.investopedia.com/terms/s/spotexchangerate.asp.
Configuration menu - View commit details
-
Copy full SHA for d182b49 - Browse repository at this point
Copy the full SHA d182b49View commit details -
Configuration menu - View commit details
-
Copy full SHA for e551ba7 - Browse repository at this point
Copy the full SHA e551ba7View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5f63d96 - Browse repository at this point
Copy the full SHA 5f63d96View commit details -
Introduce ExchangeRateProvider SPI
This change normalize all existing exchange rate providers to conform to this interface, including BitcoinAverage, which previously was the special case, having getLocal and getGlobal methods instead of a single request method. This is now no longer a special case, and simply treated as two separate price providers that share a common base class.
Configuration menu - View commit details
-
Copy full SHA for bb3cede - Browse repository at this point
Copy the full SHA bb3cedeView commit details -
Configuration menu - View commit details
-
Copy full SHA for 0cc2376 - Browse repository at this point
Copy the full SHA 0cc2376View commit details
Commits on Feb 6, 2018
-
Configuration menu - View commit details
-
Copy full SHA for 563a55d - Browse repository at this point
Copy the full SHA 563a55dView commit details -
Configuration menu - View commit details
-
Copy full SHA for a72bdef - Browse repository at this point
Copy the full SHA a72bdefView commit details -
Configuration menu - View commit details
-
Copy full SHA for f85c3a7 - Browse repository at this point
Copy the full SHA f85c3a7View commit details -
Configuration menu - View commit details
-
Copy full SHA for 6721c2f - Browse repository at this point
Copy the full SHA 6721c2fView commit details -
Configuration menu - View commit details
-
Copy full SHA for ba8fb42 - Browse repository at this point
Copy the full SHA ba8fb42View commit details -
Configuration menu - View commit details
-
Copy full SHA for cb94448 - Browse repository at this point
Copy the full SHA cb94448View commit details -
Configuration menu - View commit details
-
Copy full SHA for d6c713d - Browse repository at this point
Copy the full SHA d6c713dView commit details -
Configuration menu - View commit details
-
Copy full SHA for bae028a - Browse repository at this point
Copy the full SHA bae028aView commit details -
Configuration menu - View commit details
-
Copy full SHA for f5b4efa - Browse repository at this point
Copy the full SHA f5b4efaView commit details -
Configuration menu - View commit details
-
Copy full SHA for b75b673 - Browse repository at this point
Copy the full SHA b75b673View commit details -
Configuration menu - View commit details
-
Copy full SHA for f980047 - Browse repository at this point
Copy the full SHA f980047View commit details -
Assign provider fields to their specific types
We'll generalize back to the ExchangeRateProvider SPI when all extractions are complete.
Configuration menu - View commit details
-
Copy full SHA for 3cbfb8a - Browse repository at this point
Copy the full SHA 3cbfb8aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 9c02a4a - Browse repository at this point
Copy the full SHA 9c02a4aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 9daee4d - Browse repository at this point
Copy the full SHA 9daee4dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 0373be3 - Browse repository at this point
Copy the full SHA 0373be3View commit details -
Configuration menu - View commit details
-
Copy full SHA for 03a628b - Browse repository at this point
Copy the full SHA 03a628bView commit details -
Configuration menu - View commit details
-
Copy full SHA for de4b98b - Browse repository at this point
Copy the full SHA de4b98bView commit details -
These lines will go away altogether soon enough.
Configuration menu - View commit details
-
Copy full SHA for f37f4d3 - Browse repository at this point
Copy the full SHA f37f4d3View commit details -
Isolate JSON processing within web layer
Service layer returns maps of objects now, specific value types later.
Configuration menu - View commit details
-
Copy full SHA for 1cc4d07 - Browse repository at this point
Copy the full SHA 1cc4d07View commit details -
Derive debug timestamp/count values directly from data
This commit just demonstrates that this is possible. Fuller refactoring for all provider types will come later, along with fully generalizing and service loading them.
Configuration menu - View commit details
-
Copy full SHA for 511edf6 - Browse repository at this point
Copy the full SHA 511edf6View commit details -
Push debug prefix property into ExchangeRateProvider
More work on the way to fully generalizing access to ExchangeRateProviders by SPI while preserving the exact shape and content of the exchange rate data itself.. Note that this change _adds_ a 'btcAverageLTs' while leaving 'btcAverageTs' in place in case anything is depending on this irregular entry.
Configuration menu - View commit details
-
Copy full SHA for eb1a295 - Browse repository at this point
Copy the full SHA eb1a295View commit details -
Configuration menu - View commit details
-
Copy full SHA for 9757b13 - Browse repository at this point
Copy the full SHA 9757b13View commit details -
Pull up methods into ExchangeRateProvider SPI
As required to access providers by SPI exclusively and not by special type.
Configuration menu - View commit details
-
Copy full SHA for c19cefa - Browse repository at this point
Copy the full SHA c19cefaView commit details
Commits on Feb 9, 2018
-
Process generically a Set<ExchangeRateProvider>
As opposed to repeating logic for each individual provider tracked by its own field and with special implicit statement ordering rules that must be explained by comments.
Configuration menu - View commit details
-
Copy full SHA for 1f9b44c - Browse repository at this point
Copy the full SHA 1f9b44cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 445d782 - Browse repository at this point
Copy the full SHA 445d782View commit details -
Configuration menu - View commit details
-
Copy full SHA for b6d7fd9 - Browse repository at this point
Copy the full SHA b6d7fd9View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0078cba - Browse repository at this point
Copy the full SHA 0078cbaView commit details -
Configuration menu - View commit details
-
Copy full SHA for aa62aad - Browse repository at this point
Copy the full SHA aa62aadView commit details -
Rename ExchangeRateProvider#get{DebugPrefix => MetadataPrefix}
See previous commit's extraction of ExchangeRateProvider#addMetadata for context.
Configuration menu - View commit details
-
Copy full SHA for c41e4e7 - Browse repository at this point
Copy the full SHA c41e4e7View commit details -
Configuration menu - View commit details
-
Copy full SHA for 43e5f2a - Browse repository at this point
Copy the full SHA 43e5f2aView commit details -
Configuration menu - View commit details
-
Copy full SHA for c962af1 - Browse repository at this point
Copy the full SHA c962af1View commit details -
Configuration menu - View commit details
-
Copy full SHA for c06acbb - Browse repository at this point
Copy the full SHA c06acbbView commit details -
Configuration menu - View commit details
-
Copy full SHA for 7269369 - Browse repository at this point
Copy the full SHA 7269369View commit details -
Tune AbstractExchangeRateProvider#requestAndCache logging
Now produces log entries like the following: b.p.s.p.BitcoinAverage$Global: BTC/USD: 7469.27 b.p.s.p.BitcoinAverage$Global: requestAndCache took 1038 ms. b.p.s.p.BitcoinAverage$Local: BTC/USD: 7471.75 b.p.s.p.BitcoinAverage$Local: requestAndCache took 138 ms. b.p.s.p.CoinMarketCap: LTC/BTC: 0.018664 b.p.s.p.CoinMarketCap: requestAndCache took 216 ms. b.p.s.p.Poloniex: LTC/BTC: 0.01869172 b.p.s.p.Poloniex: requestAndCache took 260 ms.
Configuration menu - View commit details
-
Copy full SHA for 473969c - Browse repository at this point
Copy the full SHA 473969cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 4ae8779 - Browse repository at this point
Copy the full SHA 4ae8779View commit details -
Configuration menu - View commit details
-
Copy full SHA for c805415 - Browse repository at this point
Copy the full SHA c805415View commit details -
Remove ExchangeRateProvider#getData and use #request
And introduce a template method-style request/doRequest approach in CachingExchangeRateProvider.
Configuration menu - View commit details
-
Copy full SHA for bf1e8a3 - Browse repository at this point
Copy the full SHA bf1e8a3View commit details -
Eliminate explicit ExchangeRateProvider#getOrder property
And document clearly that order of placement in the META-INF provider-configuration determines the order of providers in the List returned from ExchangeRateProvider#getOrder.
Configuration menu - View commit details
-
Copy full SHA for 6c81d12 - Browse repository at this point
Copy the full SHA 6c81d12View commit details -
Rename CachingExchangeRateData#{requestIntervalMs => ttl}
'ttl' (time to live) reveals the intention of this property more clearly than requestIntervalMs, for it indeed represents how long exchange rate data is supposed to live before being refreshed. Using an acronym here vs spelling it out as ttl/TTL is quite well known, and pretty obvious in the context of this explicitly-named caching component.
Configuration menu - View commit details
-
Copy full SHA for bb4602c - Browse repository at this point
Copy the full SHA bb4602cView commit details -
Configuration menu - View commit details
-
Copy full SHA for b87f4aa - Browse repository at this point
Copy the full SHA b87f4aaView commit details -
Configuration menu - View commit details
-
Copy full SHA for 22a96b6 - Browse repository at this point
Copy the full SHA 22a96b6View commit details -
Configuration menu - View commit details
-
Copy full SHA for f2aa335 - Browse repository at this point
Copy the full SHA f2aa335View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3f61d7f - Browse repository at this point
Copy the full SHA 3f61d7fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 09afcd7 - Browse repository at this point
Copy the full SHA 09afcd7View commit details -
Configuration menu - View commit details
-
Copy full SHA for 7f6a431 - Browse repository at this point
Copy the full SHA 7f6a431View commit details -
Configuration menu - View commit details
-
Copy full SHA for 7a60359 - Browse repository at this point
Copy the full SHA 7a60359View commit details -
Configuration menu - View commit details
-
Copy full SHA for b569464 - Browse repository at this point
Copy the full SHA b569464View commit details -
Configuration menu - View commit details
-
Copy full SHA for b9c525f - Browse repository at this point
Copy the full SHA b9c525fView commit details -
Configuration menu - View commit details
-
Copy full SHA for d732184 - Browse repository at this point
Copy the full SHA d732184View commit details -
Configuration menu - View commit details
-
Copy full SHA for a7902a5 - Browse repository at this point
Copy the full SHA a7902a5View commit details -
Configuration menu - View commit details
-
Copy full SHA for afaff31 - Browse repository at this point
Copy the full SHA afaff31View commit details -
Refactor BitcoinAverage#doRequestForCaching for readability
And document it a bit.
Configuration menu - View commit details
-
Copy full SHA for 7dc37aa - Browse repository at this point
Copy the full SHA 7dc37aaView commit details -
Configuration menu - View commit details
-
Copy full SHA for 8ab9145 - Browse repository at this point
Copy the full SHA 8ab9145View commit details -
Configuration menu - View commit details
-
Copy full SHA for 2ffc05d - Browse repository at this point
Copy the full SHA 2ffc05dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 9e8ce07 - Browse repository at this point
Copy the full SHA 9e8ce07View commit details -
Refactor to use XChange BitcoinAverage library
To simplify our BitcoinAverage provider implementation.
Configuration menu - View commit details
-
Copy full SHA for 9de5307 - Browse repository at this point
Copy the full SHA 9de5307View commit details -
Configuration menu - View commit details
-
Copy full SHA for 2346085 - Browse repository at this point
Copy the full SHA 2346085View commit details -
Configuration menu - View commit details
-
Copy full SHA for b14e72c - Browse repository at this point
Copy the full SHA b14e72cView commit details -
Refactor to use XChange CoinMarketCap library
To simplify our CoinMarketCap provider implementation.
Configuration menu - View commit details
-
Copy full SHA for 44ca9ac - Browse repository at this point
Copy the full SHA 44ca9acView commit details -
Configuration menu - View commit details
-
Copy full SHA for 5710415 - Browse repository at this point
Copy the full SHA 5710415View commit details -
Configuration menu - View commit details
-
Copy full SHA for 99a50d0 - Browse repository at this point
Copy the full SHA 99a50d0View commit details -
Refactor to use XChange Poloniex library
To simplify our Poloniex provider implementation.
Configuration menu - View commit details
-
Copy full SHA for 314d4ab - Browse repository at this point
Copy the full SHA 314d4abView commit details -
Reformat to 4-space continuation indents
I've gone back and forth on this style setting over time. As lambdas have become more prevalent since Java 8, I think it's time to favor 4-space continuation indents over 8-space. I'll try it here in bisq-pricenode for now, and we can see about standardizing on that elsewhere later.
Configuration menu - View commit details
-
Copy full SHA for 3e32ffb - Browse repository at this point
Copy the full SHA 3e32ffbView commit details -
Remove ExchangeRateService#removeOutdatedPrices
This is no longer necessary now that the data structure that stores this information is no longer long-lived. It is recreated on each call to getAllMarketData, which in turn returns the latest cached data from underlying providers. This data is never older than the individual providers' TTLs, so there is never 30-minute old data to purge, which is what this method was for; it's just obsolete now.
Configuration menu - View commit details
-
Copy full SHA for f7927f9 - Browse repository at this point
Copy the full SHA f7927f9View commit details -
Configuration menu - View commit details
-
Copy full SHA for c1bc990 - Browse repository at this point
Copy the full SHA c1bc990View commit details -
Configuration menu - View commit details
-
Copy full SHA for 8d23e93 - Browse repository at this point
Copy the full SHA 8d23e93View commit details -
Add ExchangeRate convenience constructor
This pushes type conversation logic down into ExchangeRate, leaving instantiation sites that much more clear and DRY.
Configuration menu - View commit details
-
Copy full SHA for 3e84b0d - Browse repository at this point
Copy the full SHA 3e84b0dView commit details -
Configuration menu - View commit details
-
Copy full SHA for c57a1a3 - Browse repository at this point
Copy the full SHA c57a1a3View commit details -
Configuration menu - View commit details
-
Copy full SHA for 4db05f4 - Browse repository at this point
Copy the full SHA 4db05f4View commit details -
Configuration menu - View commit details
-
Copy full SHA for 34dd139 - Browse repository at this point
Copy the full SHA 34dd139View commit details -
Configuration menu - View commit details
-
Copy full SHA for f9e8307 - Browse repository at this point
Copy the full SHA f9e8307View commit details -
Return Set<ExchangeRate> from ExchangeRateProvider#request
vs. the previous, unnecessarily complex Map<String, ExchangeRate> structure.
Configuration menu - View commit details
-
Copy full SHA for ef721eb - Browse repository at this point
Copy the full SHA ef721ebView commit details -
Configuration menu - View commit details
-
Copy full SHA for 24cd258 - Browse repository at this point
Copy the full SHA 24cd258View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5e06ec3 - Browse repository at this point
Copy the full SHA 5e06ec3View commit details
Commits on Feb 11, 2018
-
Make ExchangeRateProvider extend Supplier<Set<ExchangeRate>>
- Rename ExchangeRateProvider#{request => get} - Remove throws IOException from same
Configuration menu - View commit details
-
Copy full SHA for 3f30f20 - Browse repository at this point
Copy the full SHA 3f30f20View commit details -
Update field names in ExchangeRateProvider implementations
Accessors had been updated earlier; this commit just catches the field names up.
Configuration menu - View commit details
-
Copy full SHA for 3ef1998 - Browse repository at this point
Copy the full SHA 3ef1998View commit details -
Refactor to lambda expression in ExchangeRateService
This is possible in a more convenient way now that #get (formerly #request) no longer throws IOExcption
Configuration menu - View commit details
-
Copy full SHA for dee5b37 - Browse repository at this point
Copy the full SHA dee5b37View commit details -
Fix null response from /getAllMarketPrices
Utilities.objectToJson couldn't handle the anonymous LinkedHashMap that was being returned from ExchangeRateService#getAllMarketPrices, and was silently returning null.
Configuration menu - View commit details
-
Copy full SHA for fbefa2f - Browse repository at this point
Copy the full SHA fbefa2fView commit details -
Replace Gson serialization with Jackson
And go back to returning an anonymous LinkedHashMap from ExchangeRateService#getAllMarketPrices--Jackson handles this just fine.
Configuration menu - View commit details
-
Copy full SHA for 81be033 - Browse repository at this point
Copy the full SHA 81be033View commit details -
Configuration menu - View commit details
-
Copy full SHA for d69ae4a - Browse repository at this point
Copy the full SHA d69ae4aView commit details -
Eliminate the need for BitcoinAverage API keys
BitcoinAverage's "short ticker" API [1] provides all the data we need and does not require a paid plan. This commit switches to using this free API and removes everything related to authenticating against the paid BitcoinAverage API, simplifying considerably the implementation, alongside saving pricenode operators money and secret management / setup hassle. Note that TTLs for caching have been kept the same (3.5m for Global, 1.5m for Local) to ensure that this is a pure refactoring, however we'll probably want to normalize these values later. [1]: https://apiv2.bitcoinaverage.com/#short-ticker
Configuration menu - View commit details
-
Copy full SHA for 5a67f54 - Browse repository at this point
Copy the full SHA 5a67f54View commit details -
Remove now-obsolete ExchangeRateProvider#configure hook
With the previous commit, there is no longer a need to configure any ExchangeRateProvider implementation e.g. with environment variables after instantiation, so this commit simply removes the hook altogether and further simplifies things.
Configuration menu - View commit details
-
Copy full SHA for 4951989 - Browse repository at this point
Copy the full SHA 4951989View commit details
Commits on Feb 12, 2018
-
Revert "Remove now-obsolete ExchangeRateProvider#configure hook"
This reverts commit 4951989 for reasons at bisq-network#7 (comment).
Configuration menu - View commit details
-
Copy full SHA for b137048 - Browse repository at this point
Copy the full SHA b137048View commit details -
Revert "Eliminate the need for BitcoinAverage API keys"
This reverts commit 5a67f54 for reasons at bisq-network#7 (comment).
Configuration menu - View commit details
-
Copy full SHA for d741dbc - Browse repository at this point
Copy the full SHA d741dbcView commit details -
Configuration menu - View commit details
-
Copy full SHA for 875b2cf - Browse repository at this point
Copy the full SHA 875b2cfView commit details -
Make sure that failures at pricenode startup kill the JVM, and that failures on scheduled requests do not. The Timer objects used to schedule requests are backed by non-daemon threads by default. This means that they keep the JVM alive until they are explicitly shut down. Generally, this is what we want: a Pricenode should run indefinitely once started, periodically fetching and caching new price information and returning it to Bisq clients on request. However, if there is a failure at startup time, for example because of a missing or invalid BitcoinAverage keypair, the error should be reported and the JVM should halt immediately. To make this happen, this commit introduces a Pricenode#stop method, which is called any time an exception propagates all the way up to the main method. This #stop method ultimately calls Timer#cancel on all underlying timer objects, shutting down these non-daemon threads and allowing the JVM to halt as expected. In the case of errors that occur after startup, for example one of our exchange rate providers like BitcoinAverage having an outage, we most certainly do *not* want our Pricenode to halt, and for this reason we catch any such exceptions within the scheduled call logic and simply report it to the console; we do not rethrow the exception and allow it to propagate up the stack and kill the JVM. In the future, we might want to introduce exponential backoffs, circuit-breaker style functionality and alerting mechanisms to make operators aware of these kinds of failures, but for now the goal is to make sure that basic error handling works as it should, i.e. allowing Pricenodes to continue operating indefinitely even in the face of an unreliable network and unreliable provider endpoints. Throughout the codebase, explicitly 'throws IOException' clauses have been removed in favor of catching IOException, wrapping and rethrowing them as UncheckedIOException. This change facilitates all those mentioned above. Note that this change is not strictly a refactoring as it does change the behavior of handling errors that occur at startup time, but it is still a refactoring in spirit as it does not affect the behavior of the application at runtime.
Configuration menu - View commit details
-
Copy full SHA for c0eb50a - Browse repository at this point
Copy the full SHA c0eb50aView commit details -
Remove legacy log initialization logic
This change is not strictly a refactoring as it means that logs are no longer written to $HOME/provider, but it is assumed that this is not a problem for operators, and not critical to the operation of their nodes. It does not change the runtime behavior of a pricenode in any way. It is assumed that this kind of log initialization logic was more or less copied-and-pasted from the main bisq-network/exchange log initialization logic, and not terribly important that it worked this way. It is being removed here in anticipation of introducing Spring Boot, which will have it's own log management logic that 'just works' in a well-known way.
Configuration menu - View commit details
-
Copy full SHA for 5dec7ec - Browse repository at this point
Copy the full SHA 5dec7ecView commit details -
Migrate runtime and configuration to Spring
This change introduces the latest version of Spring Boot to: - Replace the Spark web framework and its underlying use of Jetty with Spring MVC and Spring Boot's default embedded Tomcat runtime - Replace our own custom Environment with Spring's Environment - Replace our own ServiceLoader based instantiation with Spring's annotation-based dependency injection Along the way, this change also removes the use of Gradle's 'application' plugin (and its generated scripts) altogether in favor of Spring Boot's Gradle plugin and the fat executable jar it creates. All README instructions, etc have been updated accordingly. Again, this is all pure refactoring, no behavior changes to the running app. Generally, these changes make the application simpler, smaller and easier to deal with. This commit is the beginning of several to follow, which will migrate other aspects of the application to use Spring infrastructure rather than rolling our own.
Configuration menu - View commit details
-
Copy full SHA for 96a98fd - Browse repository at this point
Copy the full SHA 96a98fdView commit details -
Configuration menu - View commit details
-
Copy full SHA for 696021b - Browse repository at this point
Copy the full SHA 696021bView commit details -
Fix incompatible JSON serialization in /getAllMarketPrices
Previous changes in this branch modified the format of the 'data' element returned by /getAllMarketPrices such that its value was a map of maps, rather than an array of maps, as it should be. This change restores the shape of the data to the latter. This change also fixes the naming of the keys in the array of maps to confirm to the existing format, e.g. 'timestampSec' instead of 'timestamp', and 'currencyCode' instead of 'currency'. This is done with explicit @JsonProperty annotations such that (a) the naming of the members in the code can remain as-is, and (b) so that any future changes to those members' names do not cause a similar incompatibility to arise.
Configuration menu - View commit details
-
Copy full SHA for 58cd243 - Browse repository at this point
Copy the full SHA 58cd243View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1cb7b31 - Browse repository at this point
Copy the full SHA 1cb7b31View commit details -
Configuration menu - View commit details
-
Copy full SHA for 50e0c81 - Browse repository at this point
Copy the full SHA 50e0c81View commit details -
Extract util.VersionController from app.Pricenode
And eliminate 'app' package altogether
Configuration menu - View commit details
-
Copy full SHA for 3adbb24 - Browse repository at this point
Copy the full SHA 3adbb24View commit details -
Extract common controller logging to WebConfig
This class consolidates previously duplicated logic for logging incoming requests. An alternative approach would have been to introduce a common base class for all controllers with a @ModelAttribute method. This might be a better approach in the end, as it ends up clearly logging which controller is going to handle the request. Here, the logging category is always bisq.price.WebConfig, which does not make it obvious which controller will actually handle the request.
Configuration menu - View commit details
-
Copy full SHA for 7e9c9c1 - Browse repository at this point
Copy the full SHA 7e9c9c1View commit details -
Configuration menu - View commit details
-
Copy full SHA for d91f4b1 - Browse repository at this point
Copy the full SHA d91f4b1View commit details
Commits on Feb 13, 2018
-
Fix incompatible data handling in ExchangeRateService
This commit partially reverts 58cd243, moving the data structure used to collect all exchange rates back to a Map. The earlier commit inadvertently caused duplicate entries to be created for certain currencies, as opposed to letting the last provider to report a given currency exchange rate to "win" and override any previous entry.
Configuration menu - View commit details
-
Copy full SHA for 72c84a1 - Browse repository at this point
Copy the full SHA 72c84a1View commit details -
Configuration menu - View commit details
-
Copy full SHA for e5e4a9c - Browse repository at this point
Copy the full SHA e5e4a9cView commit details -
Configuration menu - View commit details
-
Copy full SHA for c234628 - Browse repository at this point
Copy the full SHA c234628View commit details -
Configuration menu - View commit details
-
Copy full SHA for 9c0bcc0 - Browse repository at this point
Copy the full SHA 9c0bcc0View commit details -
Configuration menu - View commit details
-
Copy full SHA for 7f2f5a3 - Browse repository at this point
Copy the full SHA 7f2f5a3View commit details
Commits on Feb 14, 2018
-
Introduce bisq.price.PriceProvider base class
This generic abstract base class eliminates the need for AbstractExchangeRateProvider and CachingExchangeRateProvider and will (in subsequent commits) serve as the base class for FeeEstimationProvider on the mining side as well. The net effect is that there will be a single place where scheduled caching logic is defined. Note also the new onRefresh hook and it's overridden implementation in ExchangeRateProvider for logging purposes.
Configuration menu - View commit details
-
Copy full SHA for 79538d6 - Browse repository at this point
Copy the full SHA 79538d6View commit details -
Configuration menu - View commit details
-
Copy full SHA for 707b196 - Browse repository at this point
Copy the full SHA 707b196View commit details -
Configuration menu - View commit details
-
Copy full SHA for 2dc30d3 - Browse repository at this point
Copy the full SHA 2dc30d3View commit details -
Configuration menu - View commit details
-
Copy full SHA for 2c77008 - Browse repository at this point
Copy the full SHA 2c77008View commit details -
Configuration menu - View commit details
-
Copy full SHA for 2f0b0fb - Browse repository at this point
Copy the full SHA 2f0b0fbView commit details -
Configure IDEA to create package-private classes by default
To encourage minimizing type visibility wherever possible.
Configuration menu - View commit details
-
Copy full SHA for cd76471 - Browse repository at this point
Copy the full SHA cd76471View commit details -
Configuration menu - View commit details
-
Copy full SHA for e5bf166 - Browse repository at this point
Copy the full SHA e5bf166View commit details -
Push /getParams endpoint into BitcoinFeeRateProvider$Controller
This endpoint will soon be deprecated and eventually removed. In the meantime, pushing it down into an inner class of BitcoinFeeRateProvider allows the latter to take on package-private visibility like all other FeeRateProvider implementations, and also reduces the complexity of FeeRateController.
Configuration menu - View commit details
-
Copy full SHA for fc79856 - Browse repository at this point
Copy the full SHA fc79856View commit details -
Refactor BitcoinFeeRateProvider for clarity
Normalize the way command line options are handled, and remove now-obsolete getters for capacity, maxBlocks and ttl.
Configuration menu - View commit details
-
Copy full SHA for 5f9541a - Browse repository at this point
Copy the full SHA 5f9541aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 1350b47 - Browse repository at this point
Copy the full SHA 1350b47View commit details -
Restore original order of BitcoinAverage ctor params
The order of parameters to these constructors was accidentally changed in commit 96a98fd. This commit restores the previous, more logical order.
Configuration menu - View commit details
-
Copy full SHA for ae74368 - Browse repository at this point
Copy the full SHA ae74368View commit details -
Configuration menu - View commit details
-
Copy full SHA for ba51fe5 - Browse repository at this point
Copy the full SHA ba51fe5View commit details -
Replace WebConfig with PriceController base class
As suggested in commit 7e9c9c1, this refactors away from the HandlerInterceptor-based WebConfig to a simpler and more intuitive PriceController base class that logs all incoming requests. It's a bit awkward to have VersionController extend PriceController, but the former will go away soon enough anyway.
Configuration menu - View commit details
-
Copy full SHA for 1228167 - Browse repository at this point
Copy the full SHA 1228167View commit details -
Configuration menu - View commit details
-
Copy full SHA for aefc452 - Browse repository at this point
Copy the full SHA aefc452View commit details -
Remove use of io.bisq.common.util.MathUtils
The #roundDoubleToLong functionality is not necessary here. Values coming in from bitcoinfees are always some number of satoshis followed by a single zero decimal value, e.g. 0.0, 10.0, 20.0, etc. This means that the standard Double#longValue() is sufficient. This is being done toward the larger goal of removing completely our dependency on the bisq-exchange:core library.
Configuration menu - View commit details
-
Copy full SHA for af5002c - Browse repository at this point
Copy the full SHA af5002cView commit details -
Upgrade to bisq-exchange:network:v0.6.5
We were previously using bisq-exchange:core:v0.6.4, but all that's necessary now (and perhaps all that was ever necessary) is bisq-exchange:network.
Configuration menu - View commit details
-
Copy full SHA for cce8020 - Browse repository at this point
Copy the full SHA cce8020View commit details -
Replace bisq-network HttpClient w/ Spring RestTemplate
And simultaneously replace use of Jackson ObjectMapper with RestTemplate's built-in (but still Jackson-based) JSON conversion. This commit also removes the verbose 'Get recommended fee response' log message. It is assumed this was added for debugging purposes originally, and then left in place by accident. Logs are much tighter now.
Configuration menu - View commit details
-
Copy full SHA for 9929284 - Browse repository at this point
Copy the full SHA 9929284View commit details -
Remove unused Logback IDEA import layout entry
As we're no longer coding against this API anywhere.
Configuration menu - View commit details
-
Copy full SHA for b34e785 - Browse repository at this point
Copy the full SHA b34e785View commit details -
Configuration menu - View commit details
-
Copy full SHA for efca8c3 - Browse repository at this point
Copy the full SHA efca8c3View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5e7989e - Browse repository at this point
Copy the full SHA 5e7989eView commit details
Commits on Feb 15, 2018
-
Configuration menu - View commit details
-
Copy full SHA for 1c7e72c - Browse repository at this point
Copy the full SHA 1c7e72cView commit details -
Derive version from latest git tag
This change replaces the previous custom version management with Palantir's git-version Gradle plugin, which derives the application version based on the output of `git describe`. See the git-describe manpage for details about how this works. The benefit of this approach is that we never need to manually change the version string in a text file. Git is the canonical source of version information, as it should be. And thanks to the way `git describe` works, our version strings will always include precise information about exactly what commit the application was built from. For example, if the application was built from the v0.7.1 tag, the version string will be "v0.7.1". If, however, the application was built from a revision 3 commits after the v0.7.1 tag, the version string will be "v0.7.1-3-g1234567", where "1234567" is the short version of the git commit hash from which the application was built. Again, see the git-describe manpage for full details. This change also enables the default set of Spring Boot actuator endpoints, and configures application.properties such that the application version is exposed via the /info endpoint. This will eventually replace the need for VersionController altogether, but it (and its /getVersion) endpoint has been left in place for compatibility with existing monitoring solutions. We are no longer writing Implementation-Title and Implementation-Version metadata in the jar manifest, as we are no longer reading it anywhere. It wouldn't hurt to leave it, but removing it simplifies the build script and removes confusion about the source of version information in the application. Finally, this change modifies the startup banner to include the version string, but in order to do so, it was necessary to escape all backslashes in banner.txt to avoid exceptions being thrown from Groovy's SimpleTemplateEngine.
Configuration menu - View commit details
-
Copy full SHA for 64f51ee - Browse repository at this point
Copy the full SHA 64f51eeView commit details -
Add detailed Git metadata to /info endpoint
This is just a test to see what the data looks like. It will be reverted immediately afterward, as it's not clear that we need this information. Here is an example of what the /info endpoint looks like with this plugin in the mix: $ curl http://localhost:8080/info { "version" : "v0.7.0-162-g64f51ee.dirty", "git" : { "commit" : { "time" : 1518689646000, "message" : { "full" : "Derive version from latest git tag", "short" : "Derive version from latest git tag" }, "id" : "64f51eecd4a17b17e0a96adf4cb2a8b5806eb3b2", "id.abbrev" : "64f51ee", "id.describe" : "64f51ee-dirty", "user" : { "email" : "chris@beams.io", "name" : "Chris Beams" } }, "dirty" : "true", "branch" : "refactor" } }
Configuration menu - View commit details
-
Copy full SHA for 69618cf - Browse repository at this point
Copy the full SHA 69618cfView commit details -
Revert "Add detailed Git metadata to /info endpoint"
This reverts commit 69618cf. As mentioned in the previous commit, this was just a test, and has been explicitly committed and reverted here in case we want to add this functionality back in later.
Configuration menu - View commit details
-
Copy full SHA for 52c207d - Browse repository at this point
Copy the full SHA 52c207dView commit details -
Configure Heroku to handle Git-based app version
Even though Heroku is fundamentally Git-based, it does not actually keep the .git directory in place in the final directory where the application is launched. This change introduces a custom Heroku buildpack that clones a target repository at a given revision / branch and drops its .git directory into the Heroku application directory such that Gradle-based Git version management (introduced in previous commits) can work as intended. It is important that the value of GIT_CLONE_URL and GIT_CLONE_SHA are the same Git remote that causes automatic deployments to Heroku. Note that it is still fine to push directly to the Heroku remote, e.g. with `git push heroku some-local-branch:master`, but the version string will always show up as 'dirty' when you do this.
Configuration menu - View commit details
-
Copy full SHA for 7de26d7 - Browse repository at this point
Copy the full SHA 7de26d7View commit details -
Configuration menu - View commit details
-
Copy full SHA for c858e27 - Browse repository at this point
Copy the full SHA c858e27View commit details
Commits on Feb 16, 2018
-
Configuration menu - View commit details
-
Copy full SHA for 513d9dd - Browse repository at this point
Copy the full SHA 513d9ddView commit details -
Configuration menu - View commit details
-
Copy full SHA for a41d94f - Browse repository at this point
Copy the full SHA a41d94fView commit details -
Run PriceProvider#timer instances as daemon threads
This ensures that when an exception is thrown at Spring container startup time, the application will actually exit, as opposed to staying running after the exception has been thrown. This change is closely related to similar changes made in c0eb50a prior to the introduction of Spring, and acheives the same effect: failing fast and actually shutting down the JVM when there is an exception at startup time.
Configuration menu - View commit details
-
Copy full SHA for fcb46f5 - Browse repository at this point
Copy the full SHA fcb46f5View commit details -
Make PriceProvider implement Spring's SmartLifecycle
Prior to this change, PriceProvider was having its start() method called as a @PostConstruct hook. This isn't really what we want, because it ends up calling start immediately after instantiation of the provider. What we really want is for all provider start() methods to be called after all providers (and other beans) have been instantiated successfully. The best way to do this is to register for Spring container lifecycle hooks by implementing SmartLifecycle. Now, all PriceProvider beans are "auto-started" when the Spring container is refreshed, i.e. after all Spring-managed beans have been constructed and initialized.
Configuration menu - View commit details
-
Copy full SHA for 7a4fd67 - Browse repository at this point
Copy the full SHA 7a4fd67View commit details -
Configuration menu - View commit details
-
Copy full SHA for 30dcaaf - Browse repository at this point
Copy the full SHA 30dcaafView commit details -
Revert to simple version management
This change largely reverts Git-based versioning introduced in commit 7de26d7, as in the end it introduced too much complexity and special handling for the Heroku case. It would probably have caused other problems for other hosting providers and deployment scenarios as well. Now the version is once again hard-coded in the build script. This is an unfortunate decoupling from and duplication of version information in Git itself, and means that it's possible to forget to change the version and deploy a revision of the application that is actually different than the advertised version with no easy way of knowing that this happened, but that's no different than most applications. Given how much simpler an arrangement this presents, it's the favorable one, even if it requires a bit more diligence and loses a little information.
Configuration menu - View commit details
-
Copy full SHA for 26a0247 - Browse repository at this point
Copy the full SHA 26a0247View commit details -
Read version from classpath:version.txt
This change moves the application's version to src/main/resources/version.txt instead of tracking it in the Gradle build file. This allows for reliably reading and presenting the contents of the version file regardless of whether the application was built via Gradle or via IDEA. Previously, the /getVersion and /info endpoints relied on application.properties being process via Gradle's processResources task. Now everything works identically whether run from Gradle or IDEA, and this also avoids the awkward problem of Spring and Gradle competing for ${...}-formatted placeholder replacement. Note that the version is still written to the jar manifest file, as this is what Spring Boot reads from in order to replace the ${application.version}, or now ${application.formatted-version} placeholder in banner.txt. See https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-banner for details.
Configuration menu - View commit details
-
Copy full SHA for ea99368 - Browse repository at this point
Copy the full SHA ea99368View commit details -
Configuration menu - View commit details
-
Copy full SHA for c14bdf2 - Browse repository at this point
Copy the full SHA c14bdf2View commit details -
Configuration menu - View commit details
-
Copy full SHA for 34d6909 - Browse repository at this point
Copy the full SHA 34d6909View commit details -
Support a ~/.config/bisq.properties config file
If present, this file is loaded and provided to the Spring application context as an additional source of properties, providing a more convenient and persistent way to specify properties like the required BitcoinAverage keypair. Specifying these properties via environment variables remains supported as always. Note that this file is called bisq.properties, and not, e.g. bisq-pricenode.properties in anticipation that we may want to use this same config file for similar convenient configuration of other Bisq node types including exchange nodes themselves.
Configuration menu - View commit details
-
Copy full SHA for 5f2a7a8 - Browse repository at this point
Copy the full SHA 5f2a7a8View commit details -
These values are what all operators are currently using in production. This change sets these values by default. In the future, such changes should be propagated by commits, not by one-off command-line parameter changes. This means we can consider eliminating the command line options entirely, which would also remove complexity from the implementation of BitcoinFeeRateProvider.
Configuration menu - View commit details
-
Copy full SHA for 6089480 - Browse repository at this point
Copy the full SHA 6089480View commit details
Commits on Feb 19, 2018
-
Make VersionController extend PriceController
In order to pick up the request logging that happens in the superclass. This will be useful to see when bisq-monitoring is pinging the application for its version.
Configuration menu - View commit details
-
Copy full SHA for 0af9900 - Browse repository at this point
Copy the full SHA 0af9900View commit details
Commits on Feb 22, 2018
-
Configuration menu - View commit details
-
Copy full SHA for 206c398 - Browse repository at this point
Copy the full SHA 206c398View commit details -
Rename PriceProvider#{ttl => refreshInterval}
Per review comments at bisq-network#7 (comment)
Configuration menu - View commit details
-
Copy full SHA for 3df25dd - Browse repository at this point
Copy the full SHA 3df25ddView commit details -
Remove BitcoinFeeRateProvider#capacity parameter
Also remove #movingAverage fee rate smoothing logic per review comments at bisq-network#7 (comment) IMPORTANT: @bisq-network/pricenode-operators must remove the first of their three command line parameters, as the first has been removed and no longer represents 'capacity'
Configuration menu - View commit details
-
Copy full SHA for bf3056a - Browse repository at this point
Copy the full SHA bf3056aView commit details
Commits on Feb 26, 2018
-
Configuration menu - View commit details
-
Copy full SHA for a87d652 - Browse repository at this point
Copy the full SHA a87d652View commit details
Commits on Mar 9, 2018
-
Configuration menu - View commit details
-
Copy full SHA for 9f5cf6a - Browse repository at this point
Copy the full SHA 9f5cf6aView commit details
Commits on Mar 12, 2018
-
Configuration menu - View commit details
-
Copy full SHA for 4c476ec - Browse repository at this point
Copy the full SHA 4c476ecView commit details -
Configuration menu - View commit details
-
Copy full SHA for b62855f - Browse repository at this point
Copy the full SHA b62855fView commit details
Commits on Mar 14, 2018
-
Configuration menu - View commit details
-
Copy full SHA for f42d9fa - Browse repository at this point
Copy the full SHA f42d9faView commit details -
Configuration menu - View commit details
-
Copy full SHA for 5650ae6 - Browse repository at this point
Copy the full SHA 5650ae6View commit details
Commits on Mar 15, 2018
-
Reduce Travis CI Slack notification frequency
Per https://docs.travis-ci.com/user/notifications/#Configuring-Slack-notifications the default setting for Travis Slack notifications is to send a message on every successful build. This commit changes this frequency, such that notifications are always sent when builds fail and only sent when builds succeed after a previous failure.
Configuration menu - View commit details
-
Copy full SHA for d53300d - Browse repository at this point
Copy the full SHA d53300dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 1a6a601 - Browse repository at this point
Copy the full SHA 1a6a601View commit details
Commits on Mar 16, 2018
-
Re-introduce custom tor-binary Maven repository
This is necessary now that bisq-pricenode is once again dependent on bisq-p2p in order to avoid failures like those seen at https://travis-ci.org/cbeams/bisq-pricenode/builds/353714246#L671-L689.
Configuration menu - View commit details
-
Copy full SHA for c61ca98 - Browse repository at this point
Copy the full SHA c61ca98View commit details -
Normalize .idea/codeStyles/*.xml EOF newlines
IDEA does strips EOF newlines in these files, so this commit adds an exception to the usual rule about inserting them. This will avoid spurious whitespace diffs on these files in the future.
Configuration menu - View commit details
-
Copy full SHA for 123f2f3 - Browse repository at this point
Copy the full SHA 123f2f3View commit details -
Preserve blank lines in .properties files
This setting is actually necessary only in bisq-common, but it has been added to the shared codeStyles/Project.xml in bisq-network/dao so as to be able to copy the same configuration file to all bisq-* projects.
Configuration menu - View commit details
-
Copy full SHA for 02edfef - Browse repository at this point
Copy the full SHA 02edfefView commit details -
Wrap lines automatically at 120 character margin
Problem: bisq-network/style#3 indicates code should be wrapped at 120 characters, but it is likely that people will forget and that this habit will only change slowly. Solution: Configure IDEA to wrap lines automatically when typing past 120 characters, forcing the reminder to happen in real time. If this becomes a nuisance, we can remove it later. Note that this change also explicitly sets the RIGHT_MARGIN value to 120, even though this is already IDEA's default value. This is simply to be explicit and self-documenting.
Configuration menu - View commit details
-
Copy full SHA for f22814d - Browse repository at this point
Copy the full SHA f22814dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 9ebf7d6 - Browse repository at this point
Copy the full SHA 9ebf7d6View commit details
Commits on Mar 21, 2018
-
Use 'master' tor-binary Maven repository
For reasons detailed in bisq-network/bisq-p2p@b1528bf3.
Configuration menu - View commit details
-
Copy full SHA for b8980fc - Browse repository at this point
Copy the full SHA b8980fcView commit details
Commits on Mar 22, 2018
-
Increase Gradle HTTP timeouts from 30 => 120 seconds
Problem: Gradle's default 30 second HTTP timeouts often cause bisq-* component builds to fail when resolving dependencies built on the fly via JitPack, e.g.: https://travis-ci.org/bisq-network/bisq-core/builds/356777615#L518-L525. Solution: Increase timeout values to 120 seconds, which should be more that sufficient. See: - gradle/gradle#3370 - gradle/gradle#3371 - gradle/gradle#4629
Configuration menu - View commit details
-
Copy full SHA for ca65c30 - Browse repository at this point
Copy the full SHA ca65c30View commit details -
Configuration menu - View commit details
-
Copy full SHA for d46365f - Browse repository at this point
Copy the full SHA d46365fView commit details
Commits on Mar 23, 2018
-
Configuration menu - View commit details
-
Copy full SHA for 286baf4 - Browse repository at this point
Copy the full SHA 286baf4View commit details
Commits on Apr 5, 2018
-
Revert "Enable Travis CI Gradle dependency caching"
This reverts commit d46365f.
Configuration menu - View commit details
-
Copy full SHA for f544007 - Browse repository at this point
Copy the full SHA f544007View commit details
Commits on Apr 17, 2018
-
Configuration menu - View commit details
-
Copy full SHA for 47115f6 - Browse repository at this point
Copy the full SHA 47115f6View commit details -
And in particular, document the semantics of our use of Spring's @order annotation per review comments at bisq-network/bisq-pricenode#7 (comment).
Configuration menu - View commit details
-
Copy full SHA for a271dcb - Browse repository at this point
Copy the full SHA a271dcbView commit details