diff --git a/drivers/java/driver.go b/drivers/java/driver.go index 2d700ba51..51c0d7d29 100644 --- a/drivers/java/driver.go +++ b/drivers/java/driver.go @@ -171,9 +171,9 @@ func (d *Driver) Capabilities() (*drivers.Capabilities, error) { return capabilities, nil } -func (r *Driver) Fingerprint(ctx context.Context) (<-chan *drivers.Fingerprint, error) { +func (d *Driver) Fingerprint(ctx context.Context) (<-chan *drivers.Fingerprint, error) { ch := make(chan *drivers.Fingerprint) - go r.handleFingerprint(ctx, ch) + go d.handleFingerprint(ctx, ch) return ch, nil } @@ -241,7 +241,16 @@ func (d *Driver) buildFingerprint() *drivers.Fingerprint { func (d *Driver) RecoverTask(handle *drivers.TaskHandle) error { if handle == nil { - return fmt.Errorf("error: handle cannot be nil") + return fmt.Errorf("handle cannot be nil") + } + + // If already attached to handle there's nothing to recover. + if _, ok := d.tasks.Get(handle.Config.ID); ok { + d.logger.Debug("nothing to recover; task already exists", + "task_id", handle.Config.ID, + "task_name", handle.Config.Name, + ) + return nil } var taskState TaskState diff --git a/drivers/java/handle.go b/drivers/java/handle.go index 979c8f1c4..98586708d 100644 --- a/drivers/java/handle.go +++ b/drivers/java/handle.go @@ -16,7 +16,6 @@ type taskHandle struct { pid int pluginClient *plugin.Client logger hclog.Logger - monitorPath string // stateLock syncs access to all fields below stateLock sync.RWMutex