anchor.diff:  ----
   
   == Package Store
  -Package store is a distributed file store which can store arbitrary files in the file system. It is a peer to peer hierarchical storage system. If a new node comes up and it requires any of these files it can be downloaded from one of the nodes where it is available.
  +Package store is a distributed file store which can store arbitrary files in the file system.
  +
  +* This is a fully replicated file system based repository.
  +* It lives at <solr.home>/filestore on each Solr node
  +* Every entry  is a file + metadata. The metadata is named .<filename>.json
  +* The metadata file contains the sha256, signatures of the file
  +* Users can’t create files starting with period (.)
  +* It is agnostic of content type of files. You may store jars as well as other files.
  +
  +=== How does the Package Store work?
  +When a file is uploaded to the PackageStore ,
  +
  +* It’s saved to the local file system
  +* It’s saved along with the metadata. The metadata file stores the sha512 and signatures of the jar files too.
  +* Every live node in the cluster is asked to download it as well
   
   === Package Store APIs
   
  
positive.code: 
  For every package/version in the packages definition, there is a unique `SolrResourceLoader` instance. This is a child of the `CoreContainer` resource loader.
  
  === API end points
  
  * `GET /api/cluster/package` Get the list of packages
  
negative.code: 
  A Package in Solr may contain one or more .jar files and any no:of plugins.
  
  == Objectives
  
  * Zero disruption deployment (hot deployment): Should be possible to install and update packages without node restarts or core reloads, and hence deployments should be quick and without failed requests or stale caches.
  * Easy packaging:
  ** Standard plugin concepts, e.g. query parser, search component, request handler, URP etc., should be supported without any special code/packaging changes.
  ** Artifacts (jars containing custom plugins) that users have already deployed (and are using in production) should be compatible, without needing to recompile or re-package, for greater adoption.
  ** Should support single jar packages as well as multiple jar packages.
  ** Use familiar / standard naming
  ** Use industry standard concepts and terminology around package manager, similar to those like apt, dnf, homebrew etc.
  
  
  == Classloaders
  
  At the heart of the system, we have classloader isolation. To achieve this, the system is simplified into two layered classloaders:
  The root classloader which has all the jars from Solr classpath. This requires Solr node restart to change anything.
  A set of named classloaders that inherit from the root classloader. The life cycles of the named classloaders are tied to the package configuration in ZK. As soon as the configuration is modified, the corresponding classloaders are reloaded and components are asked to reload.
  
  
  == A Plugin
  
  