Skip to content
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

RESTful webservice to receive notifications of artifact uploads #3

Open
kevstigneev opened this issue Apr 28, 2015 · 6 comments
Open

Comments

@kevstigneev
Copy link
Contributor

Expected result:

  • The plugin exposes a webservice endpoint to receive artifact upload notifications.
  • Notifications come in a form of HTTP POST requests with artifact coordinates and target repository as a payload.
  • Notifications are received in a non-blocking way. Processing is asynchronous.
  • The endpoint support authentication.
  • The webservice requires authorizarion. Access control goes through the usual Nexus facilities.
@kevstigneev
Copy link
Contributor Author

At pull request #9 the service does not return till the artifact is replicated.
Might cause timeouts for large files.

@kevstigneev
Copy link
Contributor Author

@alekseysemenov please check if a large (few GB) artifact replication that takes few minutes is handled well. If it does - this task is to be closed.

Fully asyncronous replication has been moved to #19.

@kevstigneev
Copy link
Contributor Author

@alekseysemenov Please verify the cases

  • A Nexus instance receives so many uploads in time so thread pool for notification senders is exhausted. What's happening when another upload arrives? Does it cause a message processing lock?
  • A peer Nexus instance is down. What's happening with the primary instance when uploads come?

@kevstigneev
Copy link
Contributor Author

It appeared that:

  • Nexus message processing is blocked when there are more ongoing replications than the thread pool size.
  • Nexus message processing is blocked on each upload when number of peers is larger than thread pool size.

Given that this task can be considered "done" if:

  • Notification sending does not block message processing thread in any way. I.e. a task to send a notification is queued first and then goes to a thread for execution.
  • If the queue is full, an exception is thrown, an error is logged but nothing is blocked on that.

@ctapobep
Copy link

What do you mean by message processing? And what are the consequences for Nexus in general?

gd-tmagrys added a commit to gd-tmagrys/nexus-replication-plugin that referenced this issue Jun 28, 2015
gd-tmagrys added a commit to gd-tmagrys/nexus-replication-plugin that referenced this issue Jun 30, 2015
gd-tmagrys added a commit to gd-tmagrys/nexus-replication-plugin that referenced this issue Jun 30, 2015
gd-tmagrys added a commit to gd-tmagrys/nexus-replication-plugin that referenced this issue Jun 30, 2015
gd-tmagrys added a commit to gd-tmagrys/nexus-replication-plugin that referenced this issue Jun 30, 2015
gd-tmagrys added a commit to gd-tmagrys/nexus-replication-plugin that referenced this issue Jun 30, 2015
griddynamics#3

ArtifactUpdateApiClient#offerRequest now does not work in blocking way.
Request is being added to internal queue.
Background thread iterates through this queue, and submit Runnables to Executor.
gd-tmagrys added a commit to gd-tmagrys/nexus-replication-plugin that referenced this issue Jun 30, 2015
griddynamics#3

ArtifactUpdateApiClient#offerRequest now does not work in blocking way.
Request is being added to internal queue.
Background thread iterates through this queue, and submit Runnables to Executor.
gd-tmagrys added a commit to gd-tmagrys/nexus-replication-plugin that referenced this issue Jun 30, 2015
griddynamics#3

ArtifactUpdateApiClient#offerRequest now does not work in blocking way.
Request is being added to internal queue.
Background thread iterates through this queue, and submit Runnables to Executor.
gd-tmagrys added a commit to gd-tmagrys/nexus-replication-plugin that referenced this issue Jun 30, 2015
griddynamics#3

ArtifactUpdateApiClient#offerRequest now does not work in blocking way.
Request is being added to internal queue.
Background thread iterates through this queue, and submit Runnables to Executor.
gd-tmagrys added a commit to gd-tmagrys/nexus-replication-plugin that referenced this issue Jun 30, 2015
griddynamics#3

ArtifactUpdateApiClient#offerRequest now does not work in blocking way.
Request is being added to internal queue.
Background thread iterates through this queue, and submit Runnables to Executor.
gd-tmagrys added a commit to gd-tmagrys/nexus-replication-plugin that referenced this issue Jun 30, 2015
griddynamics#3

ArtifactUpdateApiClient#offerRequest now does not work in blocking way.
Request is being added to internal queue.
Background thread iterates through this queue, and submit Runnables to Executor.
gd-tmagrys added a commit to gd-tmagrys/nexus-replication-plugin that referenced this issue Jun 30, 2015
griddynamics#3

ArtifactUpdateApiClient#offerRequest now does not work in blocking way.
Request is being added to internal queue.
Background thread iterates through this queue, and submit Runnables to Executor.
@gd-tmagrys
Copy link
Contributor

Pull request #28 was merged. Conditions mentioned in "Given that this task can be considered..." are satisfied so issue can be resolved.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants