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

[#5902] feat: Add tag failure event to Gravitino server #5944

Merged
merged 13 commits into from
Jan 7, 2025
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,25 @@
package org.apache.gravitino.listener;

import java.util.Map;

import org.apache.gravitino.MetadataObject;
import org.apache.gravitino.exceptions.NoSuchTagException;
import org.apache.gravitino.listener.api.event.AlterTagFailureEvent;
import org.apache.gravitino.listener.api.event.AssociateTagsForMetadataObjectFailureEvent;
import org.apache.gravitino.listener.api.event.CreateTagFailureEvent;
import org.apache.gravitino.listener.api.event.DeleteTagFailureEvent;
import org.apache.gravitino.listener.api.event.GetTagFailureEvent;
import org.apache.gravitino.listener.api.event.GetTagForMetadataObjectFailureEvent;
import org.apache.gravitino.listener.api.event.ListMetadataObjectsForTagFailureEvent;
import org.apache.gravitino.listener.api.event.ListTagFailureEvent;
import org.apache.gravitino.listener.api.event.ListTagsForMetadataObjectFailureEvent;
import org.apache.gravitino.listener.api.event.ListTagsInfoFailureEvent;
import org.apache.gravitino.listener.api.event.ListTagsInfoForMetadataObjectFailureEvent;
import org.apache.gravitino.listener.api.info.MetalakeInfo;
import org.apache.gravitino.tag.Tag;
import org.apache.gravitino.tag.TagChange;
import org.apache.gravitino.tag.TagDispatcher;
import org.apache.gravitino.utils.PrincipalUtils;

FANNG1 marked this conversation as resolved.
Show resolved Hide resolved
/**
* {@code TagEventDispatcher} is a decorator for {@link TagDispatcher} that not only delegates tag
Expand All @@ -50,7 +64,7 @@ public String[] listTags(String metalake) {
// TODO: listTagsEvent
return dispatcher.listTags(metalake);
} catch (Exception e) {
// TODO: listTagFailureEvent
eventBus.dispatchEvent(new ListTagFailureEvent(PrincipalUtils.getCurrentUserName(), metalake, e));
throw e;
}
}
Expand All @@ -62,7 +76,7 @@ public Tag[] listTagsInfo(String metalake) {
// TODO: listTagsInfoEvent
return dispatcher.listTagsInfo(metalake);
} catch (Exception e) {
// TODO: listTagsInfoFailureEvent
eventBus.dispatchEvent(new ListTagsInfoFailureEvent(PrincipalUtils.getCurrentUserName(), metalake, e));
throw e;
}
}
Expand All @@ -73,21 +87,22 @@ public Tag getTag(String metalake, String name) throws NoSuchTagException {
try {
// TODO: getTagEvent
return dispatcher.getTag(metalake, name);
} catch (NoSuchTagException e) {
// TODO: getTagFailureEvent
} catch (Exception e) {
eventBus.dispatchEvent(new GetTagFailureEvent(PrincipalUtils.getCurrentUserName(), metalake, name, e));
throw e;
}
}

@Override
public Tag createTag(
String metalake, String name, String comment, Map<String, String> properties) {
MetalakeInfo metalakeInfo = new MetalakeInfo(name, comment, properties, null);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should create a TagInfo not MetalakeInfo here

// TODO: createTagPreEvent
try {
// TODO: createTagEvent
return dispatcher.createTag(metalake, name, comment, properties);
} catch (Exception e) {
// TODO: createTagFailureEvent
eventBus.dispatchEvent(new CreateTagFailureEvent(PrincipalUtils.getCurrentUserName(), metalake, metalakeInfo, e));
throw e;
}
}
Expand All @@ -99,7 +114,7 @@ public Tag alterTag(String metalake, String name, TagChange... changes) {
// TODO: alterTagEvent
return dispatcher.alterTag(metalake, name, changes);
} catch (Exception e) {
// TODO: alterTagFailureEvent
eventBus.dispatchEvent(new AlterTagFailureEvent(PrincipalUtils.getCurrentUserName(), metalake, name, changes, e));
throw e;
}
}
Expand All @@ -111,7 +126,7 @@ public boolean deleteTag(String metalake, String name) {
// TODO: deleteTagEvent
return dispatcher.deleteTag(metalake, name);
} catch (Exception e) {
// TODO: deleteTagFailureEvent
eventBus.dispatchEvent(new DeleteTagFailureEvent(PrincipalUtils.getCurrentUserName(), metalake, name, e));
throw e;
}
}
Expand All @@ -123,7 +138,7 @@ public MetadataObject[] listMetadataObjectsForTag(String metalake, String name)
// TODO: listMetadataObjectsForTagEvent
return dispatcher.listMetadataObjectsForTag(metalake, name);
} catch (Exception e) {
// TODO: listMetadataObjectsForTagFailureEvent
eventBus.dispatchEvent(new ListMetadataObjectsForTagFailureEvent(PrincipalUtils.getCurrentUserName(), metalake, name, e));
throw e;
}
}
Expand All @@ -135,7 +150,7 @@ public String[] listTagsForMetadataObject(String metalake, MetadataObject metada
// TODO: listTagsForMetadataObjectEvent
return dispatcher.listTagsForMetadataObject(metalake, metadataObject);
} catch (Exception e) {
// TODO: listTagsForMetadataObjectFailureEvent
eventBus.dispatchEvent(new ListTagsForMetadataObjectFailureEvent(PrincipalUtils.getCurrentUserName(), metalake, metadataObject, e));
throw e;
}
}
Expand All @@ -147,7 +162,7 @@ public Tag[] listTagsInfoForMetadataObject(String metalake, MetadataObject metad
// TODO: listTagsInfoForMetadataObjectEvent
return dispatcher.listTagsInfoForMetadataObject(metalake, metadataObject);
} catch (Exception e) {
// TODO: listTagsInfoForMetadataObjectFailureEvent
eventBus.dispatchEvent(new ListTagsInfoForMetadataObjectFailureEvent(PrincipalUtils.getCurrentUserName(), metalake, metadataObject, e));
throw e;
}
}
Expand All @@ -161,7 +176,7 @@ public String[] associateTagsForMetadataObject(
return dispatcher.associateTagsForMetadataObject(
metalake, metadataObject, tagsToAdd, tagsToRemove);
} catch (Exception e) {
// TODO: associateTagsForMetadataObjectFailureEvent
eventBus.dispatchEvent(new AssociateTagsForMetadataObjectFailureEvent(PrincipalUtils.getCurrentUserName(), metalake, metadataObject, tagsToAdd, tagsToRemove, e));
throw e;
}
}
Expand All @@ -173,7 +188,7 @@ public Tag getTagForMetadataObject(String metalake, MetadataObject metadataObjec
// TODO: getTagForMetadataObjectEvent
return dispatcher.getTagForMetadataObject(metalake, metadataObject, name);
} catch (Exception e) {
// TODO: getTagForMetadataObjectFailureEvent
eventBus.dispatchEvent(new GetTagForMetadataObjectFailureEvent(PrincipalUtils.getCurrentUserName(), metalake, metadataObject, name, e));
throw e;
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package org.apache.gravitino.listener.api.event;

import org.apache.gravitino.tag.TagChange;

FANNG1 marked this conversation as resolved.
Show resolved Hide resolved
public class AlterTagFailureEvent extends TagFailureEvent {
private final String metalake;
private final String name;
private final TagChange[] changes;
public AlterTagFailureEvent(String user, String metalake, String name, TagChange[] changes, Exception exception) {
super(user, exception);
this.name = name;
this.metalake = metalake;
this.changes = changes;
}

public String name() {
return name;
}

public TagChange[] changes() {
return changes;
}

public String metalake() {
return metalake;
}

@Override
public OperationType operationType() {
return OperationType.ALTER_TAG;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package org.apache.gravitino.listener.api.event;

import org.apache.gravitino.MetadataObject;

public class AssociateTagsForMetadataObjectFailureEvent extends TagFailureEvent {
private final String metalake;
private final MetadataObject metadataObject;
private final String[] tagsToAdd;
private final String[] tagsToRemove;
public AssociateTagsForMetadataObjectFailureEvent(String user, String metalake, MetadataObject metadataObject, String[] tagsToAdd, String[] tagsToRemove, Exception exception) {
super(user, exception);
this.metalake = metalake;
this.metadataObject = metadataObject;
this.tagsToAdd = tagsToAdd;
this.tagsToRemove = tagsToRemove;
}

public String metalake() {
return metalake;
}

public MetadataObject metadataObject() {
return metadataObject;
}

public String[] tagsToAdd() {
return tagsToAdd;
}

public String[] tagsToRemove() {
return tagsToRemove;
}

@Override
public OperationType operationType() {
return OperationType.ASSOCIATE_TAGS_FOR_METADATA_OBJECT;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package org.apache.gravitino.listener.api.event;

import org.apache.gravitino.listener.api.info.MetalakeInfo;

public class CreateTagFailureEvent extends TagFailureEvent {
private final String metalake;
private final MetalakeInfo metalakeInfo;
public CreateTagFailureEvent(String user, String metalake, MetalakeInfo metalakeInfo, Exception exception) {
super(user, exception);
this.metalake = metalake;
this.metalakeInfo = metalakeInfo;
}

public MetalakeInfo metalakeInfo() {
return metalakeInfo;
}

public String metalake() {
return metalake;
}

@Override
public OperationType operationType() {
return OperationType.CREATE_TAG;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package org.apache.gravitino.listener.api.event;


public class DeleteTagFailureEvent extends TagFailureEvent {
private final String metalake;
private final String name;
public DeleteTagFailureEvent(String user, String metalake, String name, Exception exception) {
super(user, exception);
this.metalake = metalake;
this.name = name;
}

public String metalake() {
return metalake;
}

public String name() {
return name;
}

@Override
public OperationType operationType() {
return OperationType.DELETE_TAG;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package org.apache.gravitino.listener.api.event;

public class GetTagFailureEvent extends TagFailureEvent {
private final String metalake;
private final String name;
public GetTagFailureEvent(String user, String metalake, String name, Exception exception) {
super(user, exception);
this.name = name;
this.metalake = metalake;
}

public String metalake() {
return metalake;
}

public String name() {
return name;
}

@Override
public OperationType operationType() {
return OperationType.GET_TAG;
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package org.apache.gravitino.listener.api.event;

import org.apache.gravitino.MetadataObject;

public class GetTagForMetadataObjectFailureEvent extends TagFailureEvent {
private final String metalake;
private final MetadataObject metadataObject;
private final String name;
public GetTagForMetadataObjectFailureEvent(String user, String metalake, MetadataObject metadataObject, String name, Exception exception) {
super(user, exception);
this.metalake = metalake;
this.metadataObject = metadataObject;
this.name = name;
}

public String metalake() {
return metalake;
}

public MetadataObject metadataObject() {
return metadataObject;
}

public String name() {
return name;
}

@Override
public OperationType operationType() {
return OperationType.GET_TAG_FOR_METADATA_OBJECT;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package org.apache.gravitino.listener.api.event;

public class ListMetadataObjectsForTagFailureEvent extends TagFailureEvent {
private final String metalake;
private final String name;
public ListMetadataObjectsForTagFailureEvent(String user, String metalake, String name, Exception exception) {
super(user, exception);
this.metalake = metalake;
this.name = name;
}

public String metalake() {
return metalake;
}

public String name() {
return name;
}

@Override
public OperationType operationType() {
return OperationType.LIST_METADATA_OBJECTS_FOR_TAG;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package org.apache.gravitino.listener.api.event;


public class ListTagFailureEvent extends TagFailureEvent {
FANNG1 marked this conversation as resolved.
Show resolved Hide resolved
private final String metalake;
public ListTagFailureEvent(String user, String metalake, Exception exception) {
super(user, exception);
this.metalake = metalake;
}

public String metalake() {
return metalake;
}

@Override
public OperationType operationType() {
return OperationType.LIST_TAG;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package org.apache.gravitino.listener.api.event;

import org.apache.gravitino.MetadataObject;

public class ListTagsForMetadataObjectFailureEvent extends TagFailureEvent {
private final String metalake;
private final MetadataObject metadataObject;
public ListTagsForMetadataObjectFailureEvent(String user, String metalake, MetadataObject metadataObject, Exception exception) {
super(user, exception);
this.metalake = metalake;
this.metadataObject = metadataObject;
}

public String metalake() {
return metalake;
}

public MetadataObject metadataObject() {
return metadataObject;
}

@Override
public OperationType operationType() {
return OperationType.LIST_TAGS_FOR_METADATA_OBJECT;
}
}
Loading