Releases: textileio/powergate
v1.2.2
IMPORTANT NOTE:
This release runs datastore migrations in the first Powergate startup of this version, so it's very important that you take care of the following point.
Make a backup of your Powergate repo which means having a backup of your datastore just in case the migration goes wrong. To do that, stop Powergate and copy-paste the repo folder to some other place. This applies if you use Badger as the underlying data store which is the default setup. If you use MongoDB, then backup your collection appropriately.
Changes
- minerselector/reputation: improvements @jsign (#719)
- path variables instructions are added @agnelvishal (#707)
🚀 Features
- GC & multitenancy @jsign (#712)
- Bump lotus docker image @jsign (#713)
- Lotus v1.2.0 update @jsign (#711)
- Support Calibration Network @jsign (#710)
🐛 Bug Fixes
🙏 A big thank you to all the contributors to this release:
@agnelvishal, @asutula and @jsign
v1.2.1
v1.2.0
v1.1.2
v1.1.1
v1.1.0
v1.0.0
Changes
This release includes big and breaking API changes for the Powergate client and CLI. They are described below.
General API focus
Powergate was previously developed without a clear picture of exactly who would be using it or how they may be using it. We now have a better idea of that, and the API has been cleaned up, slimmed down, and re-organized to align better with actual Powergate usage and purpose.
No more "FFS" wording
"FFS" is an implementation detail of Powergate and doesn't really add any value to the API. It turns out that almost all interactions with Powergate rely on the FFS implementation, and this is really just the default mode of Powergate's operation from an API perspective. Removing "FFS" from the API and just assuming its use has allowed for an easier to understand API... Just supply your auth token and don't worry about the internal implementation details of Powergate.
Filecoin deal state available
When viewing information about a Powergate storage job, real time information about any Filecoin storage deals is now included.
API structure based around API concepts and not backend implementation details.
The new API is organized around entities and concepts that are important to the DX of Powergate. The general outline of the new API is as follows and can be seen in the Go client, pow
CLI, as well as upcoming updates to the Javascript client.
- Admin - Administrative functions that are secured by an admin auth token (it is possible to run Powergate with no admin auth token)
- Profiles - Manage "storage profiles" (internally, these are FFS instances)
- Create - This is now how storage profiles are created (used to be
pow ffs create
) - List - List storage profiles including id and auth token
- Create - This is now how storage profiles are created (used to be
- Storage jobs - Various functions for querying Powergate storage jobs for any storage profile
- Queued jobs
- Executing jobs
- Latest final jobs
- Latest successful jobs
- Summary of all jobs
- Wallet
- Create address
- List all addresses
- Send FIL
- Profiles - Manage "storage profiles" (internally, these are FFS instances)
- Data - General operations around data to be stored or already stored in a Powergate storage profile
- Stage
- Replace
- Get
- Watch logs for CID
- CID info - New function that provides a summary of the desired storage state, current storage state, and any jobs and Filecoin deals for a CID.
- Deals - Information about Filecoin storage and retrieval deals in a Powergate storage profile
- List storage deals
- List retrieval deals
- Storage config - View and manage the default storage config and store data in a Powergate storage profile by applying storage configs to CIDs
- Get default
- Set default
- Apply
- Remove
- Storage jobs - New functions to query storage jobs of a storage profile in various states, including real time information about their corresponding Filecoin storage deals state
- Get job
- Get storage config for job
- Queued jobs
- Executing jobs
- Latest final jobs
- Latest successful jobs
- Summary of all jobs
- Watch jobs
- Cancel job
- Wallet - Functions to interact with a storage profile's wallet addresses
- Balance
- New address
- List addresses
- Send FIL
- Sign message
- Verify message
Simplified client return types
The Go client now always returns the gRPC type returned from the backend. This reduces the complexity of and number of dependencies for the client code, and decouples the client code from the server code. This sets us up for creating custom client types if/where needed in the future.
Simplified pow CLI output
We moved away from fancy spinners and table formatted output in favor of just printing out raw json data in almost all cases (still a couple places where tabular or text data make sense). This will allow the pow
CLI to be more easily used in shell scripts and errors on the side of displaying more data than less data, which is important in these early days of Powergate and Filecoin when the more data and information you have, the better.
Removed APIs
Some APIs were not central to the primary use of Powergate. Some were not used at all and others are only used internally for Powergate implementation. The following were removed:
- Asks
- Faults
- Miners
- Reputation
- Net
- Health
Other changes
- README.md : fixing typo @didier-durand (#701)
- Bump github.com/golang/protobuf from 1.4.2 to 1.4.3 @dependabot-preview (#695)
- Bump google.golang.org/grpc from 1.32.0 to 1.33.1 @dependabot-preview (#696)
- Bump github.com/spf13/cobra from 1.0.0 to 1.1.1 @dependabot-preview (#697)
- Bump go.opencensus.io from 0.22.4 to 0.22.5 @dependabot-preview (#699)
🚀 Features
🙏 A big thank you to all the contributors to this release:
@asutula, @dependabot-preview, @dependabot-preview[bot], @didier-durand and @jsign
v0.9.4
Changes
All changes are related to #694.
This is a highly recommended update if your Lotus node is struggling with load.
🚀 Features
- Allow flag/env cap on the number of maximum parallel deal preparations that can be executed in parallel. Deal preparation (piece size calculation and CommP calculation) are the most resource-intensive tasks for Lotus. This allows to bump the total parallel job constraints in a safer way since the real intensive part of the Job is limited in a surgical way.
- Powergate will generate warnings in the log if detects that Lotus is falling behind in syncing. This will help operators to understand that something might be going wrong, or simply to be aware of this fact. e.g log:
WARN lotus-client lotus/metrics.go:93 Louts behind in syncing with height diff 39, todo: 6
. So, it also mentions how much of the difference is and which is the current progress (similar tolotus sync wait
). - Leveraging the above mechanism, Powergate it will block any new deal-making to let the Lotus node recover. This is an important feature since is a dynamic throttling/limiting of the load, and not relying on some hard number specified by flags/envs which is hard to tune correctly. If this situation is happening, the operator can see in the logs messages indication this is the case: e.g log:
WARN ffs-filcold filcold/filcold.go:296 backpressure from unsynced Lotus node
. - Stop using our custom
calculatePieceSize
logic. Originally, we needed to do this since there wasn't an API to resolve it. Now use the existing Lotus API which might give future-proof size calculation. - Allow tuning how many retries are needed to consider that connecting to Lotus is an error. Use a big default. This default is nice if the underlying Lotus is restarted or has some problem, so we give Lotus time to recover and not break the flow of whatever Powergate was doing, which in many cases could be undesired.
- Workaround known problem of
ClientGetDealInfo
not reporting active deals. (until the real problem is fixed in Lotus). - Include in Ask index
MaxPieceSize
information. - Consider in
reptop
andsr2
miner selection, theMinPieceSize
, andMaxPieceSize
of miners to avoid selecting miners which will reject the deal depending on deals data size. - Update the Lotus client to v1.1.2.
- Update Lotus docker image to v1.1.2.
🙏 A big thank you to all the contributors to this release: