handle shutdown requested message
Message type shutdownRequested doesn't have reason, which causes checkpoint on termination not work. This commit is to ask KCL daemon to checkpoint on shutdownRequested.
This commit is contained in:
parent
c86a5da722
commit
e7b75a20ac
2 changed files with 13 additions and 1 deletions
|
|
@ -51,6 +51,12 @@ func (srp *sampleRecordProcessor) ProcessRecords(records []kcl.Record) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (srp *sampleRecordProcessor) ShutdownRequested() error {
|
||||||
|
fmt.Fprintf(os.Stderr, "Got shutdown requested, attempt to checkpoint.\n")
|
||||||
|
srp.checkpointer.Shutdown()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (srp *sampleRecordProcessor) Shutdown(reason string) error {
|
func (srp *sampleRecordProcessor) Shutdown(reason string) error {
|
||||||
if reason == "TERMINATE" {
|
if reason == "TERMINATE" {
|
||||||
fmt.Fprintf(os.Stderr, "Was told to terminate, will attempt to checkpoint.\n")
|
fmt.Fprintf(os.Stderr, "Was told to terminate, will attempt to checkpoint.\n")
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ import (
|
||||||
type RecordProcessor interface {
|
type RecordProcessor interface {
|
||||||
Initialize(shardID string, checkpointer Checkpointer) error
|
Initialize(shardID string, checkpointer Checkpointer) error
|
||||||
ProcessRecords(records []Record) error
|
ProcessRecords(records []Record) error
|
||||||
|
ShutdownRequested() error
|
||||||
// Shutdown this call should block until it's safe to shutdown the process
|
// Shutdown this call should block until it's safe to shutdown the process
|
||||||
Shutdown(reason string) error
|
Shutdown(reason string) error
|
||||||
}
|
}
|
||||||
|
|
@ -237,7 +238,12 @@ func (kclp *KCLProcess) handleLine(line string) (string, error) {
|
||||||
kclp.ioHandler.writeError("Received shutdown action...")
|
kclp.ioHandler.writeError("Received shutdown action...")
|
||||||
|
|
||||||
// Shutdown should block until it's safe to shutdown the process
|
// Shutdown should block until it's safe to shutdown the process
|
||||||
|
if action.Action == "shutdownRequested" {
|
||||||
|
err = kclp.recordProcessor.ShutdownRequested()
|
||||||
|
} else {
|
||||||
err = kclp.recordProcessor.Shutdown(action.Reason)
|
err = kclp.recordProcessor.Shutdown(action.Reason)
|
||||||
|
}
|
||||||
|
|
||||||
if err != nil { // Log error and continue shutting down
|
if err != nil { // Log error and continue shutting down
|
||||||
kclp.ioHandler.writeError(fmt.Sprintf("ERR shutdown: %+#v", err))
|
kclp.ioHandler.writeError(fmt.Sprintf("ERR shutdown: %+#v", err))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue