Skip to content

Commit 583a46c

Browse files
committed
Fixed issue where tags were added for a table that did not exist.
1 parent 48a12d7 commit 583a46c

File tree

2 files changed

+16
-7
lines changed

2 files changed

+16
-7
lines changed

metacat-main/src/main/java/com/netflix/metacat/main/api/TagV1Resource.java

+15-5
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,16 @@
1313

1414
package com.netflix.metacat.main.api;
1515

16+
import com.facebook.presto.spi.SchemaTableName;
17+
import com.facebook.presto.spi.TableNotFoundException;
1618
import com.netflix.metacat.common.MetacatContext;
1719
import com.netflix.metacat.common.QualifiedName;
1820
import com.netflix.metacat.common.api.TagV1;
1921
import com.netflix.metacat.common.server.events.MetacatEventBus;
2022
import com.netflix.metacat.common.server.events.MetacatUpdateTablePostEvent;
2123
import com.netflix.metacat.common.usermetadata.TagService;
2224
import com.netflix.metacat.common.util.MetacatContextManager;
25+
import com.netflix.metacat.main.services.TableService;
2326

2427
import javax.inject.Inject;
2528
import java.util.List;
@@ -34,10 +37,12 @@
3437
public class TagV1Resource implements TagV1{
3538
TagService tagService;
3639
MetacatEventBus eventBus;
40+
TableService tableService;
3741
@Inject
38-
public TagV1Resource( MetacatEventBus eventBus, TagService tagService) {
42+
public TagV1Resource( MetacatEventBus eventBus, TagService tagService, TableService tableService) {
3943
this.tagService = tagService;
4044
this.eventBus = eventBus;
45+
this.tableService = tableService;
4146
}
4247

4348
@Override
@@ -72,9 +77,11 @@ public Set<String> setTableTags(
7277
Set<String> tags) {
7378
MetacatContext metacatContext = MetacatContextManager.getContext();
7479
QualifiedName name = qualifyName(() -> QualifiedName.ofTable(catalogName, databaseName, tableName));
75-
return requestWrapper("TagV1Resource.setTableTags" , () -> {
76-
Set<String> result = tagService.setTableTags( name, tags, true);
77-
80+
return requestWrapper( name, "TagV1Resource.setTableTags" , () -> {
81+
if( !tableService.exists(name)){
82+
throw new TableNotFoundException(new SchemaTableName( name.getDatabaseName(), name.getTableName()));
83+
}
84+
Set<String> result = tagService.setTableTags(name, tags, true);
7885
eventBus.post(new MetacatUpdateTablePostEvent(name, metacatContext));
7986
return result;
8087
});
@@ -89,7 +96,10 @@ public void removeTableTags(
8996
Set<String> tags) {
9097
MetacatContext metacatContext = MetacatContextManager.getContext();
9198
QualifiedName name = qualifyName(() -> QualifiedName.ofTable(catalogName, databaseName, tableName));
92-
requestWrapper("TagV1Resource.removeTableTags" , () -> {
99+
requestWrapper( name, "TagV1Resource.removeTableTags" , () -> {
100+
if( !tableService.exists(name)){
101+
throw new TableNotFoundException(new SchemaTableName( name.getDatabaseName(), name.getTableName()));
102+
}
93103
tagService.removeTableTags( name, deleteAll, tags, true);
94104

95105
eventBus.post(new MetacatUpdateTablePostEvent(name, metacatContext));

metacat-main/src/main/java/com/netflix/metacat/main/services/impl/TableServiceImpl.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -279,9 +279,8 @@ public void update(@Nonnull QualifiedName name, @Nonnull TableDto tableDto) {
279279

280280
//Ignore if the operation is not supported, so that we can at least go ahead and save the user metadata
281281
try {
282-
TypeManager typeManager = metadataManager.getTypeManager();
283282
log.info("Updating table {}", name);
284-
metadataManager.alterTable(session, prestoConverters.fromTableDto(name, tableDto, typeManager));
283+
metadataManager.alterTable(session, prestoConverters.fromTableDto(name, tableDto, metadataManager.getTypeManager()));
285284
} catch(PrestoException e){
286285
if(!NOT_SUPPORTED.toErrorCode().equals(e.getErrorCode())){
287286
throw e;

0 commit comments

Comments
 (0)