The genesis-json location is relative to cwd (where you launch the binary from), because we think about the genesis as being an external input to the system, while the datadir is the internal workings of the system.
The object_database should always be within the data_dir. I've noticed that sometimes it's created outside the data_dir, but I have not noticed that for a while. If you have a way to make object_database outside the datadir happen reproducibly, please post in the ticket (if I see it in this thread, I'll post it there, but I don't read every page).
I don't know what you mean by "...but I have not noticed that for a while.", it still happens with binaries built Saturday. Thanks for the tip about the "stale production" flag. I commented it out (the default is apparently off from looking at the output) but the witness still receives zillions of "stale" blocks on the testnet.
As I confirmed, the missing seed node (b/c it was offline - not working) was the core problem I was having. I spent hours trying to unravel that problem and many others here were also clearly clueless as to the cause of the output we were seeing. I will avoid that issue by adding my working testnet witness node's IP as a seed node to the list, which will become a production seed node for tomorrow.
Unlike most people here I prefer to put as many options in the config.ini file rather than use comman line args. I would very much like to see more robustness in that approach. I recognize it's not a high priority item, but I have spent lots of hours fooling around developing a reproducable, consistent platform for graphene because of issues related to relying on the config.ini. I suppose you could also say better output messages could have saved me a large number of those hours. The change to a requirement for absolute paths for --data-dir where the config.ini resides was the first issue. The cwd being significant in some manor (don't thing anyone really has a complete handle on that yet) is the second.
There's only so many hours in a day, and I realize you devs have far more important issues to address. Just an FYI, something to keep in mind for the future, just saying.
Today thanks to svk I validated my VPS installation script for witness nodes, including the use of wackou's bts_tools to build and launch witness and seed nodes.
I finally have worked out all of the kinks, assuming nothing else changes regarding command line args & how they're processed, cwd or path requirements.
I do notice a logs folder is no longer created, tho I haven't changed any config.ini settings related to logging. The command line is simply:
/home/admin/BitShares2_bin/witness_node --data-dir /home/admin/BitShares2_seed
or if using bts_tools:
bts2 run bts2 or bts2 run seed
the only difference between those 2 is the data_dir used.
Here is the complete config.ini for a new seed node at 159.203.1.89:1776, but I will be taking that out of service later today after testing the scripts for the Debian 8.0 OS (it's currently running Ubuntu 14.04):
# Endpoint for P2P node to listen on
p2p-endpoint = 0.0.0.0:1776
# P2P nodes to connect to on startup (may specify multiple times)
#seed-node = 45.55.6.216:1776
#seed-node = 114.92.254.159:62015
seed-node = seed05.bitsharesnodes.com:1776
seed-node = seed07.bitsharesnodes.com:1776
seed-node = 188.165.233.53:1777
seed-node = 104.236.51.238:2005
# Pairs of [BLOCK_NUM,BLOCK_ID] that should be enforced as checkpoints.
# checkpoint =
# Endpoint for websocket RPC to listen on
rpc-endpoint = 127.0.0.1:8090
# Endpoint for TLS websocket RPC to listen on
# rpc-tls-endpoint =
# The TLS certificate file for this server
# server-pem =
# Password for this certificate
# server-pem-password =
# File to read Genesis State from
genesis-json = oct5-genesis.json
# JSON file specifying API permissions
# api-access =
# Enable block production, even if the chain is stale.
#enable-stale-production = true
# Percent of witnesses (0-99) that must be participating in order to produce blocks
required-participation = false
# Allow block production, even if the last block was produced by the same witness.
#allow-consecutive = false
# ID of witness controlled by this node (e.g. "1.6.0", quotes are required, may specify multiple times)
#witness-id = "1.6.34"
# Tuple of [PublicKey, WIF private key] (may specify multiple times)
#private-key = [ "GPH", "5K" ]
#private-key = [ "GPH", "5H" ]
#private-key = [ "GPH", "5J" ]
# Account ID to track history for (may specify multiple times)
# track-account =
# Track market history by grouping orders into buckets of equal size measured in seconds specified as a
JSON array of numbers
bucket-size = [15,60,300,3600,86400]
# How far back in time to track history for each bucket size, measured in the number of buckets (default: 1000)
history-per-size = 1000
# declare an appender named "stderr" that writes messages to the console
[log.console_appender.stderr]
stream=std_error
# declare an appender named "p2p" that writes messages to p2p.log
[log.file_appender.p2p]
filename=logs/p2p/p2p.log
# filename can be absolute or relative to this config file
# route any messages logged to the default logger to the "stderr" logger we
# declared above, if they are info level are higher
[logger.default]
level=info
appenders=stderr
# route messages sent to the "p2p" logger to the p2p appender declared above
[logger.p2p]
level=debug
appenders=p2p
The list of seed nodes to be available starting tomorrow for production are:
seed04.bitsharesnodes.com:1776
seed05.bitsharesnodes.com:1776
seed06.bitsharesnodes.com:1776
seed07.bitsharesnodes.com:1776