Documentation ¶
Overview ¶
Copyright © 2020 Marvin
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright © 2020 Marvin ¶
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright © 2020 Marvin ¶
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright © 2020 Marvin ¶
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright © 2020 Marvin ¶
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright © 2020 Marvin ¶
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright © 2020 Marvin ¶
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright © 2020 Marvin ¶
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright © 2020 Marvin ¶
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright © 2020 Marvin ¶
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright © 2020 Marvin ¶
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright © 2020 Marvin ¶
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright © 2020 Marvin ¶
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright © 2020 Marvin ¶
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Index ¶
- func AddCronTask(ctx context.Context, c *cron.Cron, cli *clientv3.Client, ...) (*pb.OperateTaskResponse, error)
- func ClearCronTask(ctx context.Context, c *cron.Cron, cli *clientv3.Client, ...) (*pb.OperateTaskResponse, error)
- func Counts(ctx context.Context, serverAddr, taskName, schema string, table string, ...) error
- func Decrypt(ctx context.Context, serverAddr, taskName, schema string, table string, ...) error
- func DeleteAssessMigrateTask(ctx context.Context, req *pb.DeleteAssessMigrateTaskRequest) (string, error)
- func DeleteCdcConsumeTask(ctx context.Context, req *pb.DeleteCdcConsumeTaskRequest) (string, error)
- func DeleteCsvMigrateTask(ctx context.Context, req *pb.DeleteCsvMigrateTaskRequest) (string, error)
- func DeleteDataCompareTask(ctx context.Context, req *pb.DeleteDataCompareTaskRequest) (string, error)
- func DeleteDataScanTask(ctx context.Context, req *pb.DeleteDataScanTaskRequest) (string, error)
- func DeleteDatabase(etcdClient *clientv3.Client, defaultDatabaseDBMSKey string) error
- func DeleteDatasource(ctx context.Context, req *pb.DeleteDatasourceRequest) error
- func DeleteSchemaRouteRule(ctx context.Context, taskName []string) error
- func DeleteSqlMigrateRule(ctx context.Context, taskName []string) error
- func DeleteSqlMigrateTask(ctx context.Context, req *pb.DeleteSqlMigrateTaskRequest) (string, error)
- func DeleteStmtMigrateTask(ctx context.Context, req *pb.DeleteStmtMigrateTaskRequest) (string, error)
- func DeleteStructCompareTask(ctx context.Context, req *pb.DeleteStructCompareTaskRequest) (string, error)
- func DeleteStructMigrateTask(ctx context.Context, req *pb.DeleteStructMigrateTaskRequest) (string, error)
- func DeleteTask(ctx context.Context, cli *clientv3.Client, req *pb.OperateTaskRequest) (*pb.OperateTaskResponse, error)
- func GenAssessMigrateTask(ctx context.Context, serverAddr, taskName, outputDir string) error
- func GenDataCompareTask(ctx context.Context, ...) error
- func GenDataScanTask(ctx context.Context, serverAddr, taskName, outputDir string) error
- func GenStructCompareTask(ctx context.Context, serverAddr, taskName, outputDir string) error
- func GenStructMigrateTask(ctx context.Context, serverAddr, taskName, outputDir string) error
- func PromptAssessMigrateTask(ctx context.Context, taskName, serverAddr string) error
- func PromptCdcConsumeTask(ctx context.Context, taskName, serverAddr string) error
- func PromptCsvMigrateTask(ctx context.Context, taskName, serverAddr string) error
- func PromptDataCompareTask(ctx context.Context, taskName, serverAddr string) error
- func PromptDataScanTask(ctx context.Context, taskName, serverAddr string) error
- func PromptDatabase(ctx context.Context, serverAddr string) error
- func PromptDatasource(ctx context.Context, serverAddr string, datasources []string) error
- func PromptSqlMigrateTask(ctx context.Context, taskName, serverAddr string) error
- func PromptStmtMigrateTask(ctx context.Context, taskName, serverAddr string) error
- func PromptStructCompareTask(ctx context.Context, taskName, serverAddr string) error
- func PromptStructMigrateTask(ctx context.Context, taskName, serverAddr string) error
- func RewriteCdcConsumeTask(ctx context.Context, ...) error
- func ShowAssessMigrateTask(ctx context.Context, req *pb.ShowAssessMigrateTaskRequest) (string, error)
- func ShowCdcConsumeTask(ctx context.Context, req *pb.ShowCdcConsumeTaskRequest) (string, error)
- func ShowCsvMigrateTask(ctx context.Context, req *pb.ShowCsvMigrateTaskRequest) (string, error)
- func ShowDataCompareTask(ctx context.Context, req *pb.ShowDataCompareTaskRequest) (string, error)
- func ShowDataScanTask(ctx context.Context, req *pb.ShowDataScanTaskRequest) (string, error)
- func ShowDatabase(etcdClient *clientv3.Client, defaultDatabaseDBMSKey string) (string, error)
- func ShowDatasource(ctx context.Context, req *pb.ShowDatasourceRequest) (string, error)
- func ShowSchemaRouteRule(ctx context.Context, taskName string) (*pb.SchemaRouteRule, []*pb.DataMigrateRule, []*pb.DataCompareRule, error)
- func ShowSqlMigrateRule(ctx context.Context, taskName string) ([]*pb.SqlMigrateRule, error)
- func ShowSqlMigrateTask(ctx context.Context, req *pb.ShowSqlMigrateTaskRequest) (string, error)
- func ShowStmtMigrateTask(ctx context.Context, req *pb.ShowStmtMigrateTaskRequest) (string, error)
- func ShowStructCompareTask(ctx context.Context, req *pb.ShowStructCompareTaskRequest) (string, error)
- func ShowStructMigrateTask(ctx context.Context, req *pb.ShowStructMigrateTaskRequest) (string, error)
- func StartAssessMigrateTask(ctx context.Context, taskName, workerAddr string) error
- func StartCdcConsumeTask(ctx context.Context, taskName, workerAddr string) error
- func StartCsvMigrateTask(ctx context.Context, taskName, workerAddr string) error
- func StartDataCompareTask(ctx context.Context, taskName, workerAddr string) error
- func StartDataScanTask(ctx context.Context, taskName, workerAddr string) error
- func StartSqlMigrateTask(ctx context.Context, taskName, workerAddr string) error
- func StartStmtMigrateTask(ctx context.Context, taskName, workerAddr string) error
- func StartStructCompareTask(ctx context.Context, taskName, workerAddr string) error
- func StartStructMigrateTask(ctx context.Context, taskName, workerAddr string) error
- func StartTask(ctx context.Context, cli *clientv3.Client, discoveries *etcdutil.Discovery, ...) (*pb.OperateTaskResponse, error)
- func StopAssessMigrateTask(ctx context.Context, taskName string) error
- func StopCdcConsumeTask(ctx context.Context, taskName string) error
- func StopCsvMigrateTask(ctx context.Context, taskName string) error
- func StopDataCompareTask(ctx context.Context, taskName string) error
- func StopDataScanTask(ctx context.Context, taskName string) error
- func StopSqlMigrateTask(ctx context.Context, taskName string) error
- func StopStmtMigrateTask(ctx context.Context, taskName string) error
- func StopStructCompareTask(ctx context.Context, taskName string) error
- func StopStructMigrateTask(ctx context.Context, taskName string) error
- func StopTask(ctx context.Context, cli *clientv3.Client, req *pb.OperateTaskRequest) (*pb.OperateTaskResponse, error)
- func UpsertAssessMigrateTask(ctx context.Context, req *pb.UpsertAssessMigrateTaskRequest) (string, error)
- func UpsertCdcConsumeTask(ctx context.Context, req *pb.UpsertCdcConsumeTaskRequest) (string, error)
- func UpsertCsvMigrateTask(ctx context.Context, req *pb.UpsertCsvMigrateTaskRequest) (string, error)
- func UpsertDataCompareTask(ctx context.Context, req *pb.UpsertDataCompareTaskRequest) (string, error)
- func UpsertDataScanTask(ctx context.Context, req *pb.UpsertDataScanTaskRequest) (string, error)
- func UpsertDatabase(etcdClient *clientv3.Client, defaultDatabaseDBMSKey string, ...) (string, error)
- func UpsertDatasource(ctx context.Context, req *pb.UpsertDatasourceRequest) (string, error)
- func UpsertSchemaRouteRule(ctx context.Context, taskName, datasourceNameS string, ...) error
- func UpsertSqlMigrateRule(ctx context.Context, taskName string, caseFieldRule *pb.CaseFieldRule, ...) error
- func UpsertSqlMigrateTask(ctx context.Context, req *pb.UpsertSqlMigrateTaskRequest) (string, error)
- func UpsertStmtMigrateTask(ctx context.Context, req *pb.UpsertStmtMigrateTaskRequest) (string, error)
- func UpsertStructCompareTask(ctx context.Context, req *pb.UpsertStructCompareTaskRequest) (string, error)
- func UpsertStructMigrateTask(ctx context.Context, req *pb.UpsertStructMigrateTaskRequest) (string, error)
- type CompareCounts
- type CompareDecrypt
- type CompareDetail
- type Cronjob
- type Crontab
- type Express
- type List
- type MigrateCounts
- type MigrateDecrypt
- type MigrateDetail
- type ScanCounts
- type ScanDecrypt
- type ScanDetail
- type Status
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AddCronTask ¶
func AddCronTask(ctx context.Context, c *cron.Cron, cli *clientv3.Client, req *pb.OperateTaskRequest, job cron.Job) (*pb.OperateTaskResponse, error)
func ClearCronTask ¶
func ClearCronTask(ctx context.Context, c *cron.Cron, cli *clientv3.Client, req *pb.OperateTaskRequest) (*pb.OperateTaskResponse, error)
func DeleteAssessMigrateTask ¶
func DeleteCdcConsumeTask ¶ added in v0.0.17
func DeleteCsvMigrateTask ¶
func DeleteDataCompareTask ¶
func DeleteDataScanTask ¶
func DeleteDatabase ¶
func DeleteDatasource ¶
func DeleteDatasource(ctx context.Context, req *pb.DeleteDatasourceRequest) error
func DeleteSchemaRouteRule ¶
func DeleteSqlMigrateTask ¶
func DeleteStmtMigrateTask ¶
func DeleteStructCompareTask ¶
func DeleteStructMigrateTask ¶
func DeleteTask ¶
func DeleteTask(ctx context.Context, cli *clientv3.Client, req *pb.OperateTaskRequest) (*pb.OperateTaskResponse, error)
func GenAssessMigrateTask ¶
func GenDataCompareTask ¶
func GenDataScanTask ¶
func GenStructCompareTask ¶
func GenStructMigrateTask ¶
func PromptAssessMigrateTask ¶ added in v0.0.5
func PromptCdcConsumeTask ¶ added in v0.0.17
func PromptCsvMigrateTask ¶ added in v0.0.5
func PromptDataCompareTask ¶ added in v0.0.5
func PromptDataScanTask ¶ added in v0.0.5
func PromptDatabase ¶ added in v0.0.7
func PromptDatasource ¶ added in v0.0.7
func PromptSqlMigrateTask ¶ added in v0.0.5
func PromptStmtMigrateTask ¶ added in v0.0.5
func PromptStructCompareTask ¶ added in v0.0.5
func PromptStructMigrateTask ¶ added in v0.0.5
func RewriteCdcConsumeTask ¶ added in v0.0.17
func ShowAssessMigrateTask ¶
func ShowCdcConsumeTask ¶ added in v0.0.17
func ShowCsvMigrateTask ¶
func ShowDataCompareTask ¶
func ShowDataScanTask ¶
func ShowDatabase ¶
func ShowDatasource ¶
func ShowSchemaRouteRule ¶
func ShowSchemaRouteRule(ctx context.Context, taskName string) (*pb.SchemaRouteRule, []*pb.DataMigrateRule, []*pb.DataCompareRule, error)
func ShowSqlMigrateRule ¶
func ShowSqlMigrateTask ¶
func ShowStmtMigrateTask ¶
func ShowStructCompareTask ¶
func ShowStructMigrateTask ¶
func StartAssessMigrateTask ¶
func StartCdcConsumeTask ¶ added in v0.0.17
func StartCsvMigrateTask ¶
func StartDataCompareTask ¶
func StartDataScanTask ¶
func StartSqlMigrateTask ¶
func StartStmtMigrateTask ¶
func StartStructCompareTask ¶
func StartStructMigrateTask ¶
func StopCdcConsumeTask ¶ added in v0.0.17
func StopTask ¶
func StopTask(ctx context.Context, cli *clientv3.Client, req *pb.OperateTaskRequest) (*pb.OperateTaskResponse, error)
func UpsertAssessMigrateTask ¶
func UpsertCdcConsumeTask ¶ added in v0.0.17
func UpsertCsvMigrateTask ¶
func UpsertDataCompareTask ¶
func UpsertDataScanTask ¶
func UpsertDatabase ¶
func UpsertDatasource ¶
func UpsertSchemaRouteRule ¶
func UpsertSchemaRouteRule(ctx context.Context, taskName, datasourceNameS string, caseFieldRule *pb.CaseFieldRule, schemaRouteRule *pb.SchemaRouteRule, dataMigrateRules []*pb.DataMigrateRule, dataCompareRules []*pb.DataCompareRule) error
func UpsertSqlMigrateRule ¶
func UpsertSqlMigrateRule(ctx context.Context, taskName string, caseFieldRule *pb.CaseFieldRule, sqlRouteRule []*pb.SqlMigrateRule) error
func UpsertSqlMigrateTask ¶
func UpsertStmtMigrateTask ¶
func UpsertStructCompareTask ¶
func UpsertStructMigrateTask ¶
Types ¶
type CompareCounts ¶ added in v0.0.8
type CompareCounts struct { SchemaNameS string `json:"schemaNameS"` TableNameS string `json:"tableNameS"` ChunkTotals int64 `json:"chunkTotals"` CompareDetails []CompareDetail `json:"compareDetails"` }
type CompareDecrypt ¶ added in v0.0.8
type CompareDecrypt struct { ChunkID string `json:"chunkID"` SchemaNameS string `json:"schemaNameS"` TableNameS string `json:"tableNameS"` SchemaNameT string `json:"schemaNameT"` TableNameT string `json:"tableNameT"` ChunkDetailS string `json:"chunkDetailS"` ChunkArgsS string `json:"chunkArgsS"` ChunkDetailT string `json:"chunkDetailT"` ChunkArgsT string `json:"chunkArgsT"` TaskStatus string `json:"taskStatus"` }
type CompareDetail ¶ added in v0.0.8
type CompareDetail struct { ChunkID string `json:"chunkID"` SchemaNameS string `json:"schemaNameS"` TableNameS string `json:"tableNameS"` SchemaNameT string `json:"schemaNameT"` TableNameT string `json:"tableNameT"` ChunkCounts int64 `json:"chunkCounts"` ChunkDetailS string `json:"chunkDetailS"` ChunkArgsS string `json:"chunkArgsS"` ChunkDetailT string `json:"chunkDetailT"` ChunkArgsT string `json:"chunkArgsT"` TaskStatus string `json:"taskStatus"` }
type Crontab ¶
type Crontab struct {
// contains filtered or unexported fields
}
func NewServiceCrontab ¶
type Express ¶ added in v0.0.1
Express used to the store key-value information
func DisplayCronTask ¶ added in v0.0.1
type List ¶ added in v0.0.5
type List struct { TaskName string `json:"taskName"` TaskFlow string `json:"taskFlow"` TaskMode string `json:"taskMode"` CaseFieldRuleS string `json:"caseFieldRuleS"` CaseFieldRuleT string `json:"caseFieldRuleT"` DatasourceNameS string `json:"datasourceNameS"` DatasourceNameT string `json:"datasourceNameT"` TaskStatus string `json:"taskStatus"` WorkerAddr string `json:"workerAddr"` }
type MigrateCounts ¶ added in v0.0.8
type MigrateCounts struct { SchemaNameS string `json:"schemaNameS"` TableNameS string `json:"tableNameS"` ChunkTotals int64 `json:"chunkTotals"` MigrateDetails []MigrateDetail `json:"migrateDetails"` }
type MigrateDecrypt ¶ added in v0.0.8
type MigrateDecrypt struct { ChunkID string `json:"chunkID"` SchemaNameS string `json:"schemaNameS"` TableNameS string `json:"tableNameS"` SchemaNameT string `json:"schemaNameT"` TableNameT string `json:"tableNameT"` ChunkDetailS string `json:"chunkDetailS"` ChunkArgsS string `json:"chunkArgsS"` ColumnDetailS string `json:"columnDetailS"` ColumnDetailT string `json:"columnDetailT"` TaskStatus string `json:"taskStatus"` }
type MigrateDetail ¶ added in v0.0.8
type MigrateDetail struct { ChunkID string `json:"chunkID"` SchemaNameS string `json:"schemaNameS"` TableNameS string `json:"tableNameS"` SchemaNameT string `json:"schemaNameT"` TableNameT string `json:"tableNameT"` ChunkCounts int64 `json:"chunkCounts"` ChunkDetailS string `json:"chunkDetailS"` ChunkArgsS string `json:"chunkArgsS"` ColumnDetailS string `json:"columnDetailS"` ColumnDetailT string `json:"columnDetailT"` TaskStatus string `json:"taskStatus"` }
type ScanCounts ¶ added in v0.0.8
type ScanCounts struct { SchemaNameS string `json:"schemaNameS"` TableNameS string `json:"tableNameS"` ChunkTotals int64 `json:"chunkTotals"` ScanDetail []ScanDetail `json:"scanDetail"` }
type ScanDecrypt ¶ added in v0.0.8
type ScanDecrypt struct { ChunkID string `json:"chunkID"` SchemaNameS string `json:"schemaNameS"` TableNameS string `json:"tableNameS"` ColumnDetailS string `json:"columnDetailS"` ChunkDetailS string `json:"chunkDetailS"` ChunkArgsS string `json:"chunkArgsS"` Samplerate string `json:"samplerate"` TaskStatus string `json:"taskStatus"` }
type ScanDetail ¶ added in v0.0.8
type ScanDetail struct { ChunkID string `json:"chunkID"` SchemaNameS string `json:"schemaNameS"` TableNameS string `json:"tableNameS"` ChunkCounts int64 `json:"chunkCounts"` ColumnDetailS string `json:"columnDetailS"` ChunkDetailS string `json:"chunkDetailS"` ChunkArgsS string `json:"chunkArgsS"` Samplerate string `json:"samplerate"` TaskStatus string `json:"taskStatus"` }
type Status ¶ added in v0.0.5
type Status struct { TaskName string `json:"taskName"` TaskFlow string `json:"taskFlow"` TaskMode string `json:"taskMode"` DatasourceNameS string `json:"datasourceNameS"` DatasourceNameT string `json:"datasourceNameT"` TaskStatus string `json:"taskStatus"` WorkerAddr string `json:"workerAddr"` LogDetail []string `json:"logDetail"` }