<div dir="ltr"><div><div><br><br>On Sat, Feb 24, 2018 at 10:06 PM, Nikos Alexandris <<a href="mailto:nik@nikosalexandris.net">nik@nikosalexandris.net</a>> wrote:<br>><br>> * Markus Metz <<a href="mailto:markus.metz.giswork@gmail.com">markus.metz.giswork@gmail.com</a>> [2018-02-24 21:39:40 +0100]:<br>><br>>> On Sat, Feb 24, 2018 at 9:25 PM, Nikos Alexandris <<a href="mailto:nik@nikosalexandris.net">nik@nikosalexandris.net</a>><br>>> wrote:<br>>>><br>>>><br>>>> Dear community,<br>>>><br>>>> I am asking for help to "debug" a situation.<br>>>><br>>>> One ETRS89-based location, one Mapset with hundreds of land cover raster<br>>>> map tiles.<br>>>><br>>>> Then, hundreds of UTM Zones-based Locations, subset of the WRS2 grid.<br>>>><br>>>> Multiple `r.proj`es are running in parallel. However, only one at a time<br>>>> from inside one Mapset inside the respective UTM-Zone-based Location,<br>>>> requesting for one land cover raster map tile from the ETRS89-based<br>>><br>>> Location.<br>>>><br>>>><br>>>> And, each `r.proj` is isolated running inside an independent docker<br>>><br>>> container.<br>>>><br>>>><br>>>> To the question. Some tiles are cross-cut by more than one UTM-Zone.<br>>>> Hence, it happens that many UTM-Zones will/might request to read the<br>>>> same land cover raster map tile at the same time.<br>>>><br>>>> That is one write per target Mapset/Location, yet highly probable<br>>>> concurrent read requests to the same raster map(s) in the source<br>>>> Mapset/Location.<br>>>><br>>>> Is this bad?<br>>><br>>><br>>> Are you experiencing problems?<br>><br>><br>> Yes.<br>><br>> (It's not easy for me to have access to the logs, as I<br>> don't directly have access to the scheduler. I got a copy though and I<br>> am reading through.)<br>><br>> Looking at jobs logs, I read lots of ".gislock" lines.<br>> It might be some permission related issue. I partially operated directly<br>> (with my user-id) on many Locations.<br>><br>> The operateor of the scheduler, has naturally, another user-id. I wonder<br>> if I should apply GRASS_SKIP_MAPSET_OWNER_CHECK=1 everywhere.<br><br></div>No, you need to run each process in a unique temporary mapset. Once you have the final result, change the current mapset with g.mapset to the common mapset where final results should stored and copy the final result from the temporary mapset to the current mapset (the mapset to hold the final results).<br><br></div>Alternatively/additionally, don't use the script grassXY to start a GRASS session, instead define the GRASS environment with custom scripts (one for the GRASS version to use, one for the database/location/mapset to use). This avoids race conditions on a HPC system. A unique temporary mapset for each process helps to avoid all sorts of concurrent access problems.<br><div><div><br></div><div>Markus M<br><br></div><div>><br>>> I have been using concurrent read requests on the same raster maps on<br>>> different HPC systems for quite a few years by now and never got any<br>>> problems.<br>><br>><br>> Thank you Markusi. This is a very useful piece of information. It's<br>> reassuring that this part of the process is ok and the problem lies elsewhere.<br>><br>>> Concurrent write requests would be a different issue.<br>><br>><br>>> Markus M<br>><br>><br>> None here.<br>><br>> Nikos<br><br></div></div></div>