adriancole opened a new issue #5977:
URL: https://github.com/apache/incubator-pinot/issues/5977


   ServiceManager is a nice utility to make pinot effectively a single process. 
It currently cannot address a common dev setup problem of installing schema.
   
   Instead, you do it like this or with curl after the process is up.
   
   ex
   ```
   bin/pinot-admin.sh AddTable \
       -schemaFile /path/to/transcript-schema.json \
       -tableConfigFile /path/to/transcript-table-realtime.json \
       -exec
   ```
   
   To do this after start has many problems:
   
   1. Anything that depends on Pinot now needs to depend on the outcome of this 
job.
     * This is tricky in docker-compose for example, as you can't depend on a 
job status, only a service health.
     * even running the commands can be tricky and can lead to an unhealthy 
pinot if not done properly.
   2. You cannot rely on /heath similar to normal, as the bootstrap isn't 
totally done.
     * This can leak traffic and show errors you can avoid
   3. This prevents creating a layer that already configures the schema
   
   I think 1 and 2 can be solved by allowing ServiceManager to bootstrap a 
directory full of schema pairs. such as:
   
   ```
   backendEntityView-schemaFile.json
   backendEntityView-tableConfigFile.json
   rawServiceView-schemaFile.json
   rawServiceView-tableConfigFile.json
   rawTraceView-schemaFile.json
   rawTraceView-tableConfigFile.json
   serviceCallView-schemaFile.json
   serviceCallView-tableConfigFile.json
   spanEventView-schemaFile.json
   spanEventView-tableConfigFile.json
   ```
   
   Or even it could be config with the same effect.
   
   For example, in this case /health doesn't pass until tables are applied, 
also listeners aren't up until that happens.
   
   ## Stretch Goal -- no ZK dep
   
   The last mile, ex persisting as a docker layer, seems not possible at the 
moment unless ServiceManager is also used for embedded ZK. This is because 
table configs/table ideal states/broker ideal states are written into 
zookeeper. In other words, you cannot simply save off a layer with pinot data 
directories and then bring it up later with a fresh ZK (IIUC)
   
   However, if we could do this, it would be ultimately better because it 
allows us to have no chance of error starting the process later. This allows 
natural service dependencies with no external orchestration needed.
   


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to