Releases: algorand/indexer
Algorand Indexer 2.6.1
Algorand Indexer 2.6.0
Highlights
Included in this release:
- Support for devMode
- Non-UTF-8 support for asset strings - return -b64 asset strings in most endpoints
- Fix for too many sequential queries (#553)
- Other refactoring and small bug fixes
Changes
- Enhancements
- Add devmode support to indexer
- Add missing validation for b64 fields.
- Define AddressRole type in
idb
- Delete old migrations (pre-2.4.0)
- Delete other released migrations
- Delete the reset functionality
- Delete unused function
- Deleted the deprecated variable from the import state
- Improve a migration scheduler test.
- Improvements in
idb/postgres/
andreset.go
- Move signature type logic to
idb
- Move transaction type logic to
idb
- Store next round in import state
- Testing - add a new subcommand to the block generator to run multiple scenarios and generate reports based on the results
- Testing - keytype
- Testing - large asset amount
- Validator improvements
- non utf8 support for asset strings
- Bug Fixes
- Avoid leaking db transactions and rows
- Copy the byte array in bytePtr()
- Fix two small bugs in Health()
- daemon: replace a sleep loop with a channel.
Algorand Indexer 2.5.0
Highlights
This is a small release to support the upcoming algod protocol upgrade. This upgrade is necessary for running go-algorand 2.7.0 / 2.7.1 releases.
This release also includes miscellaneous small fixes and refactoring, as well as additional performance testing tools.
This release contains a couple small migrations as part of data cleanup, which should take less than a minute to complete.
Changes
New Features
- Add ExtraProgramPages app call field support
- Performance testing: block generator and reporting
- Prometheus metrics endpoint for performance testing
Enhancements
- Add install instructions
- Code cleanups and refactoring
- Make
deleted
columns NOT NULL - Update protocols.json to v28
- Add codecov integration
Bug Fixes
- Creatable ID is wrong on round 0
- Fix usage of e2e_client_runner.py
- Replace
GetMaxRoundLoaded()
withGetNextRoundToLoad()
- Return an error in
CommitRoundAccounting()
when import state is uninitialized
Algorand Indexer 2.4.0
Highlights
This release addressed technical debt identified in previous releases.
Migrations in this release take around half an hour and are non-blocking, and include:
- Cleaning up some stale account data for a small number of accounts which were closed and re-opened after rekeying, registering participation keys, or changing their online status
- Search by freeze address filter fix
Changes
Bug Fixes
- Converting GT/LT uint struct fields to uint pointers
- Delete false error message in daemon when starting from round 0
- Fix Freeze Address Search Filter + Migration
- Fix idb/mocks/IndexerDb.go regeneration
- Migration that clears account data for accounts that have been closed
- Retry db transactions on a serialization error
- Return the right close amount for transfer transactions.
Algorand Indexer 2.3.4
Highlights
This release adds support for an upcoming protocol upgrade, as well as
fixes the following migration issues for people upgrading from 2.2.x to 2.3.x:
- The migration may have exited with the following error.
update account asset, pq: null value in column \"frozen\" violates not-null constraint
- The migration may have completed, but be stuck in error status, reporting
error during migration 7 (Compute cumulative account rewards for all accounts.): m7: len(assetDataMap): 77 \u003e 0
Changes
Enhancement
- Update consensus params to support V27
Bug Fixes
- Fix frozen null-constraint during import
- Delete assets from asssetDataMap in migration when updating accounts
Algorand Indexer 2.3.3
Highlights
This is a bug fix release to address an issue where a few blocks on TestNet were erroring due to no deltas for the sender. No migrations are necessary for this change and can be applied directly to 2.3.2.
Changes
Bug Fix
- Make sure there are deltas before attaching the delta object in REST layer
Algorand Indexer 2.3.2
Highlights
This release includes the following:
- Cumulative rewards support is now available in indexer! This is complicated to calculate and requires a non-blocking migration to implement (see upgrade notes below)
- Add REST API endpoints for create/delete fields
- Support for upcoming protocol upgrade
- Many optimizations and bug fixes
Important Changes
Cumulative rewards are now computed and stored in the account rewards
field.
Round at which things are added or removed from the database is now reported. There is also a deleted
flag for each of these indicating whether the record is currently deleted from the blockchain:
account: created-at-round
, closed-at-round
asset: created-at-round
, destroyed-at-round
asset holding: opted-in-at-round
, opted-out-at-round
application: created-at-round
, deleted-at-round
account application: opted-in-at-round
, closed-out-at-round
Major Bugs Addressed
- Fix for negative asset integer bug seen on BetaNet
- JSON encoding import issue
- Asset holding accounting did not handle default-frozen = true correctly. This is now fixed.
Known Issues
- This release is not compatible with the other 2.3.0-beta releases due to migration refactoring. A full indexer database rebuild is required to upgrade from 2.3.0-betas.
- Application state rewind has not been implemented and returns a generic error. We are implementing a better error message for this state.
Upgrade Notes (Please Read)
Full Rebuild Required For BetaNet and TestNet indexers
Due to improvements in block importing, a full rebuild is necessary for BetaNet and TestNet indexers. This is not required for MainNet.
Mandatory Migration
Adding cumulative rewards support and some of the data cleanups requires a migration. However, this was written to run asynchronously and will not require downtime. There is minimal impact to query performance while running, but the migration is expected to take around twelve hours to complete and may consume a few GB of RAM. The server can be restarted at any time, and the migration will pick up where it left off. You can observe if the migration has finished by checking the /health REST API endpoint. The percent progress is available in the log file or from standard out if no log file is configured.
Configuration File Name Change
If you were previously using a configuration file with indexer, you will need to rename it. If you had previously been using a file named algorand-indexer, algorand-indexer.yml, or algorand-indexer.yaml, you should rename this file to indexer, indexer.yml, or indexer.yaml. The location of the configuration file has not changed.
Changes
New Features
- Add support for cumulative rewards
- Capture create and close rounds for things that can be created and closed
- Add Create/Delete to REST Response
Enhancements
- Switch to algod v2 client
- Degrade ReadOnly Node Service When Migration is Required
- IndexerDb should block importer until db is available
- Logging Improvements
- Naming cleanup and append to log file instead of overwriting
- remove support for e2etest.py and use e2elive.py
- Pipeline - add mule build docs
- Pipeline - parameterize STAGING in build task
- Added github templates for internal ticketing
- Include txn type into panic message
- Add 'deleted' flag to the database and API
- Add basic benchmark queries against a database to help prevent query performance regression
- Move db.CommitRoundAccounting out of the accounting package
- Better rewind error message
- Modify GetMaxRound to return the accounting_round instead of the max block round
- Validation scripts to verify accounting
- Change GetBlock to retrieve content in a single transaction
- Update to support upcoming consensus protocols
- Support databases behind load balancers
- Don't return special accounts in results
- Add pending rewards to rewards in account APIs
Bug Fixes
- Config file name change
- Fix golint
- Fixing typo in README.md postgress connection string (thanks PSJoe)
- Make sure GetMaxRound returns a value if there are no rounds processed
- Fix asset close accounting issue
- Fix handling of some transactions whose JSON encoding would fail to be received by PostgreSQL
- On account close, delete a bunch of fields out of account.account_data because they'd be cleared by algod
- When local state delta had a single key deletion did not happen
- Round writer check to prevent advancing on import errors
- Special case if multiple writers are accidentally run
- Always send json to PostgreSQL as a Go string not []byte
- Small fixes to pipeline code
- Adding line to copy mdhash to prevent overwriting (#366)
- Many improvements to accounting logic
Algorand Indexer 2.2.2
Algorand Indexer 2.3.1-beta3
Algorand Indexer 2.3.1-beta2
2.3.0-beta releases are incompatible with these versions due to migration refactoring, a full indexer database rebuild is required to upgrade from 2.3.0-betas.
Changes
Enhancement
- Better rewind error message
Bug Fixes
- Round writer check to prevent advancing on import errors
- Special case if multiple writers are accidentally run
- Always send json to PostgreSQL as a Go string not []byte