82e9e1e7dc
Added short sleep() to GET /admin/stop to allow time for HTTP response body to be sent back. Improved documentation for /peers API resources. Added examples, tidied API output models. Fixed issue where IPv6 literals with port couldn't be parsed. Now uses RFC5952/RFC3986 style literal IPv6 addresses with ports, e.g. [::1]:9084 Fixed NPE in Controller.potentiallySynchronize() where peer might not have sent height yet. Improved Handshake to discard inbound connections if we already have an outbound connection to a peer with that ID. This prevents us from having two connections to the same peer, one in each direction. Network.mergePeers() now runs in a separate thread as acquiring the lock might block. Network.creationConnection() exits fast based on number of outbound connections, instead of number of total connections. Network no longer sends 'local' peer addresses to non-local peers. e.g. it won't send localhost:9084 to node4.qora.org:9084 Added try-catch to Network.broadcast for when we try to broadcast while shutting down. Added PeerAddress class to deal with the whole hostname/IPv4/IPv6 address situation. Reworked PEERS_V2 message type to only send sized-strings instead of separate port, and potentially IPv6 byte arrays. Change to HSQLDB database shape. Corresponding changes to HSQLDBNetworkRepository. |
||
---|---|---|
.settings | ||
lib/org | ||
src | ||
.classpath | ||
.gitignore | ||
.project | ||
blockchain.json | ||
log4j2.properties | ||
osgi-console.sh | ||
pom.xml | ||
README.md | ||
settings.json |
Qora2
To use:
- Use maven to fetch dependencies.
- Build project.
- Build v1feeder.jar as a fatjar using src/v1feeder.java as the main class
- Fire up an old-gen Qora node.
- Use
v1feeder.jar
to migrate old Qora blocks to DB:
java -jar v1feeder.jar qora-v1-node-ip
You should now be able to run all the JUnit tests.
You can also examine the migrated database using HSQLDB's "sqltool".
It's a good idea to install "rlwrap" (ReadLine wrapper) too as sqltool doesn't support command history/editing!
Typical command line for sqltool would be:
rlwrap java -cp ${HSQLDB_JAR}:${SQLTOOL_JAR} org.hsqldb.cmdline.SqlTool --rcFile=${SQLTOOL_RC} qora
${HSQLDB_JAR}
contains pathname to where Maven downloaded hsqldb,
typically ${HOME}/.m2/repository/org/hsqldb/hsqldb/2.4.0/hsqldb-2.4.0.jar
,
but for now lib/org/hsqldb/hsqldb/r5836/hsqldb-r5836.jar
${SQLTOOL_JAR}
contains pathname to where Maven downloaded sqltool,
typically ${HOME}/.m2/repository/org/hsqldb/sqltool/2.4.1/sqltool-2.4.1.jar
${SQLTOOL_RC}
contains pathname to a text file describing Qora2 database,
e.g. ${HOME}/.sqltool.rc
, with contents like:
urlid qora
url jdbc:hsqldb:file:db/qora
username SA
password
urlid qora-test
url jdbc:hsqldb:file:db/test
username SA
password
You could change the line url jdbc:hsqldb:file:db/test
to use a full pathname for easier use.
Another idea is to assign a shell alias in your .bashrc
like:
export HSQLDB_JAR=${HOME}/.m2/repository/org/hsqldb/hsqldb/2.4.0/hsqldb-2.4.0.jar
export SQLTOOL_JAR=${HOME}/.m2/repository/org/hsqldb/sqltool/2.4.1/sqltool-2.4.1.jar
alias sqltool='rlwrap java -cp ${HSQLDB_JAR}:${SQLTOOL_JAR} org.hsqldb.cmdline.SqlTool --rcFile=${SQLTOOL_RC}'
So you can simply type: sqltool qora-test
Don't forget to use SHUTDOWN;
before exiting sqltool so that database files are closed cleanly.