diff options
author | Andreas Fankhauser hiddenalpha.ch | 2022-12-16 11:10:14 +0100 |
---|---|---|
committer | Andreas Fankhauser hiddenalpha.ch | 2022-12-16 11:10:14 +0100 |
commit | 1493217eb78350214567725b7b978c451510d0b3 (patch) | |
tree | 18e30b51ab3b4c505892e41d1336795a2c0a2252 | |
parent | cc915b9ef477297f66ac1b50f900a57f0c1b6ab6 (diff) | |
parent | 0dca5c93398609cd31a3a2284ae742fb6ce34552 (diff) | |
download | UnspecifiedGarbage-1493217eb78350214567725b7b978c451510d0b3.zip UnspecifiedGarbage-1493217eb78350214567725b7b978c451510d0b3.tar.gz |
Merge upstream changes from gh-hiddenalpha into local feature
Conflicts:
src/main/lua/maven/MvnCentralDepScan.lua
-rw-r--r-- | src/main/lua/maven/MvnCentralDepScan.lua | 91 |
1 files changed, 62 insertions, 29 deletions
diff --git a/src/main/lua/maven/MvnCentralDepScan.lua b/src/main/lua/maven/MvnCentralDepScan.lua index 3d771ff..90e9ea4 100644 --- a/src/main/lua/maven/MvnCentralDepScan.lua +++ b/src/main/lua/maven/MvnCentralDepScan.lua @@ -8,7 +8,9 @@ local AF_INET = require('scriptlee').posix.AF_INET local AF_INET6 = require('scriptlee').posix.AF_INET6 local IPPROTO_TCP = require('scriptlee').posix.IPPROTO_TCP local SOCK_STREAM = require('scriptlee').posix.SOCK_STREAM +--local async = require("scriptlee").reactor.async local inaddrOfHostname = require('scriptlee').posix.inaddrOfHostname +--local newCond = require("scriptlee").posix.newCond -- cannot use. Too buggy :( local newHttpClient = require("scriptlee").newHttpClient local newSqlite = require("scriptlee").newSqlite local newTlsClient = assert(require("scriptlee").newTlsClient) @@ -209,8 +211,8 @@ end function mod.onGetPomRspHdr( msg, req ) - log:write("< "..tostring(msg.proto) .." "..tostring(msg.status).." "..tostring(msg.phrase).."\n") if msg.status ~= 200 then + log:write("< "..tostring(msg.proto) .." "..tostring(msg.status).." "..tostring(msg.phrase).."\n") for i, h in ipairs(msg.headers) do log:write("< ".. h.key ..": ".. h.val .."\n") end @@ -378,6 +380,9 @@ function mod.getPropValThroughParentChain( app, mvnArtifact, propKey, none ) if propKey == "project.version" then return mvnArtifact.version end + if propKey == "project.groupId" then + return mvnArtifact.groupId + end -- no luck in current artifact. Delegate to parent (if any) if mvnArtifact.parentGroupId and mvnArtifact.parentArtifactId @@ -622,9 +627,7 @@ function mod.storeAsSqliteFile( app ) for _, mvnArtifact in pairs(app.mvnArtifacts) do local mvnDeps = app.mvnDepsByArtifact[mvnArtifact] for _, mvnDep in pairs(mvnDeps or {}) do - if not mvnDep.version then mvnDep.version = "TODO_5bbc0e87011e24d845136c5406302616" end - assert(mvnDep.version, mvnDep.artifactId) - assert(mvnDep.groupId and mvnDep.artifactId and mvnDep.version) + assert(mvnDep.groupId and mvnDep.artifactId) local bucket = mvnArtifactIdsByArtif[mvnDep.artifactId] local depId = nil for _,a in pairs(bucket or {}) do @@ -635,6 +638,11 @@ function mod.storeAsSqliteFile( app ) end end if not depId then -- Artifact not stored yet. Do now. + if not mvnDep.version then + -- TODO mvnDep.version CAN be missing. Eg via depMgnt of + -- unknown parent or similar + mvnDep.version = "TODO_40ba845c5a1bd8" + end depId = insertMvnArtifact({ groupId = mvnDep.groupId, artifactId = mvnDep.artifactId, @@ -734,12 +742,12 @@ end function mod.newSocketMgr() local hosts = {} + -- TOO_BUGGY local numConnActive, numConnActiveLimit = 0, 4 + -- TOO_BUGGY local numConnActiveCond = newCond() local openSock = function( t, opts ) for k, v in pairs(opts) do if false then - elseif k=='host' or k=='port' then - elseif k=='useTLS' then - if v then error('TLS not impl') end + elseif k=='host' or k=='port' or k=='useTLS' then else error('Unknown option: '..tostring(k)) end @@ -748,14 +756,19 @@ function mod.newSocketMgr() local af if inaddr:find('^%d+.%d+.%d+.%d+$') then af = AF_INET else af = AF_INET6 end log:write("opts.useTLS "..tostring(opts.useTLS).." (Override to TRUE ...)\n") - opts.useTLS = true -- TODO why the heck is this needed? (I guess scriptlee bug?) + opts.useTLS = true -- TODO remove as soon fixed scriptlee is available. local key = inaddr.."\t"..opts.port.."\t"..tostring(opts.useTLS) --log:write("KEY wr '"..key.."'\n") local existing = hosts[key] + -- TOO_BUGGY numConnActive = numConnActive +1 if existing then return table.remove(existing) else - sleep(.2) -- TODO rm + -- TOO_BUGGY while numConnActive > numConnActiveLimit do + -- TOO_BUGGY log:write("numConnActive is "..numConnActive..". Waiting ...\n") + -- TOO_BUGGY numConnActiveCond:waitForever() + -- TOO_BUGGY end + -- TOO_BUGGY log:write("numConnActive is ".. numConnActive ..". Go\n") local sock = socket(af, SOCK_STREAM, IPPROTO_TCP) sock:connect(inaddr, opts.port) if opts.useTLS then @@ -794,10 +807,9 @@ function mod.newSocketMgr() error("unreachable") end local releaseSock = function( t, sockWrapr ) - t:closeSock(sockWrapr) return -- TODO rm + t:closeSock(sockWrapr) return -- TODO rm as soon fixed scriptlee available (aka >46) -- -- keep-alive (TODO only if header says so) -- local key = sockWrapr._host.."\t"..sockWrapr._port.."\t"..tostring(sockWrapr._useTLS) --- log:write("KEY rd '"..key.."'\n") -- local host = hosts[key] -- if not host then host = {} hosts[key] = host end -- table.insert(host, sockWrapr) @@ -805,7 +817,13 @@ function mod.newSocketMgr() return{ openSock = openSock, releaseSock = releaseSock, - closeSock = function(t, sockWrapr) sockWrapr._sock:release() end, + closeSock = function(t, sockWrapr) + sockWrapr._sock:release() + -- TOO_BUGGY numConnActive = numConnActive -1 + -- TOO_BUGGY log:write("numConnActive -1. Is now ".. numConnActive ..". Broadcast.\n") + -- TOO_BUGGY numConnActiveCond:broadcast() + end, + } end @@ -899,6 +917,9 @@ end function mod.enrichFromUrls( app ) local pomSrc = mod.newPomUrlSrc(app) + -- TOO_BUGGY local numInProgress, numInProgressLimit = 0, 1 + -- TOO_BUGGY local numInProgressCond = newCond() + -- TOO_BUGGY log:write("numInProgressCond ".. tostring(numInProgressCond).." ("..(debug.getinfo(1).currentline)..")\n"); while true do local pomUrl = pomSrc:nextPomUrl() if not pomUrl then break end @@ -909,23 +930,35 @@ function mod.enrichFromUrls( app ) local url = pomUrl:match("^https?://[^/]+(.*)$") if port == 443 then isTLS = true end if not port then port = (isTLS and 443 or 80) end - log:write("> GET ".. proto .."://".. host ..":".. port .. url .."\n") - local req = objectSeal{ - app = app, - base = false, - pomParser = false, - } - req.base = app.http:request{ - cls = req, - host = assert(host), port = assert(port), - method = "GET", url = url, - --hdrs = , - useTLS = isTLS, - onRspHdr = mod.onGetPomRspHdr, - onRspChunk = mod.onGetPomRspChunk, - onRspEnd = mod.onGetPomRspEnd, - } - req.base:closeSnk() + -- TOO_BUGGY while numInProgress >= numInProgressLimit do + -- TOO_BUGGY log:write("numInProgress is ".. numInProgress ..". Wait ...\n") + -- TOO_BUGGY numInProgressCond:waitForever() + -- TOO_BUGGY end + -- TOO_BUGGY log:write("numInProgress is ".. numInProgress ..". Go!\n") + -- TOO_BUGGY numInProgress = numInProgress +1 + -- TOO_BUGGY async(function() + log:write("> GET ".. proto .."://".. host ..":".. port .. url .."\n") + local req = objectSeal{ + app = app, + base = false, + pomParser = false, + } + req.base = app.http:request{ + cls = req, + host = assert(host), port = assert(port), + method = "GET", url = url, + --hdrs = , + useTLS = isTLS, + onRspHdr = mod.onGetPomRspHdr, + onRspChunk = mod.onGetPomRspChunk, + onRspEnd = mod.onGetPomRspEnd, + } + req.base:closeSnk() + -- TOO_BUGGY numInProgress = numInProgress -1 + -- TOO_BUGGY log:write("numInProgress DECR. Is now ".. numInProgress ..". broadcast.\n") + -- TOO_BUGGY log:write("numInProgressCond ".. tostring(numInProgressCond).." ("..(debug.getinfo(1).currentline)..")\n"); + -- TOO_BUGGY numInProgressCond:broadcast() + -- TOO_BUGGY end) end log:write("[INFO ] No more pom URLs\n") mod.resolveDependencyVersionsFromDepsMgmnt(app) |