CHANGELOG.md
1 # Changelog 2 3 All notable changes to this project will be documented in this file. 4 5 The format is based on [Common Changelog](https://common-changelog.org/), and 6 this project adheres to 7 [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 8 9 ## [0.4.3] - 2024-01-25 10 11 _Persist state to Redis._ 12 13 ### Added 14 15 - You can now persist state to Redis! Use the `--persist-to-redis` flag with 16 [the connection string to your Redis 17 instance](https://docs.rs/redis/latest/redis/#connection-handling) and the sink 18 will store its state there. Data is persisted under the `apibara:sink:{sink_id}` 19 key and you can easily manage it with `redis-cli`. 20 21 ## [0.4.2] - 2024-01-19 22 23 _Improve `--allow-net` flag usage._ 24 25 ### Changed 26 27 - When the `--allow-net` flag is used and the value passed to it is an empty 28 string, treat it as equivalent to allowing any host. This is especially useful 29 if you're setting the flag with the `ALLOW_NET` environment variable. 30 31 ## [0.4.1] - 2024-01-16 32 33 _Enable network access and multiple datasets generation._ 34 35 ### Added 36 37 - Indexers can now access the network to make HTTP/TCP calls. Use the 38 `--allow-net` flag without arguments to allow connecting to any address, or 39 restrict access to selected domains by specifying the domains as comma-separated 40 values. 41 42 ### Changed 43 44 - Indexers can now generate multiple datasets. Specify the `datasets` you want 45 to generate in the `config`. The transform function can then return a list of 46 objects like `{ dataset: string, data: object }` to specify which dataset a 47 piece of data belongs to. 48 49 ## [0.4.0] - 2024-01-13 50 51 _Introduce factory mode to dynamically update the stream filter._ 52 53 ### Added 54 55 - Introduce factory mode. Use this to dynamically update the stream filter, for 56 example to start receiving data from a smart contract deployed by another smart 57 contract. Enable factory mode by exporting a `factory` function from your script. 58 - The sink now emits OpenTelemetry metrics to track the sync status. 59 60 ### Changed 61 62 - The status response from the status server now includes the chain's head. 63 64 ### Fixed 65 66 - Fixed an issue with the status server response timing out during the initial sync. 67 68 ## [0.3.8] - 2023-12-02 69 70 _Index data in a specific block range._ 71 72 ### Added 73 74 - Add a new `--ending-block` (`endingBlock` if configured from the script) 75 option to stop the indexer at a specific block. 76 77 ## [0.3.7] - 2023-11-30 78 79 _Control indexer timeouts._ 80 81 ### Added 82 83 - Add new `--script-load-timeout-seconds` and 84 `--script-transform-timeout-seconds` options to control the maximum time the 85 indexer script has to initialize and transform data respectively. 86 87 ## [0.3.6] - 2023-11-16 88 89 _Add new environment-related options._ 90 91 ### Added 92 93 - Add new `--allow-env-from-env` flag to allow the indexer script to access 94 the parent process environment variables. Users can pass a list of 95 comma-separated variables to this option. 96 97 ### Changed 98 99 - Cleanup the default logs to only show the current block number. 100 - To restore the previous, more detailed logs, set the log level to debug. 101 102 ## [0.3.5] - 2023-11-11 103 104 _Fix an issue on Linux._ 105 106 ### Fixed 107 108 - Link against GLIBC 3.5. The most recent build was linking against GLIBC 3.8 109 which caused some issues on non-rolling release distributions. 110 111 ## [0.3.4] - 2023-11-07 112 113 _Improve performance for data-heavy indexers._ 114 115 ### Added 116 117 - Update Starknet's event filter to support the new `includeTransaction`, 118 and `includeReceipt` options. These options control whether the server will 119 send the transaction and/or receipt that generated an event. For indexers 120 that don't need this data, toggling this option on can improve performance 121 drastically. 122 123 ### Changed 124 125 - Update the Deno runtime to `deno_core v0.244` and `deno_runtime v0.130`. 126 - Use the new 127 [`#[op2]`](https://docs.rs/deno_core/0.224.0/deno_core/attr.op2.html) macro 128 to exchange data between Deno and Rust. Data serialization and 129 deserialization between the sink and the script is now faster. 130 131 ## [0.3.3] - 2023-10-27 132 133 _Fix exit code on disconnect._ 134 135 ### Fixed 136 137 - In some cases, the sink would exit with a `0` exit code on error. This 138 version ensures that the sink will return a non-zero exit code on all 139 errors. 140 141 ## [0.3.2] - 2023-10-24 142 143 _Error message improvements._ 144 145 ### Changed 146 147 - This version changes how errors are handled to improve error messages. 148 Errors now show more context and additional information that will help 149 developers debug their indexers. 150 - The sink will return a non-zero error code on failure. We use the standard 151 unix exit codes in `sysexit.h`. Developers can use exit codes to decide 152 whether to restart the indexer or not. 153 154 ## [0.3.1] - 2023-10-11 155 156 _Disconnect when stream hangs._ 157 158 ### Added 159 160 - Add a new `--timeout-duration-seconds` flag to control the timeout between 161 stream messages. If the stream doesn't receive any message in this interval, 162 the sink exits. Defaults to 45 seconds. 163 164 ## [0.3.0] - 2023-09-16 165 166 _Introduce sink status gRPC service._ 167 168 ### Changed 169 170 - The status server is now a gRPC service. This service returns the sink 171 indexing status, the starting block, and the chain's current head block 172 from the upstream DNA service. 173 - The status server now binds on a random port. This means it's easier to run 174 multiple sinks at the same time. 175 176 ## [0.2.0] - 2023-08-21 177 178 _This release improves the developer experience when running locally._ 179 180 ### Added 181 182 - Add a `--persist-to-fs=my-dir` flag to persist the indexer's state to the 183 filesystem. This option creates a new directory (specified by the user) and 184 writes the indexer's current state to a file, with one file per indexer. 185 Developers shouldn't use this option for production, but only for 186 development since it lacks any locking mechanism to prevent multiple copies 187 of the same indexer running at the same time. 188 189 ### Changed 190 191 - The transform function now is invoked with a single block of data. 192 193 ## [0.1.0] - 2023-08-08 194 195 _First tagged release 🎉_ 196 197 [0.4.3]: https://github.com/apibara/dna/releases/tag/sink-parquet/v0.4.3 198 [0.4.2]: https://github.com/apibara/dna/releases/tag/sink-parquet/v0.4.2 199 [0.4.1]: https://github.com/apibara/dna/releases/tag/sink-parquet/v0.4.1 200 [0.4.0]: https://github.com/apibara/dna/releases/tag/sink-parquet/v0.4.0 201 [0.3.8]: https://github.com/apibara/dna/releases/tag/sink-parquet/v0.3.8 202 [0.3.7]: https://github.com/apibara/dna/releases/tag/sink-parquet/v0.3.7 203 [0.3.6]: https://github.com/apibara/dna/releases/tag/sink-parquet/v0.3.6 204 [0.3.5]: https://github.com/apibara/dna/releases/tag/sink-parquet/v0.3.5 205 [0.3.4]: https://github.com/apibara/dna/releases/tag/sink-parquet/v0.3.4 206 [0.3.3]: https://github.com/apibara/dna/releases/tag/sink-parquet/v0.3.3 207 [0.3.2]: https://github.com/apibara/dna/releases/tag/sink-parquet/v0.3.2 208 [0.3.1]: https://github.com/apibara/dna/releases/tag/sink-parquet/v0.3.1 209 [0.3.0]: https://github.com/apibara/dna/releases/tag/sink-parquet/v0.3.0 210 [0.2.0]: https://github.com/apibara/dna/releases/tag/sink-parquet/v0.2.0 211 [0.1.0]: https://github.com/apibara/dna/releases/tag/sink-parquet/v0.1.0