All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.0.0-beta.3 - 2021-11-30
- Some tests.
hnswclient.New
now accepts an HNSWgrpcapi.ServerClient
argument, instead of a generic gRPC connection. This makes testing easier.
1.0.0-beta.2 2021-11-15
- HTTP requests made by the feed-fetcher worker can be limited with the new
request_timeout
setting. - Optimistic locking mechanism for GORM models.
See:
models.OptimisticLockModel
,models.OptimisticSave
andmodels.ErrStaleObject
.
- The base GORM model (
models.Model
) now includes aVersion
field and satisfies themodels.OptimisticLockModel
interface, allowing optimistic locking. - Each worker has been modified avoiding long-lasting transactions, extracting from them heavy operations, and opting for optimistic locking when record updates are involved. Reducing the transactions' duration and removing the explicit row-level locks can produce tremendous improvements on the performance of the whole system, when under heavy loads (i.e. at least thousands of sources).
- Give ordering priority to sources never retrieved before (i.e.
last_retrieved_at
is null) when looping through sources to schedule from feed-scheduler and twitter-scheduler tasks. - Improve
hnswcloent.Client.SearchKNN
performance, making the requests to each candidate daily HNSW index concurrently. - Minor refactoring and improvements to some log messages and their severity level.
- Upgrade dependencies.
1.0.0-beta.1 - 2021-10-20
hnswclient.Client.FlushAllIndices
function.- HNSW-Purger task now flushes all remaining indices after deleting the old ones.
- Some tests.
- Use weaker database row-level locks wherever possible (
FOR SHARE
instead ofFOR UPDATE
) to prevent possible slowdowns. - Upgrade dependencies.
hnswclient.Client.Index
does not flush an HNSW index anymore at each vector insertion. This was possibly causing slowdowns in case of large indices and many concurrent jobs inserting new vectors.
- A failing configuration test.
1.0.0-beta - 2021-10-16
- HNSW-Purger task (command
purge-hnsw
).
- Avoid long-living gRPC connections moving the dialing from commands initialization to workers (see commit a61fcbc7a42955dfdffb65feb020f456588fab56 for details).
- Upgrade dependencies.
1.0.0-alpha.3 - 2021-10-12
- Add documentation to the README.
- AUTHORS.md
- Move
cmd/whatsnew.go
to the project's root path, so that the tool can be installed more easily withgo install
command. - Use
golang:1.17.1-alpine3.14
as base Builder image in the Dockerfile. - Provide a complete docker-compose file and related configurations, now under
docker-compose
folder. - Upgrade dependencies.
1.0.0-alpha.2 - 2021-10-01
- Enable client-side round-robin DNS load balancing for all gRPC connections.
1.0.0-alpha.1 - 2021-09-28
- Allow setting reservation timeout and number of retries for each Faktory job from configuration.
- Use the WebArticle translated title, when available, as preferred text data source in text-classifier, vectorizer, and zero-shot-classifier workers.
- Upgrade dependencies.
1.0.0-alpha - 2021-09-26
- The whole project has been completely rewritten. Most notably, the simplistic way of handling workers' jobs with RabbitMQ has been replaced with more reliable jobs scheduling using Faktory.
0.5.0 - 2021-09-26
- API server for managing sources.
- Use go
1.16
. - Simplify the Dockerfile.
- Update the README.
0.4.0 - 2021-04-23
- Upgrade spaGO to
v0.5.2
and adapt the code.
0.3.3 - 2021-03-23
- Add
max_tweets_number
to tweets-fetching configuration.
0.3.2 - 2021-03-23
- Fix wrong RabbitMQ routing key for messages published from the tweets-fetching worker.
0.3.1 - 2021-03-23
- Fix missing CA-certificates when running in Docker container, using alpine as base Docker image.
0.3.0 - 2021-03-23
- Twitter source integration.
0.2.0 - 2021-01-28
- Allow env vars expansion in config file.
- Use root-level sample configuration file for configuration tests.
0.1.1 - 2021-01-26
- Skip certificate verification during web scraping.
0.1.0 - 2021-01-25
First versioned release, ready to be tested.