HTV missing lowres kozponti futtatas
authorelgekko <vasary@elgekko.net>
Thu, 9 Mar 2023 09:26:49 +0000 (10:26 +0100)
committerelgekko <vasary@elgekko.net>
Thu, 9 Mar 2023 09:26:49 +0000 (10:26 +0100)
server/user.jobengine.executors/src/user/jobengine/server/steps/ForkMissingLowresStep.java [new file with mode: 0644]

diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/ForkMissingLowresStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/ForkMissingLowresStep.java
new file mode 100644 (file)
index 0000000..4572dc8
--- /dev/null
@@ -0,0 +1,115 @@
+package user.jobengine.server.steps;\r
+\r
+import java.nio.file.Paths;\r
+import java.util.ArrayList;\r
+import java.util.HashMap;\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.stream.Collectors;\r
+\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+\r
+import com.ibm.nosql.json.api.BasicDBObject;\r
+import com.ibm.nosql.json.api.DB;\r
+import com.ibm.nosql.json.api.DBCollection;\r
+\r
+import user.commons.IJob;\r
+import user.commons.JobStatus;\r
+import user.commons.log4j2.marker.MediaCubeUndoMarker;\r
+import user.commons.nosql.NoSQLUtils;\r
+import user.jobengine.db.Media;\r
+import user.jobengine.db.MediaFile;\r
+import user.jobengine.server.IJobRuntime;\r
+\r
+public class ForkMissingLowresStep extends JobStep {\r
+       private static final String MISSING_LOWRES_COLLECTION = "missing_lowres_test";\r
+       private static final int MAX_ALLOWED_TRANSCODE = 4;\r
+       private static final Logger logger = LogManager.getLogger();\r
+       private static final String CHILD_TEMPLATE = "cancelable.xml";\r
+\r
+       @StepEntry\r
+       public Object[] execute(String localHiresPath) throws Exception {\r
+\r
+               int currentTranscodes = getExecutingTranscodeCount();\r
+               if (currentTranscodes == MAX_ALLOWED_TRANSCODE) {\r
+                       return null;\r
+               }\r
+\r
+               DB db = NoSQLUtils.getNoSQLDB();\r
+               DBCollection collection = db.getCollection(MISSING_LOWRES_COLLECTION);\r
+               List<Media> medias = getUntranscodedMedias(collection);\r
+\r
+               try {\r
+                       if (medias.size() == 0) {\r
+                               logger.info(new MediaCubeUndoMarker(getSessionMarker().getSessionID()), "Nincs feldolgozandó hiány.");\r
+                               cancel();\r
+                               return null;\r
+                       }\r
+\r
+                       for (Media media : medias) {\r
+                               String name = media.getMediaFileRealName();\r
+                               ArchiveItem archiveItem = new ArchiveItem();\r
+                               archiveItem.setMediaFile(Paths.get(localHiresPath, name).toString());\r
+                               collection.save(new BasicDBObject("name", name));\r
+                               logger.info(getSessionMarker(), "Processing mediaID: {}", media.getId());\r
+                               Map<String, Object> parameters = new HashMap<>();\r
+\r
+                               IJobRuntime child = getEngine().submit(CHILD_TEMPLATE, "Proxy pótlás", parameters);\r
+                               if (child == null)\r
+                                       throw new Exception("Submit error.");\r
+//                             child.setDescription(escortFileName);\r
+//                             child.setRelated(downloadable.getString("title") + "|" + targetStore.getName());\r
+\r
+                       }\r
+               } catch (Exception e) {\r
+                       logger.catching(e);\r
+                       logger.error(getSessionMarker(), e.getMessage());\r
+                       throw e;\r
+               } finally {\r
+                       setProgress(100);\r
+               }\r
+               return null;\r
+       }\r
+\r
+       private int getExecutingTranscodeCount() {\r
+               Map<Long, IJobRuntime> jobs = getEngine().getJobs();\r
+               List<IJob> transcodeJobs = jobs.values().stream().filter(j -> j.getTemplate().equals(CHILD_TEMPLATE) && !JobStatus.SUSPENDED.equals(j.getStatus()))\r
+                               .collect(Collectors.toList());\r
+               return transcodeJobs.size();\r
+       }\r
+\r
+       private List<Media> getUntranscodedMedias(DBCollection collection) {\r
+               List<Media> result = new ArrayList<>();\r
+               String query = "SELECT mediaid FROM VW_MISSING_PROXY_IDS";\r
+               getManager().executeQuery(query, rs -> {\r
+                       try {\r
+                               long mediaId = rs.getLong(1);\r
+                               Media media = getManager().getMedia(mediaId);\r
+                               // a nevgeneralas miatt az eredeti MediaFilesName nem jo, a pontos nev kell\r
+                               // nekunk\r
+                               String name = media.getMediaFileRealName();\r
+                               long existing = collection.find(new BasicDBObject("name", name)).count();\r
+                               if (existing > 0) {\r
+                                       // logger.info(getSessionMarker(), "{} is on missing_lowres list", name);\r
+                                       return true;\r
+                               }\r
+\r
+                               // 210617 proxy keszites tiltasa\r
+                               MediaFile mf = getManager().getSystemMediaFile(media);\r
+                               if (mf.isDisableProxy())\r
+                                       return true;\r
+\r
+                               result.add(media);\r
+                               int currentTranscodes = getExecutingTranscodeCount();\r
+                               if (currentTranscodes + result.size() == MAX_ALLOWED_TRANSCODE)\r
+                                       return false;\r
+\r
+                       } catch (Exception e) {\r
+                               logger.error(e);\r
+                       }\r
+                       return true;\r
+               }, null);\r
+               return result;\r
+       }\r
+}\r