Codekvast Release Notes
- Bug fix: codekvast-javaagent now ignores types annotated with @org.aspectj.lang.annotation.Aspect. This fixes a bug where a Spring-managed @Aspect clashes with the Codekvast-managed AspectJ load-time weaver, so that the aspect does not kick in.
- Added Java 15 to the agent test suite.
- codekvast-javaagent now detects default methods in interfaces.
- codekvast-javaagent accepts apiKey (aka CODEKVAST_API_KEY or -Dcodekvast.apiKey) as synonym to licenseKey.
- Dashboard: handler for deadlock exceptions.
- Lock management: now uses the database functions GET_LOCK() and RELEASE_LOCK() instead of SELECT ... FOR UPDATE
- Dashboard: now refuses to import synthetic methods. WeederService removes already imported synthetic methods.
- Upgraded to Gradle 6.5, Spring Boot 2.2.7, Kotlin 1.3.72 plus some more
- Added Java 14 to the agent test suite.
- Converted deployment model from EC2 "pets" to ECS Fargate "cattle".
- Automatic cleanup of disappeared methods on codebase import.
- codekvast-javaagent does not log on SEVERE level anymore.
- Bug fix: Unique index on methods.signature is now case-sensitive
- codekvast-javaagent logs a warning about missing mandatory properties and simply does not start even if codekvast.enabled=true. It does not throw an exception as before.
- codekvast-javaagent does not require any mandatory parameters when $CODEKVAST_ENABLED=false or -Dcodekvast.enabled=false
- Fixed some UX glitches in Dashboard's Method form.
- Added '*.canEqual(java.lang.Object)' to synthetic methods
- Upgraded to Spring Boot 2.2
- Upgraded to MariaDB 10.4
- New field "environment" in the GetConfigPoll (java-agent 1.1 is still supported)
- The agent now supports overriding of config parameters with system properties. Example: -Dcodekvast.appVersion=1.2.3 will override appVersion=xxx in codekvast.conf
- Support for uploading class.protectionDomain.codeSource.location for each method
- The agent supports running on Java 8, 9, 10, 11, 12 and 13. NOTE: The support for Java 7 is dropped!
- Server is now built with Java 12, but still runs on Java 11.
- Replace Server Error 500 caused by RequestRejectedException with a simple 404.
- Bug fix: eliminating methods in search results that haven't been tracked long enough.
- Removed the possibility to delete terminated agents from the dashboard UI (it is now automatic, based on the retention period).
- Includes retentionPeriodDays in 'Tracked For' popup.
- Upgraded to Spring Boot 2.1.9, Kotlin 1.3.50. Also upgraded Lombok, Mockito, jslack and logstash-logback-encoder.
- codekvast-login: Replaced groovy-templates with mustache.
- The Codekvast dashboard webapp is now packaged by Angular CLI (ng) instead of by hand-crafted webpack config.
- Corrected a bug in codekvast-javaagent: now it deletes /tmp/codekvast-nnn/META-INF/aop.xml on JVM termination.
- Added "hostname" field to agent config.
- Changed the way the agent's codekvast.conf is located: if one of -Dcodekvast.configuration or CODEKVAST_CONFIG is specified, no automatic locations are examined. This makes it possible to disable the agent without editing or moving the config file.
- Upgraded to Spring Boot 2.1.3, Angular 7.2.6, TypeScript 3.3.3
- Added support for Basic proxy authentication in codekvast-javaagent.
- Upgraded server apps to Java 11. The agent supports running on Java 7, 8, 9, 10 and 11.
- Added "enabled" field to agent config.
- Upgraded to Spring Boot 2.1.1, Kotlin 1.3.0, aspectj-weaver 1.9.2, Lombok 1.18.4 and Flyway 5.2.3.
- Minimized codekvast-javaagent.jar. Size decreased from 5.2 MB to 3.8 MB.
- Replaced Nginx with AWS ALB.
- Added tag "env" to all application metrics.
- Java Agent: Removed deprecated V1 model classes.
- Upgraded to Spring Boot 2.0.6, Kotlin 1.2.71, Angular 6.1.10
- Added some more metrics.
- All application metrics are tagged with hostname.
- Now logs in JSON format to /var/log/codekvast/$service/application.log
- Application start/stop is now logged to the Slack channel #alarms (was: #builds).
- Now also Codekvast Admin logs start/stop to Slack #alarms.
- Upgraded to Gradle 4.10.
- Added login count metrics.
- Added file import metrics.
- Bug fix in the agent. Applying codekvast-javaagent on a Spring Boot 2.0+ executable jar resulted in an NPE when trying to scan the codebase.
- Removed Codekvast Admin.
- Upgraded to Spring Boot 2.0.4
- Upgraded to Spring Boot 2.0.4, Gradle 4.9, Lombok 1.18.2, Angular 6.0.6, RxJS 6.2.1, Webpack 4
- Replaced Cloud Watch with Datadog
- Java Agent: Corrected scheduling bug. Invocation data was published far too often.
- Dashboard: optimized Methods search. Now a lot faster and consumes less memory.
- Java Agent: Fixed a rare ConcurrentModificationException
- Dashboard: added Applications tab to status page.
- Added support for exporting metrics to CloudWatch
- Java Agent: Correction of 0.23.6: Correctly detect typical webapp even if more codeBase paths than one.
- Added ability to trace the Java Agent's CodeBaseScanner by e.g.,
export CODEKVAST_FINEST_LEVEL=INFObefore starting the app. Useful when trouble shooting code base scanning issues and you are unable to edit $CATALINA_HOME/conf/logging.properties.
- Java Agent: now detects a typical webapp: The config parameter
codeBasecan now be set to only
path/to/webapp/WEB-INF. This will be interpreted as
path/to/webapp/WEB-INF/libif these exist and are directories.
- Added column jvms.codeBaseFingerprint
- codekvast-javaagent.jar now includes the number of codebase files in uploads to server.
- codekvast-javaagent.jar now logs repetitive stuff on FINE level. One-time bootstrap stuff is still logged on INFO level.
- codekvast-javaagent.jar now waits for a war to be exploded before trying to resolve the app version
- Fixed open file leak in AgentServiceImpl. Now uploaded files' input streams are closed in a try-finally block.
- Dashboard: Added ability to filter on applications and environments in Search Methods.
- Dashboard: Added ability to delete terminated agents.
- Agent: codekvast.conf: Added support for appVersion strategy "properties /path/to/file prop1,prop2"
- Drop database column users.lastActivityAt
- Upgraded to spring Boot 2.0.1
- Database schema changes: applications, environments, jvms, invocations.
- Added popovers.
- Upgraded to Flyway 5.0.7
- Upgraded to Spring Boot 2, Spring Framework 5, Spring Security 5, Flyway 4.2.0.
- Implemented login service.
- Upgraded to Gradle 4.6
- Upgraded dependencies
- Moved api.codekvast.io/heroku to login.codekvast.io/heroku (with an nginx rule to also accept the former)
- Renamed provisioning/ to deploy/
- Started implementing new login service.
- Upgraded Java dependencies: jslack 1.0.25, wiremock 2.15.0, Kotlin 1.2.21
- Replaced PhantomJS with Chrome headless for web tests.
- Dashboard: passes JWT token with cookie instead of header.
- Upgraded to Spring Boot 1.5.10
- Upgraded to Gradle 4.5
- Dashboard: the method details table to right is now optional.
- Dashboard: method details does not show hosts if more than 10.
- Java Agent: downgraded third-party dependencies so that it works in Java 7 again.
- Dashboard: added more search filters in the Methods page
- Upgraded to Angular 5.1.1, Typescript 2.6.1, aspectjweaver 1.8.12
- Upgraded to Spring Boot 1.5.9
- Upgraded to Gradle 4.4
- Fixed bug caused by renaming classes in agent-model
- Moved codebase analysis from agent to server. Now all discovered methods are uploaded to the server, no matter the name pattern.
- Upgraded to Angular 4.4.4, Typescript 3.5.3.
- Upgraded to aspectjweaver 1.8.11.
- Upgraded to Spring Boot 1.5.8
- Renamed Codekvast Warehouse to Codekvast Dashboard.
- Added Boot-Class-Path to codekvast-javaagent's MANIFEST.MF (eliminates the need for -Xbootclasspath/a:codekvast-javaagent-x.x.jar)
- Improved handling of communication failures in Codekvast Warehouse.
- Added support for trial periods.
- Increased maxMethods to 25.000 in TEST price plan.
- Bug fix in Warehouse when importing incomplete methods.
- Bug fix in Warehouse: ga('send', 'pageview') after navigation events.
- Upgraded to Spring Boot 1.5.7
- Redesigned Warehouse /home; made it more compact.
- Added Slack integration in CustomerServiceImpl.
- Implemented Status page in Codekvast Warehouse.
- Upgraded to Angular 4.3.2.
- Upgraded to Spring Boot 1.5.6, Jackson 2.9.0.
- Upgraded to Gradle 4.0.
- Upgraded Gradle plugins.
- Codekvast Agent avoids publishing empty invocation sets.
- Upgraded to Angular 4.2.4 and Webpack 3.0.0
- Added column users.lastActivityAt
- Now redirects to /logged-out after webapp session has expired
- Now redirects to /not-logged-in when an unauthenticated user clicks a link that requires login
- Bug fix: now deprovision works.
- Bug fix: the first invocation data is now uploaded very soon after start
- Added support for Spring Boot executable jars
- Upgraded to Angular 4.2.2
- Removed support for building a Docker image for Codekvast Warehouse.
- Adjusted logging to make it easier do document what to look for when starting the agent.
- Implemented price plan enforcements.
- NOTE: Backwards incompatible API change in AgentController.
- Fixed a OkHttp Response leak in java-agent
- Made Heroku add-on shareable across apps.
- Removed classifier 'all' from codekvast-javaagent-x.x.x.jar. It used to be named codekvast-javaagent-x.x.x-all.jar
- Merged codekvast-javaagent.jar and aspectjweaver.jar
- Warehouse: Added invocation statuses to method summary and method details page.
- Warehouse: Added settings editor.
- Warehouse: Implemented detection of inconsistent collector config.
- Warehouse: Added a landing page for feature voting, to make it simpler to use Google Analytics.
- Adopted Yarn instead of npm for installing Node dependencies.
- Eliminated the Codekvast Daemon.
- Renamed all packages from
- Bumped minimum Java version for the agent to Java 7.
- Renamed /api/v1/... endpoints to /webapp/v1/...
- Agent zip distribution build.
- Added provisioning/ containing Ansible playbooks for setting up an AWS stack per customer/environment.
- Restructured and cleaned up README.md
- Added /home to Warehouse.
- Improved Warehouse's /methods. Now the scrollbars work as expected.
- Implemented Warehouse's method details page. Ugly, but working.
- Implemented a simple web interface to Warehouse.
- Upgraded to Gradle 3.4.
- Upgraded to Angular 4, Typescript 2.
- Upgraded to Spring Boot 1.5.
- Improved codekvast-warehouse.sh to use environment variables.
- Switched to java:8-jre-alpine for codekvast-warehouse Docker image (reduced image size from 332 MB to 129 MB).
- Replaced Serenity with Geb + Spock.
- Warehouse: Switched from embedded Tomcat to Undertow.
- Warehouse: Switched from tomcat-jdbc to HikariCp.
- Warehouse: Runs Karma tests against PhantomJS, Firefox and Chrome unless headless environment.
- Bug fixes in build scripts.
- Upgraded to Gradle 2.14.
- Made the Ansible playbook for codekvast-daemon work with Ansible 1.5.4
- Implemented rudimentary web UI for showing warehouse data.
- Renamed codekvast-warehouse.docker-compose.yml to codekvast-warehouse.sh
- Switched to building frontend with Webpack
- New download URLs in Bintray
- Added support for unit testing TypeScript with Karma.
- Added support for developing Codekvast Warehouse web UI with Angular2 and TypeScript.
- Added a Serenity BDD- and Docker-based function test for Codekvast Warehouse.
- Added proper integration test for Codekvast Collector.
- Now Codekvast also tracks constructors.
- Refactored daemon; renamed many classes and packages.
- Made all @Scheduled parameters configurable.
- Fixed auto-commit bug in warehouse zip file import.
- Added Docker-based integration test for ScpFileUploader.
- Added ready-checker support in testsupport's DockerContainer.
- Warehouse integration tests now use MariaDB in a Docker container.
- Improved test coverage.
- Implemented simple REST API in Codekvast Warehouse: /api/v1/methods/
- Added Swagger UI in Codekvast Warehouse.
- Fixed bug in warehouse; now it can insert into import_file_info.
- Upgraded dependencies.
- Upgraded to Gradle 2.12
- Upgraded to Spring Boot 1.3.3.RELEASE
- Upgraded bintrayPlugin, added github info to Bintray metadata.
- Fixed ignored Flyway migrations (caused by misspelled file names).
- Tomcat and Jenkins now downloaded from their archive sites.
- Moved the playground stuff to the branch playground and removed it from master.
- Added Github Pages at http://crispab.github.io/codekvast/
- Now uploads codekvast-collector-x.x.x-*.jar to bintray
- Upgraded to Gradle 2.11
- Upgraded some dependencies: aspectj 1.8.8, h2database 1.4.191, opencsv 3.7, mariadb-java-client 1.3.5
- Now the warehouse contains all methods, even those that are excluded from collection. The confidence column tells why a certain signature was excluded.
- CollectorConfig now backward compatible with 0.15.6.
- Collector now excludes synthetic methods.
- Codekvast Daemon is now distributed as a Spring Boot executable jar (was: a Gradle application).
- Renamed CollectorConfig.packagePrefixes to CollectorConfig.packages.
- Renamed CollectorConfig.excludePackagePrefixes to CollectorConfig.excludePackages.
- Simplified config of SCP upload.
- Added fail-fast validation of DaemonConfig.uploadToHost. Now the daemon logs an ERROR if it fails to touch a file in the upload target.
- Changed default collector and daemon dataPath to /tmp/codekvast/.collector.
- Added Overview and Kick The Tyres sections to README.md.
- Corrected codekvast-daemon installation guide.
- Enabled color in console logging.
- Simplified default config.
- Upgraded to Spring Boot 1.3.0
- Refactored to use sprint-boot-starter-logging instead of home-rolled LoggingConfig.
- Default methodVisibility is now protected.
- Tripled the performance of codekvast-collector.
- Added CollectorConfig.excludePackagePrefixes that excludes (time-critical) code from weaving
- Simplified logging config. -Dcodekvast.logPath has highest precedence.
- The codekvast-database container now stores the MariaDB data in the host's /var/lib/codekvast-database.
- The codekvast-warehouse container logs in /var/log/codekvast.
- Made it possible to exec mysql in a running codekvast-database container.
- Switched to a smaller Docker base image for codekvast-warehouse
- Made codekvast-warehouse exit immediately if Docker container linking is misconfigured.
./gradlew :product:warehouse:buildnow also builds distDocker and tags the image with "latest" and "$version-$gitHash"
- Added docker-compose.sh
- Dockerized codekvast-warehouse.
- Added MIT license header to all source files.
- Fixed NPE in CollectorConfigLocator.
- Added support for SCP upload of daemon export files.
- Moved playground server and daemon parts to new playground folder.
- Corrected bug in CodeBase.readByteCodePatternsFrom()
- Corrected warehouse's application.properties: added missing "codekvast.importPathPollIntervalSeconds = 30"
- Corrected the names of the generated start scripts for daemon and warehouse.
- codekvast-warehouse-x.x.x.zip now uploads to bintray.
- Renamed warehouse table file_meta_info to import_file_info.
- Applied some Intellij inspections.
- Changed Central warehouse schema: replaced jvms.jvmDataJson with discrete fields.
- Added jvms.environment to central warehouse schema.
- Improved import performance.
- Improved logging.
- Made deletion of imported zip file optional.
- Created module product/warehouse, which has a dependency on mariadb-server. See README for installation instructions.
- Renamed modules and packages below product/agent
- Implemented daemon data export
- Now all except codekvast-collector requires JDK 8
- Upgraded angular-ui-bootstrap.js to 0.14.3
- Upgraded to Spring Boot 1.2.7
- Upgraded to Gradle 2.8
- Now requires JDK 1.7 for codekvast-daemon
- Improved logging
- Renamed codekvast-javaagent to codekvast-daemon
- Preparations for making it possible to use Codekvast for Java Web Started applications (incubating).
- Upgraded to Gradle 2.7
- Enabled static weaving of the Codekvast Daemon
- Codekvast Collector is now possible to initialize from a non-javaagent context.
- Upgraded to Spring Boot 1.2.5
- Upgraded dependencies
- Rewrote from ajc to @Aspect style (so that all modules can be compiled with a plain Java compiler)
- Implemented Delete collectors
- Upgraded dependencies
- Bug fix in Agent: now it handles more Guice-manipulated method names
- Capacity: Application statistics calculations are delayed by 5s (configurable). Requests for the same app during the delay are ignored.
- Capacity: Now Save Settings only recalculates actually changed applications.
- Bug: Clicking I icons in table header in collectors.html resorted the column
- Improvement: Now logging also shows the thread name
- Improvement: Better logging when backing up and restoring database.
- Improvement: Logs pending Flyway migrations at app startup.
- Improvement: Avoids backing up database immediately after restoring from restore-me.zip
- Bug: Redundant statistics recalculations for same app in different JVMs.
- Improvement: added timing logging to report generator.
- Replaced tooltips with popovers in application-statistics.html.
- Connected code-usage-report.html with live version data.
- Added filtering and sorting to collectors.html
- Now the code-usage-report form behaves correctly. Still no report though.
- Worked on code-usage-report. Still random fake data though.
- Added filter and column sorting to application-usage-statistics.html
- UI and database schema change; renamed application_statistics.num_probably_dead to num_possibly_dead. Database is migrated by Flyway.
- Simplified logback.xml
- Improved collectors.html so it now shows warning color for dead collectors.
- Keeps track of agent clock skew. Breaks compatibility of agent-API.
- Server now tracks uptime.
- Added Data Age to collectors.html.
- Added version info to codekvast-server web page footer.
- Added progress bar to statistics Usage Cycle column.
- Added Redhat 6 start script for codekvast-javaagent.
- Changed format of JvmData. Breaks compatibility between collector, agent and server.
- Bug fix in codekvast-javaagent: Method.millisSinceJvmStart was not correct.
- Implemented server-side support for application statistics.
- codekvast-server now requires JDK 8.
- Java compiler for 1.6 & 1.7 uses correct boot classpath.
- Now excludes trivial methods from tracking (equals(), hashCode(), toString(), compareTo(), getters, setters).
- Added a Gentoo start script for codekvast-server and codekvast-javaagent.
- Improved the installation procedures in CodekvastUserManual.
- Now CodekvastUserManual.html is self-contained. No more external images.
- codekvast-javaagent now runs on Java 6.
- Improved the server web interface.
- codekvast-javaagent now uses a private H2 database for storing not yet uploaded data.
- Added /etc/init.d scripts for agent and server.
- Documented installation of agent and server (work in progress).