Over the past several weeks, Holochain Core has shipped several releases fixing some critical blockers and performance issues that cropped up after the introduction of sim2h in November. These issues were making it challenging to test hApps. Thankfully, due to hard work and diligence, Holochain Core and the networking simulator no longer have these impediments, and we can move back to adding new features and improving Holochain Core’s performance at scale. Additionally (and excitingly), you can start deploying your apps to users, testing, and getting feedback!
The Holoscape 0.0.4-alpha Release included the conductor introduced previously in the Holochain Core releases, giving you much improved performance and a better user experience. It also brings improvements to the debug view, showing an instance’s zome function calls and DHT state. This can help you get insight into the causes of latency within your app.
- Holochain Core releases 0.0.39-alpha1 and 0.0.40-alpha1, a usable stack for developers and users.
- Holoscape 0.0.4-alpha contains an updated Holochain conductor and brings new debugging tools.
Holochain Core releases 0.0.39-alpha1 and 0.0.40-alpha1, a usable stack for developers and users.
We released sim2h in November, bringing a working network layer to Holochain so that developers could start deploying their applications on semi-centralized testnets. This made it possible to use apps over the actual internet—and in the process, uncovered some bugs in Holochain Core. These included:
- Overflowing threads—The Holochain Core conductor had been spawning an unlimited number of threads. This was fine for small test cases, but in a bigger environment, it ended up causing the system to break. Zome calls and holding entries, for example, might have just one root thread, but would spawn a bunch of sub-threads. The root thread would then halt until the sub-threads were completed.
- Naive timeout implementation—We found that queries and DMs were just spawning a thread, letting it sleep for the timeout, then dispatching an action.
- Failing Rust tests—When an instance would be shut down, a redux action loop would panic after not being able to get a lock on the state, preventing the Rust tests from passing.
- Sim2h holding on to a node after a lost connection—This led to problems when the agent reconnected.
- Infinite gossip loop—Virtual headers of source chain header entries were created with current/dynamic timestamps and chain links, leading to the entries being different every time they were requested.
These bugs caused deadlocks and performance problems, quickly rendering applications unusable. Needless to say, this was a big blocker in getting developers and end users to app test.
With the release of Core 0.0.39-alpha1 and 0.0.40-alpha1, those big blockers are now gone, meaning that apps can truly be tested by end users. The fixes and enhancements in these two releases fall into three main categories:
- Deadlocks removed—We’ve combed through the codebase to find all the sources of the deadlocks mentioned above and are confident we’ve resolved them all. This includes making the Holochain Core process for managing threads more efficient, implementing an optimized process for timeouts, and fixing the infinite gossip loop problem. We’ve also gotten sim2h to tidy up after nodes go offline.
- Gossip improvements—We’ve written more intelligent logic for entry and metadata propagation, thereby substantially reducing the network load during testing in sim2h.
- Performance work—We fixed a memory leak that had become a problem in Holochain Core with long-running instances, as well as reduced memory use and improved performance in the core processing loop. In some critical places, this has amounted to 5x speed improvements, making the experience of running an application much more exciting.
Unblocked by these breakthroughs, developers have already begun testing HoloFuel and other apps on the public internet. For the Holochain Crew Team, it means that for now, our primary focus will continue to be on fixing bugs, scalability, and improving performance. We’ll also be able to shift some attention back to improving features and UX for Holochain Core, in addition to fine-tuning how Holochain Core performs at scale.
Holoscape 0.0.4-alpha contains an updated Holochain conductor and brings new debugging tools.
While release 0.0.4-alpha of Holoscape doesn’t have many improvements in and of itself, the addition of the new conductor and debugging tools means it will vastly improve performance and user experience.
This version of Holoscape’s 0.0.4-alpha bundled conductor is at version 0.0.40-alpha1. It brings all the bug fixes and improvements mentioned in the last section.
In addition to being an easy-to-use hApp runtime, Holoscape also gives developers some powerful state inspection tools. The console log prints out all the same information, but very little of that stream is generated in a form that humans can readily understand and use to gain insight. The conductor’s debugging tools, on the other hand, let you inspect the state of the agent’s source chains and DHT shards so you know exactly what’s been written and received. This helps you determine whether problems are being caused by your app’s code or by the eventually consistent behavior of the DHT.
In this release, we’ve added the ability to inspect your DHT shard’s ‘holding queue,’ the list of entries and metadata waiting to be validated and stored. This lets you figure out why an entry hasn’t yet shown up on the DHT—is it blocked by dependencies, or is your internet just slow today?
You can also see the queued, running, and completed zome calls for each of your instances, along with the parameters supplied to them. Completed zome calls also show their return values.
We’ve also improved the responsiveness of the debug view and fixed a few minor bugs. We have a video that walks through how the debugging process works, using the HoloFuel App as an example. Check it out the Holoscape instance debug view demo video!
Holochain Core Concepts and Tutorials
We want to hear from you! Help us create documentation that would benefit your understanding of Holochain and aid you in building apps. If you have already read, explored, or completed the Holochain Core Concepts and Tutorials, we would appreciate your input through this quick survey! Please take a moment to tell us about your experience and how we might help you further!