2121
2222import org .apache .dolphinscheduler .dao .entity .PluginDefine ;
2323import org .apache .dolphinscheduler .dao .mapper .PluginDefineMapper ;
24+ import org .apache .dolphinscheduler .plugin .task .api .TaskPluginException ;
25+
26+ import java .util .Objects ;
27+
28+ import lombok .NonNull ;
29+ import lombok .extern .slf4j .Slf4j ;
2430
2531import org .springframework .beans .factory .annotation .Autowired ;
2632import org .springframework .stereotype .Component ;
2733
34+ @ Slf4j
2835@ Component
2936public class PluginDao {
3037
@@ -44,21 +51,36 @@ public boolean checkPluginDefineTableExist() {
4451 * add or update plugin define
4552 *
4653 * @param pluginDefine new pluginDefine
54+ * @return plugin id
4755 */
48- public int addOrUpdatePluginDefine (PluginDefine pluginDefine ) {
49- requireNonNull (pluginDefine , "pluginDefine is null" );
56+ public int addOrUpdatePluginDefine (@ NonNull PluginDefine pluginDefine ) {
5057 requireNonNull (pluginDefine .getPluginName (), "pluginName is null" );
5158 requireNonNull (pluginDefine .getPluginType (), "pluginType is null" );
5259
5360 PluginDefine currPluginDefine =
5461 pluginDefineMapper .queryByNameAndType (pluginDefine .getPluginName (), pluginDefine .getPluginType ());
5562 if (currPluginDefine == null ) {
56- if (pluginDefineMapper .insert (pluginDefine ) == 1 && pluginDefine .getId () != null ) {
57- return pluginDefine .getId ();
63+ try {
64+ if (pluginDefineMapper .insert (pluginDefine ) == 1 && pluginDefine .getId () != null ) {
65+ return pluginDefine .getId ();
66+ }
67+ throw new TaskPluginException (
68+ String .format ("Failed to insert plugin definition, pluginName: %s, pluginType: %s" ,
69+ pluginDefine .getPluginName (), pluginDefine .getPluginType ()));
70+ } catch (TaskPluginException ex ) {
71+ throw ex ;
72+ } catch (Exception ex ) {
73+ log .error ("Insert plugin definition error, there may already exist a plugin" , ex );
74+ currPluginDefine = pluginDefineMapper .queryByNameAndType (pluginDefine .getPluginName (),
75+ pluginDefine .getPluginType ());
76+ if (currPluginDefine == null ) {
77+ throw new TaskPluginException (
78+ String .format ("Failed to insert plugin definition, pluginName: %s, pluginType: %s" ,
79+ pluginDefine .getPluginName (), pluginDefine .getPluginType ()));
80+ }
5881 }
59- throw new IllegalStateException ("Failed to insert plugin definition" );
6082 }
61- if (!currPluginDefine .getPluginParams (). equals ( pluginDefine .getPluginParams ())) {
83+ if (!Objects . equals ( currPluginDefine .getPluginParams (), pluginDefine .getPluginParams ())) {
6284 currPluginDefine .setUpdateTime (pluginDefine .getUpdateTime ());
6385 currPluginDefine .setPluginParams (pluginDefine .getPluginParams ());
6486 pluginDefineMapper .updateById (currPluginDefine );
0 commit comments