There will be a CKDB restart around 06:30 UTC
The exact time will be when the next shift completes - but should be close to 06:30
No mining will be affected.
The web site/API will be unavailable for 10 to 15 minutes.
However
This is a major update for my CKDB code so I've setup a way to quickly roll it all back in the event of problems running the new code live.
Hopefully that wont be necessary, since I've done pretty extensive testing of the new code, running 3 weeks of data (about 3 billion shares) through it a number of times ... until all shift, share, reward, payout and payout transaction generation produced the exact same results as the live running system.
A rollback will just mean another restart of CKDB - but again it's not expected, but setup to ensure minimal downtime in the event of a problem running live.
I've modified about 20% of the CKDB code, to deal with the key change of most of the main data.
... mine on
Restart completed OK and still running OK ... touch wood
Restart was from 06:39 UTC to 06:46 UTC - 7 minutes.
Some TL;DR; for anyone interested in what's changed and why.
In my original implementation of the pool, the code always assumed that a workinfoid was always increasing over time.
The workinfoid is the identifier for each work base used to generate work for all the miners, that gets updated every 30 seconds and every network block change.
This is the case when running one controlling pool instance, however to run more than one instance requires relaxing that assumption.
The first step in that process is to change the key of all the data, and all code accessing that data, to include the block height in front of the workinfoid.
That's part of what this code change has done in all ram tables, pgsql tables, and all functions/code that access anything using workinfoid.
The old code summarises shares as follows:
Each incoming share goes into a sharesummary - that summarises all shares per worker, for each workinfoid.
Then every ~50 minutes, all the sharesummaries are summarised into markersummaries, for the range of workinfoid that marks each shift, and stored in the permanent database.
The new code includes a new summarisation level called blocksummaries.
They fit between sharesummaries and markersummaries so the process will (later) become:
Each incoming share goes into a sharesummary - that summarises all shares per worker, for each workinfoid.
Each network block, all sharesummaries of the height of the old network block are summarised into blocksummaries.
Then the blocksummaries are summarised into markersummaries, for the range of blocks that marks each shift, and stored in the permanent database.
The result of this change will be that shifts always end on block boundaries.
This means that it is quite simple to synchronise two separate pools - since all pools will have the same blocksummary boundaries - network blocks.
The new blocksummary code is already written and in the CKDB code, but not yet activated, it requires me to specify a future block to activate it, which I'll do in the future once I've done more testing of the yet-to-be-activated blocksummary code.
My final code change yet to be done, for distributing the pool better (and reliably), will be to send the blocksummaries, from each of the pool nodes, to the main node that will summarise all the pool node blocksummaries into shifts - and of course manage all main functions of CKDB.
For now, the point was to get the biggest change done and up and running, to ensure key change code was all producing the same results as before.
--
I've been working on the switch over to support /NYA/ and that will be the next change on the pool in the next week.
After that will be the cloud mining enhancements, to the current 'simple cloud mining' code, that already exists.
Then should be the accounting changes to support weekly and monthly payouts for smaller miners.