New Contributors and Thanks!
- @bobcallaway made their first contribution in #658
- @google-admin made their first contribution in #707
- @patflynn made their first contribution in #841
Special thanks to folks who have filed great issues, taken the time to test new features, or helped improve Tessera and TesseraCT in any other way: @cmurphy, @AGWA, @jiemingwang, @pimvanpelt, @celia-vytrac, @asher-zs.
Top level summary
- Trusted roots can now be automatically be fetched from CCADB, see instructions.
- Logging now happens via
slogand notkloganymore. Make sure to update flags accordingly. - Various panics and other bugs fixed.
- Safer SCT serving for duplicates in #884.
- Various reliability and performance improvements, especially for POSIX and GCP.
- The
pushback_max_dedupe_in_flightflag has been removed, userate_limit_dedupinstead
What's changed?
Full Changelog: https://github.com/transparency-dev/tessera/compare/v1.0.1..d7b88fdfe3c0b2acf7769b39e67e85116e42e635
Fetch roots from CCADB
- Library to fetch CCADB roots by @phbnf in #654
- Automatically fetch roots from ccadb by @phbnf in #657
- Improve remote certificate load by @phbnf in #673
- Back up remotely fetched roots by @phbnf in #677
- Remote root fetching documentation by @phbnf in #688
- Trusted root filtering by @phbnf in #698
- Fix key under which roots are backed up by @phbnf in #701
- Support multiple remote root servers by @phbnf in #797
- Fix potential memory leak in roots fetcher by @AlCutter in #833
Key generation
- Add tool for generating secret manager keys in GCP by @AlCutter in #674
- Add key usage tag in the secret manager names by @AlCutter in #683
- Add docs and warning around the use of latest key version alias by @AlCutter in #694
GCP
- Name buckets after origin for GCE deployment by @phbnf in #686
- Add flag to choose GCS client type by @AlCutter in #723
- Lower gRPC connection pool sizes by @AlCutter in #743
- Add gRPC request hedging for GCS reads by @AlCutter in #855
- Enable spanner otel metrics by @phbnf in #858
POSIX
- [POSIX] Env takes priority when configuring OTel attributes by @mhutchinson in #704
- [POSIX] Register expvar by @phbnf in #806
- [POSIX] Update OTEL support by @AlCutter in #811
- Set badger opts by @AlCutter in #812
- Tune badgerDB for large logs with high throughput by @AlCutter in #869
Migrate from klog to slog
- Reduce logging verbosity by @phbnf in #757
- Set up slog exporter by @mhutchinson in #760
- Change slog level to error level by @phbnf in #761
- Set sloging to info level by @phbnf in #767
- Support direct logging of slog by @mhutchinson in #771
- slog to stdout and use default driver by @phbnf in #778
- slog flags and test log entries by @phbnf in #780
- klog + slog troubleshooting by @phbnf in #781
- Undoexperiments by @phbnf in #783
- GCP and StdOut logging with slog by @phbnf in #782
- Fix slogs by @phbnf in #776
- [Slog] Add decoration using VM and Container details by @mhutchinson in #819
- Switch all klog to slog by @patflynn in #841
- [Logging] More granular debug logging levels by @mhutchinson in #845
- Include errors in logging by @mhutchinson in #854
Major improvements
- Add custom otel sampler by @AlCutter in #729
- Always sample children of sampled parents by @AlCutter in #759
- Add pools to reuse larger structs allocated by each incoming Add request by @AlCutter in #769
- Carve out errors due to client cancelling the context by @phbnf in #770
- Limit size of incoming requests by @phbnf in #814
- Make the poll awaiter interval configurable by @phbnf in #848
- Sanitise HTTP body closing by @mhutchinson in #865
- [Hammer] Don't assume even intervals by @mhutchinson in #890
- More robust SCT creation for duplicate entries by @phbnf in #886
- Add client-side SCT verification and entry matching in hammer by @phbnf in #897
- Log error at error level for 500 errors by @cmurphy in #894
- Remove deprecated pushback_max_dedupe_in_flight flag by @phbnf in #903
Other
- Disable manual KO triggers, and add release tag to built images. by @AlCutter in #651
- Handle builds which are not releases by @AlCutter in #655
- Fix error messages by @phbnf in #656
- s/opts/cv, s/ValidateChain/chainValidator.validate by @phbnf in #667
- link to client issue by @phbnf in #668
- Safe issuer storage init by @phbnf in #669
- Fix typos by @phbnf in #670
- move to debian13 base image by @bobcallaway in #658
- Remove GCS and S3 permission check by @phbnf in #675
- exitf --> errorf by @phbnf in #676
- GCP: Update codelab and terra{form,grunt} to use generate_key by @AlCutter in #678
- CCADB terraform config by @phbnf in #685
- Improve and fix GCP CI test by @AlCutter in #684
- [GCP] Add support for Cloud Armor by @AlCutter in #687
- Add missing space in KO build workflow by @AlCutter in #690
- Use cosigv1-formatted vkey for TF witness by @AlCutter in #697
- Explicitly set OTel Service Instance ID by @mhutchinson in #700
- Switch to maps to define load balancer backends by @phbnf in #705
- Refactor Github Action per b/485167538 by @google-admin in #707
- Fix race condition in tests by @phbnf in #708
- Support multiple domains by @phbnf in #706
- dot by @phbnf in #709
- Mark spans as errors in storage layer by @mhutchinson in #713
- Remove hardcoded domain by @phbnf in #715
- Multiline TesseraCT start command by @phbnf in #716
- Add ArtifactRegistry cache by @AlCutter in #721
- Move arche logs to pull-through artifact registries by @phbnf in #726
- Set gcs_use_grpc to true on arche logs by @phbnf in #727
- Mark cloudrun traffic as internal by @phbnf in #728
- Mark cloudrun traffic as internal, again by @phbnf in #730
- Lower trace sampling ratio by @AlCutter in #731
- mark cloudrun traffic as internal, again, for real by @phbnf in #732
- Mark cloudrun traffic as internal or GCLB by @phbnf in #733
- Mark cloudrun traffic as internal or GCLB, again by @phbnf in #734
- Upgrade arche2026h1 machines n2-standard-8 by @phbnf in #736
- Configure Spanner gRPC connections by @AlCutter in #737
- Must still provide DB name by @AlCutter in #738
- Export go runtime metrics to OTel by @AlCutter in #741
- Client polish by @AlCutter in #740
- enable oslogin by @phbnf in #742
- disable garbage collection by @phbnf in #744
- reduce trace fraction by @phbnf in #745
- Enable grpc-go-observability by @phbnf in #747
- Don't exit if grpc observability can't be set up by @phbnf in #748
- Pass environment variable to docker container by @phbnf in #749
- Lower grpc logging sampling ratio by @phbnf in #750
- Fix wrong issue link by @phbnf in #755
- Lower grpc logging by @phbnf in #762
- Disable grpc observability by @phbnf in #763
- enable grpc for conformance test by @phbnf in #764
- Enable grpc GCS client for conformance test by @phbnf in #765
- Require 4 witness signatures out of 6 by @phbnf in #768
- Allow traffic to flow into conformance test by @phbnf in #772
- Set default connection pool sizes to the gRPC default of 4 by @AlCutter in #774
- Temporarily add pprof server by @AlCutter in #773
- Otel GRPC stats by @phbnf in #775
- Remove grpc observability by @phbnf in #777
- enable logging in ci by @phbnf in #784
- slog -4 for arche logs by @phbnf in #785
- Re-enable gargabe collection on Arche logs by @phbnf in #789
- Extra TesseraCT flags by @phbnf in #791
- Configure golangci-lint with a config by @phbnf in #794
- Use individual cert per log by @phbnf in #793
- Rename databases by @phbnf in #795
- Fix SSL certificate attribute typo by @phbnf in #796
- Use better ssl resource names by @phbnf in #798
- Suffix SSL cert names with a random ID by @phbnf in #800
- Disable pprof by @phbnf in #801
- gcs_use_grpc defaults to true by @phbnf in #802
- Add experimental POSIX migrate tool by @AlCutter in #805
- Fix flags by @phbnf in #809
- Refresh README by @roger2hk in #810
- Add RFC3339 format validation to date-related input variables by @roger2hk in #818
- Remove UTC suffix enforcement for RFC3339 timestamps by @roger2hk in #820
- Typo fix by @phbnf in #831
- Wire create_internal_load_balancer by @phbnf in #830
- Enable pprof by @phbnf in #832
- Prefix container name with forward slash in GCP logs entries by @phbnf in #834
- [Docs] Add GOMEMLIMIT configuration guidance by @mhutchinson in #872
- Fix whitespace and formatting issues by @mhutchinson in #873
Bumps
- Bump the all-deps group with 2 updates by @dependabot[bot] in #652
- Bump the all-deps group with 10 updates by @dependabot[bot] in #653
- Bump the all-deps group with 5 updates by @dependabot[bot] in #660
- Bump the all-deps group across 2 directories with 1 update by @dependabot[bot] in #661
- Bump github/codeql-action from 4.31.8 to 4.31.9 in the all-deps group by @dependabot[bot] in #659
- Bump the all-deps group with 2 updates by @dependabot[bot] in #662
- Bump Tessera@da0fd786de1531fb8a50706e90efefa8bb44480c & tidy by @AlCutter in #663
- Bump gruntwork-io/terragrunt-action from 3.0.2 to 3.1.0 in the all-deps group by @dependabot[bot] in #665
- Bump the all-deps group with 9 updates by @dependabot[bot] in #666
- Bump the all-deps group with 6 updates by @dependabot[bot] in #671
- Bump the all-deps group with 2 updates by @dependabot[bot] in #672
- Bump the all-deps group with 3 updates by @dependabot[bot] in #681
- Bump the all-deps group with 2 updates by @dependabot[bot] in #682
- Bump the all-deps group with 4 updates by @dependabot[bot] in #693
- Bump the all-deps group across 2 directories with 1 update by @dependabot[bot] in #692
- Bump the all-deps group with 2 updates by @dependabot[bot] in #691
- Bump the all-deps group with 10 updates by @dependabot[bot] in #695
- Bump the all-deps group with 2 updates by @dependabot[bot] in #696
- Bump github/codeql-action from 4.32.2 to 4.32.3 in the all-deps group by @dependabot[bot] in #703
- Bump filippo.io/edwards25519 from 1.1.0 to 1.1.1 by @dependabot[bot] in #710
- Bump github/codeql-action from 4.32.3 to 4.32.4 in the all-deps group by @dependabot[bot] in #711
- Bump the all-deps group with 3 updates by @dependabot[bot] in #717
- Bumped go version from 1.24 to 1.25 by @mhutchinson in #719
- Bumped Tessera to latest version by @mhutchinson in #720
- Bump the all-deps group across 1 directory with 5 updates by @dependabot[bot] in #722
- Bump tessera to cc40db422a623a56785124bf2c8c8d64e772f182 & tidy by @AlCutter in #724
- Bump tessera to a6c6cf514da0392782dc98589fca6a6c886e8b6a & tidy by @AlCutter in #725
- Bump tessera to 928cafc84e77f55b71354639b9c3a769a1ee4522 and tidy by @AlCutter in #735
- Update tessera dep by @phbnf in #739
- Bump tessera to 0a59d72873fa96e65ed1f4f44067b9873cbe0302 & tidy by @AlCutter in #746
- Bump tessera to 21f0885b6812ac206fef824c8d08cbc9bbfd32f8 & tidy by @AlCutter in #751
- Bump tessera to 05ff747c43888e4b42aa441f43080a560c9ae895 & tidy by @AlCutter in #752
- Bump the all-deps group with 18 updates by @dependabot[bot] in #754
- Bump the all-deps group with 2 updates by @dependabot[bot] in #753
- Bump tessera to e03a2b54d67366fb5645255e41e87310c2245d15 & tidy by @AlCutter in #758
- Bump tessera to 42e4bb33d521c1eca3da4299b4770e2b7ceb2ec5 & tidy by @AlCutter in #766
- Bump Tessera to d3232337ff2973df75ed1358730c0a17ceda4d48 by @phbnf in #779
- Bump the all-deps group with 10 updates by @dependabot[bot] in #787
- Bump google.golang.org/grpc from 1.79.2 to 1.79.3 by @dependabot[bot] in #799
- Bump the all-deps group across 1 directory with 4 updates by @dependabot[bot] in #804
- Bump google.golang.org/api from 0.271.0 to 0.272.0 in the all-deps group by @dependabot[bot] in #803
- Bump Tessera to 55be0bb9dffada3e6fdba5fd20962f0e4413bf88 by @phbnf in #807
- Bump Tessera to fix tracing by @AlCutter in #813
- Bump the all-deps group with 3 updates by @dependabot[bot] in #816
- Bump the all-deps group with 7 updates by @dependabot[bot] in #817
- Bump Tessera to 41ff86cd3cc04ea9c96a2e1019832deee6bf5b6a & tidy by @AlCutter in #821
- Bump github.com/go-jose/go-jose/v4 from 4.1.3 to 4.1.4 by @dependabot[bot] in #822
- Bump the all-deps group with 13 updates by @dependabot[bot] in #824
- Bump the all-deps group with 3 updates by @dependabot[bot] in #823
- Bump go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp from 0.18.0 to 0.19.0 by @dependabot[bot] in #825
- Bump go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp from 1.42.0 to 1.43.0 by @dependabot[bot] in #826
- Bump go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp from 1.42.0 to 1.43.0 by @dependabot[bot] in #827
- Bump the all-deps group with 14 updates by @dependabot[bot] in #829
- Bump the all-deps group with 2 updates by @dependabot[bot] in #828
- Bump the all-deps group across 2 directories with 1 update by @dependabot[bot] in #835
- Bump the all-deps group across 1 directory with 2 updates by @dependabot[bot] in #836
- Bump the all-deps group across 1 directory with 14 updates by @dependabot[bot] in #844
- Bump the all-deps group with 9 updates by @dependabot[bot] in #847
- Bump Tessera to 5aa29ef7b028f00fe6bb0fc83b25ea387b307c68 by @phbnf in #849
- Bump the all-deps group with 2 updates by @dependabot[bot] in #846
- Bump the all-deps group with 6 updates by @dependabot[bot] in #853
- Bump the all-deps group with 4 updates by @dependabot[bot] in #852
- Bump tessera to ebb15883e951b855bd036db478740b242c58a3f2 & mod tidy by @AlCutter in #856
- Bump tessera to 73bf9ab53ac5273551ab48d4869d6fb8d478314e & tidy by @AlCutter in #857
- bump tessera to db8e65f3001be44ef5118e62be4a129e60760af8 & tidy by @AlCutter in #859
- Bump the all-deps group with 2 updates by @dependabot[bot] in #860
- Bump the all-deps group with 2 updates by @dependabot[bot] in #861
- Bump the all-deps group with 6 updates by @dependabot[bot] in #863
- Bump tessera to ab720fc8dc0e2ab7afcc41095c563d1e8f32384f by @phbnf in #864
- Bump the all-deps group with 3 updates by @dependabot[bot] in #862
- Bump the all-deps group with 17 updates by @dependabot[bot] in #868
- Bump aws-actions/configure-aws-credentials from 6.1.1 to 6.1.3 in the all-deps group by @dependabot[bot] in #867
- Bump the all-deps group with 3 updates by @dependabot[bot] in #870
- Bump the all-deps group with 11 updates by @dependabot[bot] in #871
- Bump the all-deps group with 12 updates by @dependabot[bot] in #876
- Bump aws-actions/amazon-ecr-login from 2.1.5 to 2.1.6 in the all-deps group by @dependabot[bot] in #875
- Bump actions/checkout from 6.0.3 to 7.0.0 in the all-deps group by @dependabot[bot] in #882
- Bump the all-deps group with 3 updates by @dependabot[bot] in #883
- Bump the all-deps group across 2 directories with 2 updates by @dependabot[bot] in #881
- Bump golang from
f23e8b2to18b460din /internal/hammer in the all-deps group across 1 directory by @dependabot[bot] in #887 - Bump the all-deps group with 3 updates by @dependabot[bot] in #889
- Bump the all-deps group with 3 updates by @dependabot[bot] in #888
- Bump the all-deps group with 6 updates by @dependabot[bot] in #892
- Bump the all-deps group with 7 updates by @dependabot[bot] in #893
- Bump Tessera to 010a91a4cae874ef2dfa0b50c1733a1204aba1e0 by @phbnf in #885
- Bump Tessera to d7b88fdfe3c0b2acf7769b39e67e85116e42e635 by @phbnf in #895
- Bump the all-deps group with 6 updates by @dependabot[bot] in #899
- Bump the all-deps group with 13 updates by @dependabot[bot] in #900
- Bump golang in /internal/hammer in the all-deps group across 1 directory by @dependabot[bot] in #898
Notable Tessera changes impacting TesseraCT
Panic fixes
- Fix panic on GCP precondition failure. by @phbnf in #1043
- Prevent panic in badger antispam follower by @roger2hk in #956
- Avoid calling potentially nil func by @AlCutter in #955
Bug fixes
- Fix aws antispam by @AlCutter in #1019
- Fix terminator bug by @AlCutter in #949
- [Awaiter] Fix bug with context cancellation spreading to other processes by @mhutchinson in #885
- Fix witness goroutine leak by buffering results channel by @roger2hk in #865
- Add max entry size limit by @AlCutter in #859
Optimize
- publishCheckpoint returns the next publication time instead of the previous + nanoseconds for AWS by @phbnf in #966
- Export assign/integrate latency by @AlCutter in #951
- Add a context timeout to assignEntries by @AlCutter in #950
- Only attempt to witness if configured to do so by @phbnf in #947
- Improve checkpoint publication scheduling by @phbnf in #940
- Notify integration when sequencing is done by @phbnf in #941
- Update shutdown process to ensure followers catch up to the target index by @roger2hk in #938
- [PublicationAwaiter] Don't fail awaiting on a single error by @mhutchinson in #925
- Improve node cache by @AlCutter in #921
- Set default witness timeout to 1s by @AlCutter in #895
- Mark GCP assignEntries as a periodic task for tracing by @AlCutter in #891
- Use bounded number of workers when doing GC by @AlCutter in #884
- Add timeouts to antispam by @AlCutter in #875
- Add opinionated timeouts for periodic storage operations by @AlCutter in #873
- Avoid deep recursion in witness handling by @mhutchinson in #868
Better monitoring metrics and traces
- Add publishCheckpoint outcome attribute to traces by @phbnf in #922
- Add traces to POSIX by @AlCutter in #920
- Fix ability to sample on periodic tasks by @AlCutter in #919
- Add POSIX Antispam Metrics by @phbnf in #913
- Added metrics to integration by @mhutchinson in #887
- Add metric tracking age of checkpoint read from GCS by @AlCutter in #886
- Add tracing to witnessing by @AlCutter in #883
- Add Await traces by @AlCutter in #882
- Increase log verbosity for PublicationAwaiter context completion by @roger2hk in #881
- [GCP] Trace event logging for milestones in all critical blocks by @mhutchinson in #880
- Added span events in GCP sequencing by @mhutchinson in #879
- [GCP] Add transaction tags by @AlCutter in #877
- Add attribute marking periodic spans by @AlCutter in #876
- [Monitoring] More trace error logs by @mhutchinson in #870
- [Monitoring] Better error reporting in traces by @mhutchinson in #869
- Add checkpoint publication related metrics by @AlCutter in #837
Migrate from klog to slog
- Add slog logger to BadgerDB by @AlCutter in #914
- Update linter for slog by @mhutchinson in #907
- Switch slog to always use context by @mhutchinson in #903
- Switch all klog to slog. by @mhutchinson in #896
- Make slog messages visible in GCP test by @AlCutter in #899
- [GCP] Structured logging for GCP-only files by @mhutchinson in #874
GCP optimizations
- Simplify publish tnx by @AlCutter in #890
- Spanner tweak by @AlCutter in #889
- Make GCP GC cheaper by @AlCutter in #888
- Handle the sequenced entries with a dynamic size in GCP's
assignEntries()by @roger2hk in #862 - Stop reading unused
rootHashinconsumeEntriesfunc by @roger2hk in #842 - Stop reading unused
idinassignEntriesfunc by @roger2hk in #843 - Fix nested transaction error from GCP antispam by @roger2hk in #848
POSIX performance optimizations and settings
- Badger: Tune default options by @AlCutter in #971
- [POSIX] Recommend & check GOMEMLIMIT by @mhutchinson in #976
- [POSIX] Use flock instead of fcntl by @mhutchinson in #973
- [POSIX] Don't loop forever creating temp files by @mhutchinson in #974
- [POSIX] Fixed symlinking partial tiles by @mhutchinson in #972
- [POSIX] Add ability to configure BadgerDB by @AlCutter in #918