mirror of
https://github.com/corda/corda.git
synced 2025-01-26 22:29:28 +00:00
williamvigorr3
ab000e0533
CORDA-3597 Replace old Checkpoint table with new one. (#5992)
* Replace old Checkpoint table with new one. Adds some of the new fields into the table where needed (I have guessed this stuff but we can update it as we go along). * Fix database constraints + name table correctly opps. * Fixed typos in Liquidbase script Also corrected constraints and added missed fields in hibernate checkpoint class and liquibase scripts. * Update CheckpointStorage to pass in serialization context. This is cleaner than passing both the checkpoint and the serialized checkpoint into the methods. Also fixed CordaPersistanceServiceTests which I accidentally broke. * Fix detekt problem * Revert "Update CheckpointStorage to pass in serialization context." This reverts commit b71e78f20274ab0f5b3cf3fda1451ae2bd7a6797. * Fix test broken by reverting commit * CORDA-3597 Update metadata join, timestamp columns and serialization - Change the metadata join to the checkpoints table to use `invocation_id` instead of `flow_id`. There were issues joining between the tables because `flow_id` was not the primary key of the metadata table. Switching over to `invocation_id` has at least allowed us to bypass this issue. The information about the `invocation_id` is stored in the `Checkpoint` class which makes it simple to save at runtime. - Some of timestamp columns were nullable when they should always be populated, the nullable flags have now been removed. - Previously the whole checkpoint was being serialized and stored into the `checkpoints_blob.checkpoint` column. This meant duplicated saving as the `flow_state` was contained in this object. Only the `CheckpointState` property of `Checkpoint` is now being serialized and saved to this field. Furthermore, it now uses the default `STORAGE_CONTEXT` serialization (AMQP) instead of Kryo (which is only used for serializing the `flow_state` / flow stack). - The checkpoint database performance metrics recording has been abstracted to its own class. * CORDA-3597 Make metadata join non optional Remove the nullable declaration on the metadata field of `DBFlowCheckpoint` * CORDA-3597 Rename `node_checkpoints_blobs` to `node_checkpoint_blobs` * CORDA-3597 Update some kdocs Co-authored-by: Dan Newton <danknewton@hotmail.com>
Corda
Corda is an open source blockchain project, designed for business from the start. Only Corda allows you to build interoperable blockchain networks that transact in strict privacy. Corda's smart contract technology allows businesses to transact directly, with value.
Features
- Smart contracts that can be written in Java and other JVM languages
- Flow framework to manage communication and negotiation between participants
- Peer-to-peer network of nodes
- "Notary" infrastructure to validate uniqueness and sequencing of transactions without global broadcast
- Enables the development and deployment of distributed apps called CorDapps
- Written in Kotlin, targeting the JVM
Getting started
- Read the Getting Started documentation
- Run the Example CorDapp
- Read about Corda's Key Concepts
- Follow the Hello, World! tutorial
Useful links
- Project Website
- Mailing List
- Documentation
- Stack Overflow Tag
- Slack Channel
- Meetups
- Training Courses
Contributing
Corda is an open-source project and contributions are welcome!
To find out how to contribute, please see our contributing docs.
License
Acknowledgements
YourKit supports open source projects with its full-featured Java Profiler.
YourKit, LLC is the creator of YourKit Java Profiler and YourKit .NET Profiler, innovative and intelligent tools for profiling Java and .NET applications.
Languages
Kotlin
94.3%
Java
2.5%
C++
2.1%
Python
0.3%
Shell
0.3%
Other
0.3%