[ 
https://issues.apache.org/jira/browse/ACCUMULO-3147?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14192479#comment-14192479
 ] 

Christopher Tubbs commented on ACCUMULO-3147:
---------------------------------------------

bq. Yeah, I wanted to focus less on the specifics of where the table came from 
and just make it dynamic. I don't want this to be an issue if we make a 
replication namespace and suddenly decide we want the replication table over 
the instead of the accumulo namespace (for example).

Describing it this way seems like an argument for making it external to 
Accumulo, as an add-on, not as. In my view, it's either a system-managed table 
or it's a utility table declared by some external, client system. As is, it 
seems like a hybrid.

bq. I will leave you to that to expose all of those scary internals out the 
clients . I'm not convinced you can actually do this and properly track the 
replication status; however, you are more the free to investigate it yourself.

I have no interest in even attempting to do that. My point was that this seems 
like it would have been a preferable implementation, because as is, replication 
seems to be a hybird user-system/baked-in system, and bloats Accumulo's 
internals. I'm not objecting to the point where I think we should revert (not 
seriously considering that anyway), but I do think it needs a lot more 
polishing before it can be released.

bq. How is it arbitrarily doing anything? There are a number of things that are 
always checked....

The very idea of dynamic checking of the table's existence, and proper 
configuration, reveals the fact that the table is expected to be a user-managed 
table, not a system-managed one. This is the problem I have with the current 
implementation. It's treated as a user-managed table, but created at runtime as 
needed by the master, utilized by the system user for internal system features. 
It's tested as a user-table, also, being created by the root user in most 
tests, and deleted as needed for testing. Very little about how it's utilized 
reveals itself to be part of an internal system table. System tables are always 
present, have well-defined access permissions, exist in a non-conflicting 
system-managed namespace, have well-known table IDs, and have strict tests to 
ensure they behave this way. User tables can be created on the fly, exist 
anywhere except the system namespace, can be deleted by users, and have 
permissions that are appropriate to the external user/system that utilizes 
them. The trace table is a slight exception, because it existed before 
namespaces and somewhat blurs the boundaries, but even it is primarily treated 
as a user-controlled table by an external service, since the external tracer 
service creates the table, and uses credentials to do so, from a stored 
configuration file. But, the replication table is not created by an external 
service. It's created by the master, as needed, can conflict with user table 
names/config, which can block replication from working, does not have a fixed 
tableID, and is part of an internal feature.

Don't get me wrong... I don't think this is unfixable (indeed, I'm trying to 
fix some of it). I think it just needs some more polishing before release. But, 
it's what I meant by "arbitrarily".

> Replication table should be user-controlled or live in accumulo namespace
> -------------------------------------------------------------------------
>
>                 Key: ACCUMULO-3147
>                 URL: https://issues.apache.org/jira/browse/ACCUMULO-3147
>             Project: Accumulo
>          Issue Type: Sub-task
>          Components: replication
>            Reporter: Christopher Tubbs
>            Assignee: Christopher Tubbs
>            Priority: Blocker
>             Fix For: 1.7.0
>
>
> At present, it looks like the replication table is managed by/written to by 
> the system user, yet the table lives in the default namespace, which is where 
> user tables live.
> This appears to violate the namespace model of segregating system tables from 
> user tables.
> There's a few options for resolution:
> # Move the replication table into the reserved accumulo system namespace 
> (there's some complication with this, because the system namespace is 
> currently static, and the replication table may be created at any time; 
> additionally, if users are expected to interact with this table... and I'm 
> not sure if they are at all, the system namespace is probably not 
> appropriate).
> # Create an additional reserved system namespace for replication (my least 
> preferred option).
> # Use user credentials to manage/write to this table, rather than the system 
> user (this is what the tracer/trace table does, and this is my preferred 
> solution.)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to