Hi Jody, Gabriel, Kevin

I have been  porting all modules to use the resources system 
consistently and only use files when necessary (usually external 
library). I still stumbled upon two minor questions/issues I wanted to 
discuss.

1. Usage of the "data" directory. At the moment the import from data 
directory -> jdbc store ignores the "data" directory. In a clustered 
environment, this directory thus remains instance specific, and it would 
be up to the user to refer to shared files. At this moment, there is no 
reason why we couldn't include the data dir in the jdbcstore and cache 
it before loading the geotools datastore. This is actually what my 
modified version of the rest service already does because it uses 
resources everywhere. Another idea, was to program the jdbcstore to 
return file based resources only when the "data" directory is used, so 
that it definitely will never store those files in the database 
unnecessarily.

2. In the jdbcstore, should the children of a directory be cached when 
dir() is called? The DataDirectory class uses the dir() method to know 
the root of the data directory, causing the whole data directory to be 
cached at once multiple times unnecessarily, since the root dir is 
usually requested just to know the path for some reason (all code where 
it actually needs files in the data dir, have been replaced by 
resources). We now always want to use resources as long as possible, 
only calling file() at the last moment if necessary. As a consequence 
the dir() method is actually hardly used for the purpose or getting all 
the files inside that dir. I would suggest on calling dir() only to 
create the dir if it doesn't exist yet and not cache its children. There 
is only one part of code left where that would pose a problem, the 
community module "validation", which passes on a whole dir to its 
geotools counterpart. This however could be changed in the geotools 
module to pass on a collection of files instead.

After this change, I wonder if we should make a doc page on the proper 
practices of using the Resource API in order to be clustering-safe.

Regards
Niels

------------------------------------------------------------------------------
Full-scale, agent-less Infrastructure Monitoring from a single dashboard
Integrate with 40+ ManageEngine ITSM Solutions for complete visibility
Physical-Virtual-Cloud Infrastructure monitoring from one console
Real user monitoring with APM Insights and performance trend reports 
Learn More http://pubads.g.doubleclick.net/gampad/clk?id=247754911&iu=/4140
_______________________________________________
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

Reply via email to