-
Notifications
You must be signed in to change notification settings - Fork 31
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(agent): two-way communications #1608
Conversation
Test image available:
|
Test image available:
|
Test image available:
|
Test image available:
|
Test image available:
|
Test image available:
|
5b947e0
to
01e7aea
Compare
Test image available:
|
Test image available:
|
01e7aea
to
f80f01d
Compare
Test image available:
|
Test image available:
|
f80f01d
to
3fed4a0
Compare
Test image available:
|
Test image available:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request blocked. web-client
submodule updates are performed automatically by CI when that repository is updated. Please revert or drop all changes to the web-client
submodule from this PR and perform any required frontend work by opening and merging a PR against cryostat-web.
04ff2f7
to
c7755d3
Compare
/build_test |
0575b89
to
2e0dee0
Compare
cryostatio/cryostat-agent#175 (comment) There seems to be a bug with stopping recordings on the |
The stoppage notification is emitted, but after navigating away and back to the Recordings page and triggering a re-query of data, the recording state is actually still running. That matches what would be expected from the stack trace. This behaviour is also present on |
Agent-side logs:
It looks like what is happening is that the remote JMX connection invokes the The Agent dumps the stopped recording contents to a file, closes the recording, uploads the file dump to the server, and then starts a new replacement recording with the same name and other settings according to the Harvester configuration. The server meanwhile, after sending the JMX stopRecording command: Optional<IRecordingDescriptor> descriptor =
getDescriptorByName(connection, recordingName);
if (descriptor.isPresent()) {
IRecordingDescriptor d = descriptor.get();
if (d.getState().equals(RecordingState.STOPPED) && quiet) {
return d;
}
connection.getService().stop(d);
this.cancelScheduledTasksIfExists(targetId, recordingName);
HyperlinkedSerializableRecordingDescriptor linkedDesc =
new HyperlinkedSerializableRecordingDescriptor(
d,
webServer.get().getDownloadURL(connection, d.getName()),
webServer.get().getReportURL(connection, d.getName()),
RecordingState.STOPPED);
this.issueNotification(targetId, linkedDesc, STOP_NOTIFICATION_CATEGORY);
return getDescriptorByName(connection, recordingName).get();
} else {
throw new RecordingNotFoundException(targetId, recordingName);
} does a little other work of its own, then tries to query the target for the updated state of the recording by the same name so that it can inform the original client of the latest state. The expectation should be that only the tl;dr this is a conflict between trying to use manual recording stop operations on the Agent Harvester-managed recording. I'm not sure if it's really a bug in that case but maybe there is something to be done to make this result a little more clear and explicit to the user. In the Agent HTTP connection case that is probably easier to do since we have more control. In this JMX case, I don't know what can be done really. |
* chore(svc): extract EventOptionsBuilder to -core and use new CryostatFlightRecorderService * add unimplemented overrides * test(smoketest): enable API writes on one agent-equipped sample app * chore(serial): extract recording descriptor to -core * chore(activerecordings): clean up an error handler * feat(agent): implement dynamic start of JFR over HTTP * bump -core version
Co-authored-by: Andrew Azores <[email protected]>
* build(deps): bump dagger from 2.45 to 2.47 Bumps [dagger](https://github.com/google/dagger) from 2.45 to 2.47. - [Release notes](https://github.com/google/dagger/releases) - [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md) - [Commits](google/dagger@dagger-2.45...dagger-2.47) --- updated-dependencies: - dependency-name: com.google.dagger:dagger dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> * use single version for dagger artifacts --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Andrew Azores <[email protected]>
* build(pom): restore dagger compiler property Signed-off-by: Elliott Baron <[email protected]> * Use dagger.version for property --------- Signed-off-by: Elliott Baron <[email protected]>
2e0dee0
to
9e2ba17
Compare
This PR/issue depends on:
|
Welcome to Cryostat! 👋
Before contributing, make sure you have:
main
branch[chore, ci, docs, feat, fix, test]
To recreate commits with GPG signature
git fetch upstream && git rebase --force --gpg-sign upstream/main
Fixes: #1578
Depends on cryostatio/cryostat-agent#175
Description of the change:
This change adds allows a match expression example to be copied to the clipboard...
Motivation for the change:
This change is helpful because users may want to copy the example for easier use...
How to manually test: