- Add parameter distinct=true|false to jobcontroller to get only the latest of each jobs in the overview
- Cronexpressions of JobDefinitions are evaluated on construction of a JobDefinition
- Bugfix: JobLocks are now properly released when Jobs are marked dead.
- Optimization of JobLocking.
- Breaking Change:
JobRepository
interface: add methodsmarkAsRunningIfPossible
andclearRunningMark
. Delete unused methods. - Breaking Change:
StopDeadJobs
constructor now needs aJobService
and aJobRepository
. Those can be obtained by autowiring.
- JobInfo is immutable, this is a breaking change, use the JobInfo.builder() instead
- Modified Mutex Behavior. The new MutexHandler is now able to use a mongoJobLockProvider which persists the mutex-handling in the database. That prevents raceconditions if two jobs of the same type or in the same group should be started at the same time.
- Fixed representation of feature toggles to be consistent with status mediatype.
- Moved html representation of feature toggles from /internal/togglz to /internal/toggles/console
- Moved json representation of feature toggles from /internal/status/togglz to /internal/toggles
- added MetricsFilter to provide counters for http requests
- upgrade spring boot to 1.3.5.RELEASE
- upgrade spring to 4.2.6.RELEASE
- edison-togglz: Fixed a bug in the LDAP authentication filter
- edison-togglz-mongo: Log name of the user switching a toggle also in the mongo state repository
- edison-togglz: added optional LDAP authentication
- Small bugfix: Fix job detail URL in jobs template
- set the /internal/jobs/ in the URL of the Location header
- The JobIds do not contain slashes any more, (/internal/jobs/ is not part of the jobIds)
- Note that jobs which were persisted with older releases might not be accessible any more after the upgrade.
- Also note that some jobs might show up with a red status on your dashboard after the upgrade. Simply rerun the job to fix this.
- togglz: FilterRegistrationBean in TogglzWebConfiguration uses filter name "togglzFilter"
- edison-jobs-(mongo): Moved handling of persisting error status to PersistenceJobEventListener
- Bugfix: Do not aggregate application status in constructor. Use @PostConstruct instead
- New Feature: Mutually exclusion of jobs using JobMutexGroups
- JobDefinition show fixedDelay in seconds if minutes would be zero
- Set job status to error after receiving an error message
- Make mongo codec registry configurable
- Optimized handling of persisting job messages
- add serverSelectionTimeout (default 30secs) to mongo config
- JobStatusDetailIndicator: Indicate error if job could not be retrieved from the repository
- Keep last jobs strategy now keeps the last N jobs of each type
- Create indices in jobs collection
- Return DeleteResult of mongo delete queries
- edison-jobs-mongo: Create index on jobtype and started to sort jobs by date when all job documents are bigger then 32MB
- edison-metrics: Refactored auto configuration of
LoadDetector
to allow strategy selection byapplication.properties
as well as exposing your own bean the same time
- Refactored load indication (see 0.52.0) from edison-status to edison-metrics and introduced new endpoint
/internal/load
which returns the load status to be used by consumers (ie. auto-scaling drivers). Seeexample-metrics
for an usage example on average response time behaviour.
- Added status indicator allowing the application to signal overload (see
LoadStatusIndicator
), which enables ie. watchers to autoscale the application accordingly - two default strategies to discover load, one making use of metrics library, allowing to leverage
@Timed
annotations on your classes (seeapplication.properties
inexample-status
) - Fixed behaviour of application status aggregation to provide instant calculation instead of waiting until first update has ran
- Updated to Spring Boot 1.3.3 (with Spring 4.2.5)
- edison-guava: Refactored edison-guava. Guava caches can now be configured using GuavaCacheConfig. These caches will now expose cache statistics as /internal/metrics (JSON) and /internal/caches/statistics (HTML). See edison-guava/README.md for more details on how to use Guava caches.
- edison-metrics: Fixed package name (...metrics instead of ...health)
- Housekeeping: Updated Spring Boot to version 1.3.2, MongoDB driver to 3.2.2 and Logback to 1.1.5
- edison-status: Added status to /internal/status.html
- edison-jobs: Bug-Fix in find implementations to limit search result after sorting has happened
- edison-jobs: Added method to find job instances by type and status
- Added InternalController that is redirecting requests from /internal to /internal/status. This can be disabled by setting edison.status.redirect-internal.enabled=false
- Reverted: "removed unnecessary bean from togglz configuration" because embedded containers in Spring Boot don't scan web-fragments
- removed unnecessary bean from togglz configuration
- Extended
JobService
to cover also synchronous job execution
- Fix error on job page for long-running jobs
- Job Lifecycle: set hostname via SystemInfo (to overcome problems on Mesos)
- Added field
hostname
to JobInfo, which allows to track on which server the job gets executed - Updated dependencies: async-http-client (to 1.9.32) and mongodb-driver (to 3.2.1)
- Removed unneeded appId from ServiceSpec and ApplicationInfo
- Fixed path in navigation from /internal to /internal/status
- Using edison.status.application.environment + .group instead of edison.servicediscovery.environment + .group. The properties edison.servicediscovery.environment and edison.servicediscovery.group can be removed from application.properties/.yml
- VCS information are now expected in edison.status.vcs.* instead of info.build.*. Change in build.gradle required
- Added ServiceSpecs to be able to specify dependencies to other services
- Added TeamInfo to the /internal/status
- Added environment, group and appId to /internal/status
- Added convenience methods to
JobEventPublisher
to make logging more fun again - Updated spring-boot to version 1.3.1.
- Update to org.springframework.boot:spring-boot-starter-thymeleaf:1.3.1.RELEASE required
- Fixed bug in navigation: broken path to bootstrap css
- Added some more information to /internal/status
- Fixed the format of the status JSON
- Update to com.github.fakemongo:fongo:2.0.4 required
- Removed StateChangeEvent.State.CREATE, replaced it by START
- Renamed State.STILL_ALIVE to KEEP_ALIVE
- Job HTML templates are now using the Thymeleaf navigation fragments so µServices have a common menu on all pages.
- Minor refactorings in handling of job events.
- Rebuild job state architecture due to introduce an event bus to separate the JobInfo and the JobRepository. From now on the JobRunner and the specific jobs will report changes (states and messages) to an EventPublisher, which will propagate the events to the JobEventListeners (e.g. persist them or log them). You can register your own JobEventListeners. The JobMonitor is removed.
- If your job has an error, you should throw a RuntimeException with an errorMessage. Then the job will be retriggered (if retry configured).
- Fixed default JobMonitor to save log messages in JobRepository for every message.
- Minor bugfixes
- Using Guava CacheStats in CacheStatistics
New Features:
- Show the runtime of the job to identify the complete exports with actions.
- Format details in status.json to camel case key names
New Features:
- Broken Jobs are automatically restarted according to the number of retries specified in the
JobDefintion
. JobDefinition
now has a new fieldrestarts
, specifying how often a job is restarted if it failed because of an error.
Breaking Changes:
- Renamed libraries: all libs now have the prefix "edison-".
- The factory methods of the
DefaultJobDefinition
now have an additional parameter for the number of restarts. - Every
JobRunnable
now needs to provide aJobDefinition
- Removed
JobRunnable#getJobType
. The job type is accessed by theJobDefinition
- Renamed to
DefaultJobDefinition#notTriggerableJobDefinition
tomanuallyTriggerableJobDefinition
to clarify purpose - Removed hystrix module
New Features:
- MongoDB persistence: Allow to retrieve the object (including key) when it is created.
Changed signature of
create
andcreateOrUpdate
inAbstractMongoRepository
to return the object instead of void
Bug Fixes:
- Allow also a value without key to be given to
AbstractMongoRepository#createOrUpdate
without throwing a NPE application.properties
: renamededison.application.name
(introduced in Release 0.35.0) back intospring.application.name
(see ContextIdApplicationContextInitializer for details on identifying your application)- Added dummy feature toggle implementations (for
FeatureClassProvider
) to example projects, which can now be run on its own again (ie.gradle example-jobs:bootRun
)
- Updated spring-boot to version 1.3.0, hystrix to 1.4.21 and metrics library dependency to 3.1.3
- Update togglz library to 2.2.0
- Cleaned up link construction on internal status and job pages
- Timestamps in JSON status representation are now in ISO-8601 date format (including timezone)
- Fixed possible broken links on /internal pages
- Added servicediscovery-client to edison-microservice
- ServiceDiscovery is only used if edison.servicediscovery.* properties are available
- JobDefinitions extended to support jobs that are not triggered automatically.
- Fixed links on internal pages
New Features:
- New library servicediscovery-client introduced to provide basic ServiceDiscovery features for Edison Microservices. This lib may be used to register services at an Edison JobTrigger.
Bug Fixes:
- Fixed possible ConcurrentModificationException if job messages are accessed from JobInfo.
Breaking Changes:
- application.properties is now using server.context-path instead of server.contextPath.
- application.properties is now using edison.application.name instead of application.name.
- Added ID to panel with job messages for identification in JobTrigger
- Added UIs for Status pages
- Nicer internal pages, including reworked jobs and job-definitions
New Features:
- Prepared integration with (upcoming) Edison JobTrigger
- Added Bootstrap UIs for Jobs and /internal
- Added edison-service for typical microservices, including jobs, health, status,
- Using webjars in edison-service to include bootstrap and jquery
Breaking Changes:
- The format of job definitions and jobs has changed.
Bugs fixed:
- Fixed critical bug that prevented the startup of the server in combination with usage of edison jobs-mongo
Bugs fixed:
- Fixed bugs that prevented the StatusDetails of jobs to be added to status page.
New Features:
- Jobs are rendered with absolute URLs in JSON and HTML representations.
- Introduced the (optional) concept of JobDefinitions to describe the expected frequency etc. to trigger jobs.
- Based on the JobDefinitions, for every Job a StatusDetailIndicator is registered automatically. This may be disabled by either not providing a JobDefinition, or by setting property edison.jobs.status.enabled=false
Breaking Changes:
- Jobs in earlier version where identified by the URI of the job including the servlet context path. Starting with this version, the context path is not part of the identifier anymore. You should DELETE all old jobs, otherwise the URLs a broken.
- Job representations now contain the full URL of the jobs instead of relative URIs.