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.
November 8, 2024
- Ability to specify SQLAlchemy connection string options in the helm chart
- REST endpoint to list cached datasets
- Don't request more pods than the number of files in the dataset
- Documentation theme
- Made changes to values.yaml to revert to
develop
tags for all images by default - Fixed the reference to obsolete xAOD code generator in values.yaml
- Fixed links to the documentation
October 17, 2024
- Fixed bug in the code gen invocation
October 15, 2024
- Use Celery ack_late to acknowledge messages only after the task is complete
- Increase the connection timeout for all requests
- Add retries to all requests
- Put the correct link to the client docs from the dashboard
- Fix exception propagation from the REST endpoints
- Add no-op signal handler for the transformer object store uploader process to avoid losing files
- The option for the transformers to communicate with the app via the ingress
September 20, 2024
- Use Rucio's Site closeness algorithm for replica ordering
- Migrate all of the codegens into the values.yaml
- Include full transformer logs on failure
- Update the chart's values.yaml to use tags for the release
- Status change from looking to running
September 19, 2024
- Builds for ARM64 architecture
- Added database retries to the transform_file_complete endpoint
- Use celery for the transformer sidecar
- Add XrootD retries in the raw uproot generated code
- Permissions in the xAOD DID Finder container
August 1, 2024
- Uproot transformer can write Root files #519
- Deploy multiple code generators #536
- Support xCache for CERN Opendata #550
- Uproot-raw: copy histograms, import awkward functions for cuts #770
- Update the transform request document to show the title as well as the kabana url #757
- multi-xcache-support #726
- Python transformer can support multiple trees #572
- Sidecar converts file to parquet for transformers that don't natively support it #607
- XRootD DID Finder #790
- 682 web dashboard selection string rendering for python transformer #699
- Moved prefix handling from the DID finder to the transformer #553
- Moved science images to their own repo #571
- Reduced sleeps in the sidecar to increase throughput #582
- Transformer and sidecar communicate through sockets #597
- Correct support for IPv6 #629
- Reorganized the data model #496
- Cache DID lookups #687
- Update parquet serialization to be compatible with awkward2 #691
- Renamed packages in monorepo to avoid conflicts #695, #696, #697, #793
- DID Finder uses Celery #800
- Log reading issue #780
- Don't Allow Transformer Pod to Die While there are still files to upload to object stpore #748
- Update did finder deployment to find the new x509 secret name #746
- Clean up the prepend_xcache comments #729
- adding missing file-id and fixing time reported by the sidecar #714
- Restart the app pod when the configmap changes #551
- Fixed crash where Logstash port was being cast to int even if not set #621
- DID Finder off-by-one error that was omitting the last file in a dataset #815
January 11, 2023
- User commands to list and approve users
- Added dataset manager to cache previously found datasets
- Updated funcADL code generator for xAOD
- Updated funcADL code generator for uproot
- Updated uproot science image to uproot5
- Updated several libraries to avoid security vulnerabilities
- Bug where db was initialized twice
- Typo in transformer logging
- Dashboard refresh has been restored
September 4, 2023
- Better replica filtering in Rucio DID Finder
- Sidecar can convert files from root to parquet for cases where the transformer can't
- Network configuration in docker images to support IPv6
- Transformer Sidecar and science images communicate over a unix socket instead of the shared volume
- Warnings from GitHub actions
- Bugs when the LogStash host and port are not provided
- Explicitly set POETRY_CACHE_DIR to avoid permission errors
- DB init code that was initializing the database twice
May 26, 2023
- Python code generator allows for functions that return a dict of awkward arrays. Each entry goes into its own tree in the root file
- xCache support for CERN Opendata files
- Flask version to avoid vulnerability
- Requests library version to avoid vulnerability
- Upgraded alembic library
- .servicex file reports each of the code generators
- Reduced sleep time when sidecar polling for updates. Results in speedup for large datasets
- Typos in documention
- .servicex file not be downloaded from dashboard
- Update usage of codecov to avoid deprecated usage
- Science docker images moved to their own repo
April 12, 2023
- Support for multiple code generators
- Support for HTTP access for files. The Rucio DID Finder will attempt to find HTTP sources for the files. Transformers will only use these if the XRootD URIs fail.
- Move xCache prefix handling from the DID Finders to the transformers. This simplifies the DID Finders
- Updated werkzeug library to avoid security vulnerabilities
- Web app restarts when helm chart updates the app.config
- The python code generator didn't get properly ported to the transformer sidecar architecture. This is now fixed
February 7, 2023
- Cron job to clean up Minio storage from old transforms
January 31, 2023
- Ability to add users via CLI. These users are pre-authorized and can skip the slack workflow
- Ability to load users with pre-populated tokens from a secret. New deployments can immediately accept users
- Documentation build process
- Upgraded libraries to avoid security vulnerabilities
December 8, 2022
- Code generator now reports its default transformer image to pave the way for multiple code generators per deployment
- Major rewrite of transformer. No longer require ServiceX code in the science image. There is now a sidecar container that contains the serviceX code.
- Use official Docker GitHub action to cache layers and speed up buids
- Major database speedup by dropping unused tables and adding indexes
- Crashing CERN Opendata DID Finder
- option to use direct to logstash logging.
- Move to python 3.10
- Link on the dashboard to access logs
- Names of DID Finder pod contiainers simplified
- DID Finder and X509 containers to use python 3.9
- Uproot example in docs
- Ability to use standard S3 apis
- standalone chart for filebeat logging.
- DID Finder and Rucio performance updates: file and metadata operations now occur using bulk updates instead of file by file. memcached has been added to cache information from rucio
- Postgresql and MinIO chart changes: ServiceX now uses MinIO 11.2 and PostgreSQL 11.6 as provided by Bitnami
- DID Finder now returns an ordered list of replicas. If transformer is unable to open a replica then it can go down the list to find an accesible file
- DID finder can take URI parameters
files
,rucio://datset-name?files=10
and it will return only 10 files from the dataset. By default all flies are returned - DID finder can take URI prameter
get
,rucio://data-set?get=availible
and only files in a dataset that are availible will be returned. Ifall
is supplied instead, then all files must be returned. Anything less throws an error. - About page on web ui to show the deployed version information
- xAOD code generator now works with metadata allowing one to alter its behavior on-the-fly to support all collections and obejcts in the ATLAS xAOD
- In helm chart, split the default transformer image into two values. One for image name and a second one for just the tag. This makes it easier for the deployment script to update the transformer tag.
- Correct missing permissions required to use POSIX volume for transform results
- Rucio DID Finder correctly handles files for which there are no replicas
- noIndex, noFollow to avoid robots crawling of the web frontend
- About page listing versions of all the components
- Added support for requests without rucio scope.
- User dashboard table is now updating again
- Added default transformer tag parameter.
- Correct handling of datasets with file(s) without any replicas.
- Support for Bring-your-own Object Store
- X509 User Proxies are mounted in /tmp so containers can be run without root permissions
- Option to report logical files instead of replicas to support CMS style xCache
- Updated to current version of Bootstrap web page framework
- Preflight Check step
- Kafka streaming
- Support for xCache in DID Finders
- Sorting of results in web page
- Cleaned up and improved documentation
- Examples for ATLAS, tcut, and CMS
- ServiceX Logo
- User frontend and dashboard
- Min and Max workers for Autoscaling
- Searchable Logging via FileBeats
- Support for multiple DID Finders via schemes
- CERN OpenData DID Finder
- Mounting secrets instead of reading them from values.yaml
- Option to skip x509
- Option for transformers to write to mounted volumes instead of Minio buckets
- Lat/Long settings for Rucio DID Finder
- Make ingress class annotation value configurable
- Default
PullyPolicy
isAlways
for all images - DIDFinder is now RucioDIDFinder
- Rucio DID Finder uses more efficient MetaLink property to find replicas
- Bug in X509 secrets where it would error out when secret exists
- Inaccuracies in the NOTES for the helm chart
- Autoscaling settings
- Direct ElasticSearch logging
- Site option for DID Finder
- Globus Auth for new authentication system
- Web frontend for signups, user profiles, and obtaining ServiceX API tokens
- Mailgun support to email new users when their account has been approved
- Migrated documentation to ReadtheDocs
- Complete deployment instructions
- TLS support for ingress
- Tagging transform requests with the submitting user if authentication is enabled
- Default transformer image for deployment
- New deployment information endpoint to find out the ServiceX version, default transformer image, and the current code gen image tag
- API access tokens obtained using a ServiceX API token (replaces email/password)
- Organized tempalates into folders to make the helm chart more manageable
- Send the Minio url scheme to the client to make it possible to use TLS secured minio ingress
- App version and code gen image tag are recorded in the DB for each transform
- Split the xAOD and Uproot transformer repos
- Add awkward1 library for parquet transform
- Send 404 error when requesting information about a non-existent transform
- Change the WORKDIR back to /home/atlas after all code is installed
- Stop truncating error messages sent back to ServiceX service
- Obsolete methods on ServiceXResource class
- Make Autoscaling threshold and pod CPU limit configurable
- Validate transformer docker image name against DockerHub
- Slack notification of new user requests
- Minio endpoint is provided to users via transform request
- Database migration via alembic
- Report current status of transform request and support of fatal errors
- User delete endpoint
- Capture more detailed information from users in the new account create form
- Error endpoint to show transformer errors encountered during job
- DID Finder reports fatal error if no files are found for DID
- Split the uproot and xAOD transformer repos
- Use email address instead of username to identify users of ServiceX
- Made size of file status info field to be the maximum VARCHAR size
- Removed Atlas refereces from the transfomer docker image
- Cleaned up command line interface to ServiceX CLI
- Pin pip dependencies
- Transaction leak after DID finder request
- More detailed timestamp logging in transformers
- JWT based user securing of public endpoints
- New user workflow with admin approval of pending users
- Autoscaler for transforms. If enabled, jobs start with one transformer and then scale up to the requested number as CPU load increases
- Improved the performance serialization of Awkward tables into Arrow
- Upgraded to func-adl-uproot==0.11
- Passing chunk size to transformers
- App retries connection to RabbitMQ on startup instead of just falling into Crash Loop
- CLI to install X509 grid certs and secrets into namespace
- Detailed file level logging to a new database table
- Specify a Grid site affinity to DID finder to prefer replicas that are in a particular site
- Detailed timing if kafka and Minio writes
- Max size of select statement increased to postgres varchar max
- X509 secrets created and destroyed by helm chart so they don't hang around after deployment deleted
- DID finder requests multiple replicas in each Rucio lookup to speed things up
- Multiple replicas of app can be specified in the deployment
- Prevent EventLoop from sending file I/O stats back to Rucio to improve performance
- Numerous transaction leaks
- DID Finder connection to serviceX retries
- Uproot FuncADL Code Gen
- Uproot FuncADL Transformer
- Ability for transformers to stream to kafka
- Made DID Finder scope optional
- Made DID finder site attribute optional
- Remove ATLAS dependencies on DID Finder
- Pick up RabbitMQ password for all references
- Kubernetes 1.16 breaking changes
- Pyroot transformer
- Old uproot transformer
- X509 Proxy Service
- C++ CodeGen
- C++ Transformer
- Provide the Kafka broker to the transformer
- First working release of ServiceX