/ sinks / sink-parquet / CHANGELOG.md
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