ruanwenjun commented on a change in pull request #5572:
URL: https://github.com/apache/dolphinscheduler/pull/5572#discussion_r645247377



##########
File path: 
dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/cache/impl/TaskInstanceCacheManagerImpl.java
##########
@@ -57,7 +86,7 @@
     @Override
     public TaskInstance getByTaskInstanceId(Integer taskInstanceId) {
         TaskInstance taskInstance = taskInstanceCache.get(taskInstanceId);

Review comment:
       @blackberrier I mean you can use below code
   ```
   public TaskInstance getByTaskInstanceId(Integer taskInstanceId) {
   return taskInstanceCache.computeIfAbsent(taskInstanceId, k -> 
processService.findTaskInstanceById(k));
   }
   ```
   The cache is used to reduce database pressure, in your plan, if there are 
multiple threads query the same taskInstance at the same time, they will all 
query from database.
   Your consideration is that when conflicts occur, multiple thread query will 
block. I think if conflicts occur, if we don't want to be blocked, we should 
find a better hash method to reduce conflicts. 
   
   In additional, we can use one line of code to achieve, why use more complex 
code?




-- 
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:
[email protected]


Reply via email to