ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stanislav Lukyanov <stanlukya...@gmail.com>
Subject RE: Handling slashes in cache names
Date Thu, 28 Dec 2017 17:22:31 GMT
Hi all ,

I’ve implemented an approach of encoding unsafe characters in the cache names for persistent
storage directories. You can find it at https://github.com/gridgain/apache-ignite/tree/ignite-7264.
How it works now is: 1) all characters outside of the [a-zA-Z0-9_-] class are replaced with
their hex value (seems to be the easiest way); 2) a hash of the cache name is added at the
end of the name to avoid case-insensitive collisions.
There is still a tiny chance of hitting two cache names that are equal ignoring case which
also have the same hash, but that’s really unlikely.

It seems that there are no complications with this approach.
The cache name to directory mapping is like
  mycache -> cache-mycache-f19fd83d
  my/cool/cache -> cache-my2fcool2fcache
  my!@#$%^&()cache -> cache-my21402324255e262829cache-84ba3e99

Turns out the persistence is not the only place that doesn’t like special symbols in cache
names – I also got an exception from MBean registration when creating a cache with ‘*’
or ‘?’. Filed https://issues.apache.org/jira/browse/IGNITE-7334 for that.

Please let me know if you have any comments.

Thanks,
Stan

From: Stanislav Lukyanov
Sent: 25 декабря 2017 г. 18:09
To: dev@ignite.apache.org 
Subject: Handling slashes in cache names

Hi all,

I’m looking into https://issues.apache.org/jira/browse/IGNITE-7264, and I need some guidance
on what’s the best way to approach it.

The problem is that cache names are not restricted, but if persistence is enabled the cache
needs to have a corresponding directory on the file system (“cache-…”) which can’t
be created if the cache name contains certain characters (or a reserved system name).

A straightforward approach would be to check if a cache name is allowed on the local system
(e.g. via `Paths.get(name)`) and fail to create cache if it isn’t, but I’m a bit concerned
with the consistency of the behavior (the same cache name be allowed on one system and not
on another).
I think a better way would be to replace special characters (say, all non-alphanumeric characters)
with underscores in file names (not changing the cache configuration). Would this be OK? Are
there any risks I’m not considering?

WDYT?

Thanks,
Stan


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message