<div dir="ltr"><div><div><div><div><div><div><div><div>When working on another project using Infinispan the code being used was a bit interesting and I don&#39;t think our template configuration handling was expecting it do so in such a way.<br><br></div>Essentially the code defined a template for a distributed cache as well as some named caches.  Then whenever a cache is retrieved it would pass the given name and always the distributed cache template.  Unfortunately with the way templates work they essentially redefine a cache first so the actual cache configuration was wiped out.  In this example I was able to get the code to change to using a default cache instead, which is the behavior that is needed.<br><br></div>The issue though at hand is whether we should allow a user to call getCache in such a way. My initial thought is to have it throw some sort of configuration exception when this is invoked. But there are some possible options.<br><br></div>1. Throw a configuration exception not allowing a user to use a template with an already defined cache. This has a slight disconnect between configuration and runtime, since if a user adds a new definition it could cause runtime issues.<br></div>2. Log an error/warning message when this occurs. Is this enough though? Still could have runtime issues that are possibly undetected.<br></div>3. Merge the configurations together applying the template first.  This would be akin to how default cache works currently, but you would get to define your default template configuration at runtime. This sounded like the best option to me, but the problem is what if someone calls getCache using the same cache name but a different template. This could get hairy as well.<br><br></div>Really thinking about the future, disconnecting the cache definition and retrieval would be the best option, but we can&#39;t do that this late in the game.<br><br></div>What do you guys think?<br><br></div> - Will<br></div>