[PROD] Status report of quarkus.io content indexing

THIS ISSUE IS OBSOLETE
See https://github.com/quarkusio/search.quarkus.io/issues/130 instead

THIS ISSUE IS OBSOLETE
See https://github.com/quarkusio/search.quarkus.io/issues/130 instead


String constants improvement.

I understand the necessity of creation of a Strings Constant class. It is because there is a better organization, facility when a maintenance will be done and performance in memory when we work in this way.

The error showed in the Travis CI build is refer to Token and not my implementation.

This project has been archived. Please see the README.md for more detail on alternative projects.


No PASS reports since 2015-04-13

See http://fast-matrix.cpantesters.org/?dist=Convos;reports=1#sl=7,1 for a datetime sorted fail/pass overview. Probably the failures are caused by newer Mojolicious and/or Mojolicious::Plugin::* versions.

Convos is no longer on CPAN. Will keep a closer look when we decide to upload it again.


Gaussian Mixture Models (GMM)

Have you read the Contributing Guidelines on issues?

[X] I have read the Contributing Guidelines on issues.

Description
GMM is an unsupervised learning algorithm that models data as a mixture of Gaussian distributions. It is used for clustering, density estimation, and generative modeling. GMM can handle complex data distributions.
Self-service

[X] I'd be willing to address this documentation request myself.

@ajay-dhangar Please assign this to me also.


DocsArchive-<IP_ADDRESS>Auto archive content

Please don't merge this PR until target archive repo PR https://github.com/OPS-E2E-PPE/docs-archive-test-target_04bdb8bd-e8f7-40b9-b5ca-8d707f192eec/pull/1 is merged into live branch.
Auto archive content to https://github.com/opstest2/docs-archive-test-target_04bdb8bd-e8f7-40b9-b5ca-8d707f192eec.git

Docs Build status updates of commit 07bb4a6:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error-RuningBuildFailed] Some unexpected errors happened when running build, please open a ticket in https://aka.ms/SiteHelp and include the error report for our team to troubleshoot

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


SVD-operation on the GPU

This merge request implements the SVD on the GPU using cuSolver.
We are building a sparse Gaussian Mixture Model using Tensorflow and for that we need the SVD and determinant computation (see another merge request). Since these operations were not implemented on the GPU yet and the communication resulted in a large overhead, I implemented them on the GPU.
The SVD is implemented using cuSolver.
cuSolver, however, has the downside of only supporting matrices with m>=n. The CPU-Version of SVD supports also matrices with m<n. So this kernel throws an error when matrices with m<n are passed and notifies the user to explicitly switch to the CPU kernel.

Can one of the admins verify this patch?

It took me a while to find a way how to deal with all the needed matrix transpositions when also supporting matrices of shape m<n. The result included a lot of refactoring, but I think that it is now also clearer to understand.
Note: don't merge yet!
Not all python tests pass.
First, the GPU version is numerically much less precise. Even after explicitly increasing the tolerance by a factor of 1000 when the GPU version is running, I sometimes get errors that 0.014% (or so) of the matrices don't match.
Second: The GPU version fails if one dimension of the input matrix is one. Then the SVD returns zeros for U or V instead of 1. I have to investigate that more.

@shamanDevel OK, thanks for the update. I have noticed the GPU version being less accurate on occasion, so you might have to increase the tolerance in the tests. Please ping the PR when you are ready to proceed.

Now it should also work for matrices with shape of m==1 or n==1.
The unit tests succeed now.
Can you have a look at the changes?
I'll fix the merge conflicts to master now

@tensorflow-jenkins test this please

@shamanDevel Thanks for the updates!
@tensorflow-jenkins test this please

It looks like there are a few test failures because tol=1e-14 is too tight for double precision. You can just loosen the tolerance a little bit.

@rmlarsen all cleanup tasks should now be implemented
@tensorflow-jenkins test this please

I think I made conflicts for you by merging a bunch of stuff -- can you resolve?

@martinwicke the conflict was a single blank line with different whitespaces ^^. The conflict is fixed now.

@shamanDevel Thanks!
@tensorflow-jenkins test this please

@shamanDevel It looks like you have a compilation error (bad merge?):
....out/local-opt/bin/tensorflow/core/kernels/_objs/svd_op_gpu/tensorflow/core/kernels/svd_op_gpu.cu.o): com.google.devtools.build.lib.shell.BadExitStatusException: Process exited with status 1.
tensorflow/core/kernels/svd_op_gpu.cu.cc:413:1: error: expected declaration before '}' token
}  // namespace tensorflow
^

@rmlarsen The error is fixed now.
Oh man, I learned a lot during this pull request. Like this one:
If you have a fallback in your code (here: no CUDA support), then continue testing this fallback as well!

For the support of complex values, what do you think of the following procedure:
Once this pull request is merged, I open an issue to discuss how to implement the complex value support. This is needed because cuSolver returns the singular values directly as reals while Eigen returns them as complex values and hence they are casted to real in the python wrapper. So the kernel definition and the python wrapper have to be adapted as well.
Then I'll implement this as a new pull request.

@shamanDevel Happy to hear it was a "learning experience" :-) Thanks for all your hard work! I like you suggestion for adding complex support. I think we should probably clean up the existing interfaces to return real singular values instead of the ugly casting. This might require renaming the kernels (adding V2 suffix for the new version) for backwards compatibility.
@tensorflow-jenkins test this please

Yeah, all checks have passed!

Woohoo! Thanks a lot for the contribution @shamanDevel!

Emmm, It seems in r1.4(4196d6d), SVD on CPU is faster than SVD on GPU?
SVD size: 1024 * 1024 float32
GPU : one GeForce GTX 950M
CPU : Intel(R) Core(TM) i7-4720HQ CPU @ 2.60GHz, (4 core 8 thread)

I don't know why in my PC, SVD on GPU is slower than SVD on CPU... version r1.4(4196d6d)
main.py
import tensorflow as tf
import numpy as np
import sys

D = 1024
dA = np.random.normal(size=(D,D))

dev = "/gpu:0" if len(sys.argv)==1 else "/cpu:0"

with tf.device(dev):
    A = tf.placeholder(shape=(D,D),dtype=tf.float32)
    S, U, V = tf.svd(A)

config = tf.ConfigProto()
config.log_device_placement = True
config.graph_options.optimizer_options.global_jit_level=tf.OptimizerOptions.ON_1
sess = tf.Session(config=config)

for _ in xrange(10):
    dS, dU, dV = sess.run((S, U, V), feed_dict={A:dA})

run on GPU
time python main.py
2017-10-10 16:28:49.047703: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:892] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2017-10-10 16:28:49.048176: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Found device 0 with properties:
name: GeForce GTX 950M major: 5 minor: 0 memoryClockRate(GHz): 1.124
pciBusID: 0000:0a:00.0
totalMemory: 3.95GiB freeMemory: 3.91GiB
2017-10-10 16:28:49.048205: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1120] Creating TensorFlow device (/device:GPU:0) -> (device: 0, name: GeForce GTX 950M, pci bus id: 0000:0a:00.0, compute capability: 5.0)
Device mapping:
/job:localhost/replica:0/task:0/device:XLA_GPU:0 -> device: XLA_GPU device
/job:localhost/replica:0/task:0/device:XLA_CPU:0 -> device: XLA_CPU device
/job:localhost/replica:0/task:0/device:GPU:0 -> device: 0, name: GeForce GTX 950M, pci bus id: 0000:0a:00.0, compute capability: 5.0
2017-10-10 16:28:49.064960: I tensorflow/core/common_runtime/direct_session.cc:299] Device mapping:
/job:localhost/replica:0/task:0/device:XLA_GPU:0 -> device: XLA_GPU device
/job:localhost/replica:0/task:0/device:XLA_CPU:0 -> device: XLA_CPU device
/job:localhost/replica:0/task:0/device:GPU:0 -> device: 0, name: GeForce GTX 950M, pci bus id: 0000:0a:00.0, compute capability: 5.0

Svd: (Svd): /job:localhost/replica:0/task:0/device:GPU:0
2017-10-10 16:28:49.067234: I tensorflow/core/common_runtime/placer.cc:874] Svd: (Svd)/job:localhost/replica:0/task:0/device:GPU:0
Placeholder: (Placeholder): /job:localhost/replica:0/task:0/device:GPU:0
2017-10-10 16:28:49.067302: I tensorflow/core/common_runtime/placer.cc:874] Placeholder: (Placeholder)/job:localhost/replica:0/task:0/device:GPU:0
2017-10-10 16:28:49.074053: I tensorflow/core/kernels/cuda_solvers.cc:159] Creating CudaSolver handles for stream 0x488e860
(1024,) (1024, 1024) (1024, 1024)
python main.py  27.50s user 2.30s system 100% cpu 29.658 total

run on CPU
time python main.py -
2017-10-10 16:29:53.252138: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:892] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2017-10-10 16:29:53.252572: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Found device 0 with properties:
name: GeForce GTX 950M major: 5 minor: 0 memoryClockRate(GHz): 1.124
pciBusID: 0000:0a:00.0
totalMemory: 3.95GiB freeMemory: 3.91GiB
2017-10-10 16:29:53.252600: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1120] Creating TensorFlow device (/device:GPU:0) -> (device: 0, name: GeForce GTX 950M, pci bus id: 0000:0a:00.0, compute capability: 5.0)
Device mapping:
/job:localhost/replica:0/task:0/device:XLA_GPU:0 -> device: XLA_GPU device
/job:localhost/replica:0/task:0/device:XLA_CPU:0 -> device: XLA_CPU device
/job:localhost/replica:0/task:0/device:GPU:0 -> device: 0, name: GeForce GTX 950M, pci bus id: 0000:0a:00.0, compute capability: 5.0
2017-10-10 16:29:53.269242: I tensorflow/core/common_runtime/direct_session.cc:299] Device mapping:
/job:localhost/replica:0/task:0/device:XLA_GPU:0 -> device: XLA_GPU device
/job:localhost/replica:0/task:0/device:XLA_CPU:0 -> device: XLA_CPU device
/job:localhost/replica:0/task:0/device:GPU:0 -> device: 0, name: GeForce GTX 950M, pci bus id: 0000:0a:00.0, compute capability: 5.0

Svd: (Svd): /job:localhost/replica:0/task:0/device:CPU:0
2017-10-10 16:29:53.271505: I tensorflow/core/common_runtime/placer.cc:874] Svd: (Svd)/job:localhost/replica:0/task:0/device:CPU:0
Placeholder: (Placeholder): /job:localhost/replica:0/task:0/device:CPU:0
2017-10-10 16:29:53.271544: I tensorflow/core/common_runtime/placer.cc:874] Placeholder: (Placeholder)/job:localhost/replica:0/task:0/device:CPU:0
(1024,) (1024, 1024) (1024, 1024)
python main.py -  34.33s user 10.68s system 621% cpu 7.241 total

@hzhangxyz I'm confused.
Your first log shows that the ops are placed on the GPU while the second log shows the CPU placement. This is exactly opposite to what the execution command 'time python main.py' indicates.
If I just look at the logs, then the GPU version takes 2.3sec (100% CPU load) and the CPU version takes 10.68sec (621% CPU load).
Based on that, the SVD is clearly faster on the GPU than the CPU version. Even if the CPU version uses multiple cores, indicated by a CPU load of 621%.

@shamanDevel Hi

Your first log shows that the ops are placed on the GPU while the second log shows the CPU placement. This is exactly opposite to what the execution command 'time python main.py' indicates.
yeah, in time python main.py len of sys.argc is 1 so it is running on GPU.

If I just look at the logs, then the GPU version takes 2.3sec (100% CPU load) and the CPU version takes 10.68sec (621% CPU load).
but 2.3sec and 10.68sec are system time, which isn't the exact time cost. the exact time is 29.658sec(gpu) and 7.241sec(cpu). For example time sleep 1 outputs sleep 1  0.00s user 0.00s system 0% cpu 1.001 total, in which 1.001 is the exact timecost, although cpu calculates nothing.

So, the problem is that SVD on GPU is slower than SVD on CPU sometimes, which is very strange.


Migrate tool results on examples/hello_world

Results from running https://github.com/flutter/flutter/pull/100284 on the hellow_world example app.

@blasten Oops, missed adding the metadata to commit, here it is

No. It will only add these images if the images were newly added to the templates between the base revision and the target revision. Since this migration has succeeded, the new base revision will be upgraded, and future migrations won't see these images as new additions.

sgtm. Since the Flutter repo has special constraints around checking in binaries, we might need to delete these binaries in the PR.  Other than that, changes LGTM assuming all checks pass.

You also shouldn't check in any of the pubspec or gitignores

Ok, thanks for the feedback! I probably won't land this exact PR though.
The changes here are meant as a demo for what an actual project will look like after migration, Ill keep this as a reference and make a new PR for a flutter-repo-specific migration that clears up all the things like binaries and .gitignores.

@GaryQian This looks awesome. I'm going to close this PR since it was just a demo though.


fix(sdk): 🔒 During read, limits TDF Manifest to 10MB

This commit limits TDF Manifest sizes to 10MB or smaller.  Prior to this fix, a protocol attack is possible to define a large manifest size which will result in a large memory allocation (even if the manifest transmitted is substantially smaller).
This commit also includes the fuzz testing that was used to discover this flaw.
In reader the Manifest load uses the function ReadAllFileData.  This function is documented to only be used on small files, however to accomplish that a call to ReadFileSize beforehand would be necessary.
Because the call to check the defined size is likely to be missed, this commit updates ReadAllFileData to instead accept the maximum size as an argument, which is validated before allocating the byte slice.
Fixes https://github.com/opentdf/platform/issues/1391

@jentfoo Can you take a look and make sure I haven't introduced any issues with my fixups?
Thanks!

Thank you for the help @dmihalcik-virtru 🙌


Non-fork test ends up with unwanted scala-library even with autoScalaLibrary := false

Originally reported by @retronym
steps
See https://github.com/scala/scala/pull/6300#issuecomment-372495182
problem
Classloader used by non-fork test includes scala-library in ScalaInstance.
expectation
Construct Classloader without ScalaInstance when autoScalaLibrary := false

Ref https://github.com/sbt/zinc/pull/505

Forking doesn't help. You still get a scala-library on the classpath.
I added the following debug code to our CustomScalaCheckRunner in the Scala 2.13 build which runs scalacheck with fork in Test := true:
    def printCL(cl: ClassLoader, n: String, prefix: String): Unit = {
      println(s"**** $prefix $n: $cl")
      var parent = cl.getParent
      if(cl.getClass.getName == "sbt.internal.inc.classpath.DualLoader") {
        val parentA = cl.getClass.getDeclaredField("parentA")
        val parentB = cl.getClass.getDeclaredField("parentB")
        parentA.setAccessible(true)
        parentB.setAccessible(true)
        printCL(parentA.get(cl).asInstanceOf[ClassLoader], "parentA", "  "+prefix)
        printCL(parentB.get(cl).asInstanceOf[ClassLoader], "parentB", "  "+prefix)
      } else if(cl.isInstanceOf[java.net.URLClassLoader]) {
        val u = cl.asInstanceOf[java.net.URLClassLoader]
        println(s"**** $prefix URLs: "+u.getURLs.toSeq)
      }
      if(parent ne null) printCL(parent, "parent", "  "+prefix)
    }
    try {
      //val cl = new URLClassLoader(classPath.asURLs.toArray, null)
      val cl = _loader
      printCL(cl, "ClassLoader", "")
      println("**** Predef: "+JavaConverters.enumerationAsScalaIteratorConverter(cl.getResources("scala/collection/immutable/Set$.class")).asScala.toSeq)
      val set = cl.loadClass("scala.collection.immutable.Set$")
      println("**** Set$ ClassLoader: "+set.getClassLoader)
      val setApply = set.getMethods.find(_.getName == "apply").get
      val varargsClass = setApply.getParameters.apply(0).getType.getName
      Console.err.println("**** varargs class is: "+varargsClass+" => "+(varargsClass == "scala.collection.immutable.Seq"))
    } catch { case t: Throwable =>
      Console.err.println("**** Error determining `isImmutableVarargs`, assuming `false`: "+t)
    }

This is the result:
****  ClassLoader: ClasspathFilter(
  parent = URLClassLoader with NativeCopyLoader with RawResources(
  urls = List(/Users/szeiger/code/scala/target/scalacheck/test-classes, /Users/szeiger/code/scala/build/quick/classes/scalacheck, /Users/szeiger/code/scala/build/quick/classes/library, /Users/szeiger/code/scala/build/quick/classes/reflect, /Users/szeiger/code/scala/build/quick/classes/compiler, /Users/szeiger/code/scala/build/quick/classes/scaladoc, /Users/szeiger/code/scala/build/quick/classes/scalacheckLib, /Users/szeiger/.ivy2/cache/org.scala-lang.modules/scala-asm/bundles/scala-asm-7.0.0-scala-1.jar, /Users/szeiger/.ivy2/cache/jline/jline/jars/jline-2.14.6.jar, /Users/szeiger/.ivy2/cache/org.scala-sbt/test-interface/jars/test-interface-1.0.jar),
  parent = DualLoader(a = java.net.URLClassLoader@3dfc492c, b = java.net.URLClassLoader@5649fd9b),
  resourceMap = Set(app.class.path, boot.class.path),
  nativeTemp = /var/folders/xy/my9ncw393rs6q08_th_5c8w80000gn/T/sbt_52987c7c/sbt_925cbbc7
)
  root = sun.misc.Launcher$AppClassLoader@75b84c92
  cp = Set(/Users/szeiger/code/scala/build/quick/classes/compiler, /Users/szeiger/code/scala/target/scalacheck/test-classes, /Users/szeiger/.ivy2/cache/org.scala-lang.modules/scala-asm/bundles/scala-asm-7.0.0-scala-1.jar, /Users/szeiger/code/scala/build/quick/classes/scalacheck, /Users/szeiger/code/scala/build/quick/classes/scalacheckLib, /Users/szeiger/.ivy2/cache/jline/jline/jars/jline-2.14.6.jar, /Users/szeiger/.ivy2/cache/org.scala-sbt/test-interface/jars/test-interface-1.0.jar, /Users/szeiger/code/scala/build/quick/classes/reflect, /Users/szeiger/code/scala/build/quick/classes/scaladoc, /Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/test-interface-1.0.jar, /Users/szeiger/code/scala/build/quick/classes/library)
)
****    parent: URLClassLoader with NativeCopyLoader with RawResources(
  urls = List(/Users/szeiger/code/scala/target/scalacheck/test-classes, /Users/szeiger/code/scala/build/quick/classes/scalacheck, /Users/szeiger/code/scala/build/quick/classes/library, /Users/szeiger/code/scala/build/quick/classes/reflect, /Users/szeiger/code/scala/build/quick/classes/compiler, /Users/szeiger/code/scala/build/quick/classes/scaladoc, /Users/szeiger/code/scala/build/quick/classes/scalacheckLib, /Users/szeiger/.ivy2/cache/org.scala-lang.modules/scala-asm/bundles/scala-asm-7.0.0-scala-1.jar, /Users/szeiger/.ivy2/cache/jline/jline/jars/jline-2.14.6.jar, /Users/szeiger/.ivy2/cache/org.scala-sbt/test-interface/jars/test-interface-1.0.jar),
  parent = DualLoader(a = java.net.URLClassLoader@3dfc492c, b = java.net.URLClassLoader@5649fd9b),
  resourceMap = Set(app.class.path, boot.class.path),
  nativeTemp = /var/folders/xy/my9ncw393rs6q08_th_5c8w80000gn/T/sbt_52987c7c/sbt_925cbbc7
)
****    URLs: ArraySeq(file:/Users/szeiger/code/scala/target/scalacheck/test-classes/, file:/Users/szeiger/code/scala/build/quick/classes/scalacheck, file:/Users/szeiger/code/scala/build/quick/classes/library/, file:/Users/szeiger/code/scala/build/quick/classes/reflect/, file:/Users/szeiger/code/scala/build/quick/classes/compiler/, file:/Users/szeiger/code/scala/build/quick/classes/scaladoc/, file:/Users/szeiger/code/scala/build/quick/classes/scalacheckLib/, file:/Users/szeiger/.ivy2/cache/org.scala-lang.modules/scala-asm/bundles/scala-asm-7.0.0-scala-1.jar, file:/Users/szeiger/.ivy2/cache/jline/jline/jars/jline-2.14.6.jar, file:/Users/szeiger/.ivy2/cache/org.scala-sbt/test-interface/jars/test-interface-1.0.jar)
****      parent: DualLoader(a = java.net.URLClassLoader@3dfc492c, b = java.net.URLClassLoader@5649fd9b)
****        parentA: java.net.URLClassLoader@3dfc492c
****        URLs: ArraySeq(file:/Users/szeiger/.ivy2/local/org.scala-lang/scala-compiler/2.13.0-pre-1d9a53e-SNAPSHOT/jars/scala-compiler.jar, file:/Users/szeiger/.ivy2/local/org.scala-lang/scala-library/2.13.0-pre-1d9a53e-SNAPSHOT/jars/scala-library.jar, file:/Users/szeiger/.ivy2/local/org.scala-lang/scala-reflect/2.13.0-pre-1d9a53e-SNAPSHOT/jars/scala-reflect.jar, file:/Users/szeiger/.ivy2/cache/org.scala-lang.modules/scala-asm/bundles/scala-asm-7.0.0-scala-1.jar, file:/Users/szeiger/.ivy2/cache/jline/jline/jars/jline-2.14.6.jar)
****          parent: xsbt.boot.BootFilteredLoader@79defdc
****            parent: sun.misc.Launcher$AppClassLoader@75b84c92
****            URLs: ArraySeq(file:/Users/szeiger/.sbt/launchers/1.2.7/sbt-launch.jar)
****              parent: sun.misc.Launcher$ExtClassLoader@614ca7df
****              URLs: ArraySeq(file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/sunec.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/nashorn.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/cldrdata.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/jfxrt.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/dnsns.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/localedata.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/jaccess.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/zipfs.jar, file:/Library/Java/Extensions/RXTXcomm.jar, file:/Library/Java/Extensions/librxtxSerial.jnilib, file:/System/Library/Java/Extensions/MRJToolkit.jar)
****        parentB: java.net.URLClassLoader@5649fd9b
****        URLs: ArraySeq(file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/apple-file-events-1.3.2.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/sjson-new-core_2.12-0.8.2.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/config-1.2.0.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/scalapb-runtime_2.12-0.6.0.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/log4j-api-2.11.1.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/core-macros_2.12-1.2.7.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/gigahorse-core_2.12-0.3.0.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/main-settings_2.12-1.2.7.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/ivy-2.3.0-sbt-b18f59ea3bc914a297bb6f1a4f7fb0ace399e310.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/command_2.12-1.2.7.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/zinc-ivy-integration_2.12-1.2.5.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/util-control_2.12-1.2.4.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/actions_2.12-1.2.7.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/scripted-plugin_2.12-1.2.7.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/scala-reflect-2.12.7.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/tasks_2.12-1.2.7.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/scripted-sbt-redux_2.12-1.2.7.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/slf4j-api-1.7.25.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/collections_2.12-1.2.7.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/sbinary_2.12-0.5.0.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/test-interface-1.0.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/logic_2.12-1.2.7.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/log4j-slf4j-impl-2.11.1.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/zinc-classpath_2.12-1.2.5.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/log4j-core-2.11.1.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/zinc-persist_2.12-1.2.5.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/ssl-config-core_2.12-0.2.2.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/jline-2.14.6.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/util-logging_2.12-1.2.4.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/fastparse-utils_2.12-0.4.2.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/run_2.12-1.2.7.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/launcher-interface-1.0.4.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/compiler-interface-1.2.5.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/protobuf-java-3.3.1.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/protocol_2.12-1.2.7.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/io_2.12-1.2.2.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/reactive-streams-1.0.0.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/sjson-new-scalajson_2.12-0.8.2.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/zinc-apiinfo_2.12-1.2.5.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/test-agent-1.2.7.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/okhttp-3.7.0.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/sourcecode_2.12-0.1.3.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/lenses_2.12-0.4.12.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/jna-4.5.0.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/zinc-compile-core_2.12-1.2.5.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/okhttp-urlconnection-3.7.0.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/gigahorse-okhttp_2.12-0.3.0.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/disruptor-3.4.2.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/compiler-bridge_2.12-1.2.5.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/completion_2.12-1.2.7.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/util-tracking_2.12-1.2.4.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/template-resolver-0.1.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/zinc_2.12-1.2.5.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/jna-platform-4.5.0.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/zinc-core_2.12-1.2.5.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/okio-1.12.0.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/jawn-parser_2.12-0.10.4.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/fastparse_2.12-0.4.2.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/util-scripted_2.12-1.2.4.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/librarymanagement-ivy_2.12-1.2.3.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/jsch-0.1.54.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/util-position_2.12-1.2.4.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/sbt-1.2.7.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/scalacache-caffeine_2.12-0.20.0.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/zinc-compile_2.12-1.2.5.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/util-relation_2.12-1.2.4.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/scalacache-core_2.12-0.20.0.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/util-interface-1.2.4.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/main_2.12-1.2.7.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/scala-xml_2.12-1.0.6.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/ipcsocket-1.0.0.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/task-system_2.12-1.2.7.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/librarymanagement-core_2.12-1.2.3.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/caffeine-2.5.6.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/zinc-classfile_2.12-1.2.5.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/sjson-new-murmurhash_2.12-0.8.2.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/shaded-scalajson_2.12-1.0.0-M4.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/util-cache_2.12-1.2.4.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/testing_2.12-1.2.7.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/scala-parser-combinators_2.12-1.0.5.jar)
****          parent: java.net.URLClassLoader@5ae9a829
****          URLs: ArraySeq(file:/Users/szeiger/.sbt/boot/scala-2.12.7/lib/scala-compiler.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/lib/jline.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/lib/scala-reflect.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/lib/scala-xml_2.12.jar)
****            parent: xsbt.boot.LibraryClassLoader@215be6bb
****            URLs: ArraySeq(file:/Users/szeiger/.sbt/boot/scala-2.12.7/lib/scala-library.jar)
****              parent: xsbt.boot.BootFilteredLoader@79defdc
****                parent: sun.misc.Launcher$AppClassLoader@75b84c92
****                URLs: ArraySeq(file:/Users/szeiger/.sbt/launchers/1.2.7/sbt-launch.jar)
****                  parent: sun.misc.Launcher$ExtClassLoader@614ca7df
****                  URLs: ArraySeq(file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/sunec.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/nashorn.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/cldrdata.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/jfxrt.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/dnsns.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/localedata.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/jaccess.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/zipfs.jar, file:/Library/Java/Extensions/RXTXcomm.jar, file:/Library/Java/Extensions/librxtxSerial.jnilib, file:/System/Library/Java/Extensions/MRJToolkit.jar)
****        parent: NullLoader
****          parent: sun.misc.Launcher$AppClassLoader@75b84c92
****          URLs: ArraySeq(file:/Users/szeiger/.sbt/launchers/1.2.7/sbt-launch.jar)
****            parent: sun.misc.Launcher$ExtClassLoader@614ca7df
****            URLs: ArraySeq(file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/sunec.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/nashorn.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/cldrdata.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/jfxrt.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/dnsns.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/localedata.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/jaccess.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/zipfs.jar, file:/Library/Java/Extensions/RXTXcomm.jar, file:/Library/Java/Extensions/librxtxSerial.jnilib, file:/System/Library/Java/Extensions/MRJToolkit.jar)
**** Predef: List(file:/Users/szeiger/code/scala/build/quick/classes/library/scala/collection/immutable/Set$.class)
**** Set$ ClassLoader: java.net.URLClassLoader@3dfc492c
**** varargs class is: scala.collection.immutable.Seq => true
[error] java.lang.NoSuchMethodError: scala.collection.immutable.Set$.apply(Lscala/collection/Seq;)Ljava/lang/Object;
[error] 	at org.scalacheck.Test$$anon$4$OptMinSuccess$.<init>(Test.scala:231)
[error] 	at org.scalacheck.Test$$anon$4.OptMinSuccess$lzycompute$1(Test.scala:229)
[error] 	at org.scalacheck.Test$$anon$4.OptMinSuccess(Test.scala:229)
[error] 	at org.scalacheck.Test$$anon$4.<init>(Test.scala:270)
[error] 	at org.scalacheck.Test$.cmdLineParser$lzycompute(Test.scala:228)
[error] 	at org.scalacheck.Test$.cmdLineParser(Test.scala:228)
[error] 	at org.scalacheck.CustomScalaCheckFramework$$anon$5.<init>(CustomScalaCheckRunner.scala:219)
[error] 	at org.scalacheck.CustomScalaCheckFramework.runner(CustomScalaCheckRunner.scala:183)
[error] 	at sbt.Defaults$.$anonfun$createTestRunners$1(Defaults.scala:944)
[error] 	at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:233)
[error] 	at scala.collection.immutable.Map$Map1.foreach(Map.scala:125)
[error] 	at scala.collection.TraversableLike.map(TraversableLike.scala:233)
[error] 	at scala.collection.TraversableLike.map$(TraversableLike.scala:226)
[error] 	at scala.collection.AbstractTraversable.map(Traversable.scala:104)
[error] 	at sbt.Defaults$.createTestRunners(Defaults.scala:938)
[error] 	at sbt.Defaults$.allTestGroupsTask(Defaults.scala:1000)
[error] 	at sbt.Defaults$.$anonfun$testTasks$10(Defaults.scala:756)
[error] 	at scala.Function1.$anonfun$compose$1(Function1.scala:44)
[error] 	at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:40)
[error] 	at sbt.std.Transform$$anon$4.work(System.scala:67)
[error] 	at sbt.Execute.$anonfun$submit$2(Execute.scala:269)
[error] 	at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error] 	at sbt.Execute.work(Execute.scala:278)
[error] 	at sbt.Execute.$anonfun$submit$1(Execute.scala:269)
[error] 	at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:178)
[error] 	at sbt.CompletionService$$anon$2.call(CompletionService.scala:37)
[error] 	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error] 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[error] 	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error] 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[error] 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[error] 	at java.lang.Thread.run(Thread.java:748)
[error] (scalacheck / Test / executeTests) java.lang.NoSuchMethodError: scala.collection.immutable.Set$.apply(Lscala/collection/Seq;)Ljava/lang/Object;

The ClasspathFilter at the top of the chain contains the correct classpath for the tests but its parent is a DualLoader which has the unwanted scala-library in parentA (java.net.URLClassLoader@3dfc492c). This is the classloader through which scala-library classes are loaded, as verified by printing the classloader that loaded the wrong scala.collection.immutable.Set$.

This doesn't happen with our JUnit tests. Here's the scalacheck definition:
lazy val scalacheck = project.in(file("test") / "scalacheck")
  .dependsOn(library, reflect, compiler, scaladoc, scalacheckLib)
  .settings(clearSourceAndResourceDirectories)
  .settings(commonSettings)
  .settings(disableDocs)
  .settings(disablePublishing)
  .settings(
    // enable forking to workaround https://github.com/sbt/sbt/issues/4009
    fork in Test := true,
    autoScalaLibrary in Test := false,
    // customise framework for early access to https://github.com/rickynils/scalacheck/pull/388
    // TODO remove this when we upgrade scalacheck
    testFrameworks := Seq(TestFramework("org.scalacheck.CustomScalaCheckFramework")),
    javaOptions in Test += "-Xss1M",
    //Make scalacheck print full stack traces
    testOptions in Test += Tests.Argument(TestFramework("org.scalacheck.CustomScalaCheckFramework"), "-verbosity", "2"),
    unmanagedSourceDirectories in Compile := Nil,
    unmanagedSourceDirectories in Test := List(baseDirectory.value)
  )

lazy val scalacheckLib = project.in(file("src") / "scalacheck")
  .dependsOn(library)
  .settings(clearSourceAndResourceDirectories)
  .settings(commonSettings)
  .settings(disableDocs)
  .settings(disablePublishing)
  .settings(
    name := "scalacheck-lib",
    libraryDependencies += testInterfaceDep
  )

As soon as I add the scalacheckLib dependency to the JUnit project, it also fails. An exact copy of the scalacheckLib project with an empty source folder does not fail.  So the condition seems to be that you get the wrong classpath when you have a dependency on a project with Scala sources (even though all projects have autoScalaLibrary := false).

OTOH, all the other projects it depends on are also Scala projects. I don't see anything special about scalacheckLib (with source files in it) that would make it different.

I've done some more experiments with some strange results. Putting a new framework into the scalacheckLib project:
import sbt.testing.Fingerprint;
import sbt.testing.Framework;
import sbt.testing.Runner;

public class JumpstartFramework implements Framework {
    private Framework framework;

    public JumpstartFramework() throws Exception {
        System.err.println("***** Initializing "+this+" from "+getClass().getClassLoader());
        //this.framework = (Framework)Class.forName("org.scalacheck.CustomScalaCheckFramework").newInstance();
        this.framework = (Framework)Class.forName("com.novocode.junit.JUnitFramework").newInstance();
    }

    @Override
    public String name() {
        return framework.name();
    }

    @Override
    public Fingerprint[] fingerprints() {
        System.err.println("***** fingerprints() in "+this);
        return framework.fingerprints();
    }

    @Override
    public Runner runner(String[] strings, String[] strings1, ClassLoader classLoader) {
        System.err.println("***** runner() in "+this+" with classLoader "+classLoader);
        return framework.runner(strings, strings1, classLoader);
    }
}

Adding it as a JAR to our existing JUnit test project and overriding the framework to only use the JumpstartFramework:
    unmanagedJars in Test += (packageBin in Compile in scalacheckLib).value,
    testFrameworks := Seq(TestFramework("JumpstartFramework")),

This runs the tests with the desired classpath, same as the plain JUnitFramework. But note the double initialization! First it is initialized with the "bad" classpath and then again with the good one:
sbt:root> junit/testOnly *Array* -- *foo* +v
[info] Compiling 1 Java source to /Users/szeiger/code/scala/build/quick/classes/scalacheckLib ...
[info] Done compiling.
[info] Packaging /Users/szeiger/code/scala/target/scalacheckLib/scalacheck-lib-2.13.0-pre-SNAPSHOT.jar ...
[info] Done packaging.
***** Initializing JumpstartFramework@b83bebc from URLClassLoader with NativeCopyLoader with RawResources(
  urls = List(/Users/szeiger/code/scala/target/junit/test-classes, /Users/szeiger/code/scala/build/quick/classes/junit, /Users/szeiger/code/scala/build/quick/classes/library, /Users/szeiger/code/scala/build/quick/classes/reflect, /Users/szeiger/code/scala/build/quick/classes/compiler, /Users/szeiger/code/scala/build/quick/classes/partest, /Users/szeiger/code/scala/build/quick/classes/scalap, /Users/szeiger/code/scala/build/quick/classes/repl-frontend, /Users/szeiger/code/scala/build/quick/classes/repl, /Users/szeiger/code/scala/build/quick/classes/interactive, /Users/szeiger/code/scala/build/quick/classes/scaladoc, /Users/szeiger/code/scala/target/scalacheckLib/scalacheck-lib-2.13.0-pre-SNAPSHOT.jar, /Users/szeiger/.ivy2/cache/org.scala-lang.modules/scala-asm/bundles/scala-asm-7.0.0-scala-1.jar, /Users/szeiger/.ivy2/cache/jline/jline/jars/jline-2.14.6.jar, /Users/szeiger/.ivy2/cache/org.scala-sbt/test-interface/jars/test-interface-1.0.jar, /Users/szeiger/.ivy2/cache/com.googlecode.java-diff-utils/diffutils/jars/diffutils-1.3.0.jar, /Users/szeiger/.ivy2/cache/junit/junit/jars/junit-4.12.jar, /Users/szeiger/.ivy2/cache/org.hamcrest/hamcrest-core/jars/hamcrest-core-1.3.jar, /Users/szeiger/.ivy2/cache/org.openjdk.jol/jol-core/jars/jol-core-0.9.jar, /Users/szeiger/.ivy2/local/com.novocode/junit-interface/0.11/jars/junit-interface.jar),
  parent = DualLoader(a = java.net.URLClassLoader@5e90f38e, b = java.net.URLClassLoader@5649fd9b),
  resourceMap = Set(app.class.path, boot.class.path),
  nativeTemp = /var/folders/xy/my9ncw393rs6q08_th_5c8w80000gn/T/sbt_58408784/sbt_e363868
)
***** fingerprints() in JumpstartFramework@b83bebc
***** runner() in JumpstartFramework@b83bebc with classLoader ClasspathFilter(
  parent = URLClassLoader with NativeCopyLoader with RawResources(
  urls = List(/Users/szeiger/code/scala/target/junit/test-classes, /Users/szeiger/code/scala/build/quick/classes/junit, /Users/szeiger/code/scala/build/quick/classes/library, /Users/szeiger/code/scala/build/quick/classes/reflect, /Users/szeiger/code/scala/build/quick/classes/compiler, /Users/szeiger/code/scala/build/quick/classes/partest, /Users/szeiger/code/scala/build/quick/classes/scalap, /Users/szeiger/code/scala/build/quick/classes/repl-frontend, /Users/szeiger/code/scala/build/quick/classes/repl, /Users/szeiger/code/scala/build/quick/classes/interactive, /Users/szeiger/code/scala/build/quick/classes/scaladoc, /Users/szeiger/code/scala/target/scalacheckLib/scalacheck-lib-2.13.0-pre-SNAPSHOT.jar, /Users/szeiger/.ivy2/cache/org.scala-lang.modules/scala-asm/bundles/scala-asm-7.0.0-scala-1.jar, /Users/szeiger/.ivy2/cache/jline/jline/jars/jline-2.14.6.jar, /Users/szeiger/.ivy2/cache/org.scala-sbt/test-interface/jars/test-interface-1.0.jar, /Users/szeiger/.ivy2/cache/com.googlecode.java-diff-utils/diffutils/jars/diffutils-1.3.0.jar, /Users/szeiger/.ivy2/cache/junit/junit/jars/junit-4.12.jar, /Users/szeiger/.ivy2/cache/org.hamcrest/hamcrest-core/jars/hamcrest-core-1.3.jar, /Users/szeiger/.ivy2/cache/org.openjdk.jol/jol-core/jars/jol-core-0.9.jar, /Users/szeiger/.ivy2/local/com.novocode/junit-interface/0.11/jars/junit-interface.jar),
  parent = DualLoader(a = java.net.URLClassLoader@5e90f38e, b = java.net.URLClassLoader@5649fd9b),
  resourceMap = Set(app.class.path, boot.class.path),
  nativeTemp = /var/folders/xy/my9ncw393rs6q08_th_5c8w80000gn/T/sbt_58408784/sbt_e363868
)
  root = sun.misc.Launcher$AppClassLoader@75b84c92
  cp = Set(/Users/szeiger/code/scala/build/quick/classes/scalap, /Users/szeiger/code/scala/build/quick/classes/partest, /Users/szeiger/code/scala/build/quick/classes/compiler, /Users/szeiger/.ivy2/cache/org.scala-lang.modules/scala-asm/bundles/scala-asm-7.0.0-scala-1.jar, /Users/szeiger/.ivy2/cache/org.openjdk.jol/jol-core/jars/jol-core-0.9.jar, /Users/szeiger/.ivy2/cache/jline/jline/jars/jline-2.14.6.jar, /Users/szeiger/.ivy2/cache/org.scala-sbt/test-interface/jars/test-interface-1.0.jar, /Users/szeiger/code/scala/build/quick/classes/reflect, /Users/szeiger/.ivy2/local/com.novocode/junit-interface/0.11/jars/junit-interface.jar, /Users/szeiger/code/scala/build/quick/classes/scaladoc, /Users/szeiger/.ivy2/cache/org.hamcrest/hamcrest-core/jars/hamcrest-core-1.3.jar, /Users/szeiger/.ivy2/cache/com.googlecode.java-diff-utils/diffutils/jars/diffutils-1.3.0.jar, /Users/szeiger/.ivy2/cache/junit/junit/jars/junit-4.12.jar, /Users/szeiger/code/scala/target/scalacheckLib/scalacheck-lib-2.13.0-pre-SNAPSHOT.jar, /Users/szeiger/code/scala/build/quick/classes/interactive, /Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/test-interface-1.0.jar, /Users/szeiger/code/scala/build/quick/classes/junit, /Users/szeiger/code/scala/target/junit/test-classes, /Users/szeiger/code/scala/build/quick/classes/repl-frontend, /Users/szeiger/code/scala/build/quick/classes/repl, /Users/szeiger/code/scala/build/quick/classes/library)
)
***** Initializing JumpstartFramework@3f91beef from sun.misc.Launcher$AppClassLoader@330bedb4
***** fingerprints() in JumpstartFramework@3f91beef
***** runner() in JumpstartFramework@3f91beef with classLoader sun.misc.Launcher$AppClassLoader@330bedb4
****  ClassLoader: sun.misc.Launcher$AppClassLoader@330bedb4
****  URLs: ArraySeq(file:/Users/szeiger/code/scala/target/junit/test-classes/, file:/Users/szeiger/code/scala/build/quick/classes/junit, file:/Users/szeiger/code/scala/build/quick/classes/library/, file:/Users/szeiger/code/scala/build/quick/classes/reflect/, file:/Users/szeiger/code/scala/build/quick/classes/compiler/, file:/Users/szeiger/code/scala/build/quick/classes/partest/, file:/Users/szeiger/code/scala/build/quick/classes/scalap/, file:/Users/szeiger/code/scala/build/quick/classes/repl-frontend/, file:/Users/szeiger/code/scala/build/quick/classes/repl/, file:/Users/szeiger/code/scala/build/quick/classes/interactive/, file:/Users/szeiger/code/scala/build/quick/classes/scaladoc/, file:/Users/szeiger/code/scala/target/scalacheckLib/scalacheck-lib-2.13.0-pre-SNAPSHOT.jar, file:/Users/szeiger/.ivy2/cache/org.scala-lang.modules/scala-asm/bundles/scala-asm-7.0.0-scala-1.jar, file:/Users/szeiger/.ivy2/cache/jline/jline/jars/jline-2.14.6.jar, file:/Users/szeiger/.ivy2/cache/org.scala-sbt/test-interface/jars/test-interface-1.0.jar, file:/Users/szeiger/.ivy2/cache/com.googlecode.java-diff-utils/diffutils/jars/diffutils-1.3.0.jar, file:/Users/szeiger/.ivy2/cache/junit/junit/jars/junit-4.12.jar, file:/Users/szeiger/.ivy2/cache/org.hamcrest/hamcrest-core/jars/hamcrest-core-1.3.jar, file:/Users/szeiger/.ivy2/cache/org.openjdk.jol/jol-core/jars/jol-core-0.9.jar, file:/Users/szeiger/.ivy2/local/com.novocode/junit-interface/0.11/jars/junit-interface.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/test-agent-1.2.7.jar, file:/Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/test-interface-1.0.jar)
****    parent: sun.misc.Launcher$ExtClassLoader@481f552d
****    URLs: ArraySeq(file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/sunec.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/nashorn.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/cldrdata.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/jfxrt.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/dnsns.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/localedata.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/jaccess.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/ext/zipfs.jar, file:/Library/Java/Extensions/RXTXcomm.jar, file:/Library/Java/Extensions/librxtxSerial.jnilib, file:/System/Library/Java/Extensions/MRJToolkit.jar)
**** Predef: List(file:/Users/szeiger/code/scala/build/quick/classes/library/scala/collection/immutable/Set$.class)
**** Set$ ClassLoader: sun.misc.Launcher$AppClassLoader@330bedb4
**** varargs class is: scala.collection.Seq => false
[info] Passed: Total 1, Failed 0, Errors 0, Passed 1
[success] Total time: 4 s, completed Feb 6, 2019 3:41:17 PM
sbt:root>

Swapping the initialization of framework in the constructor results in only the first run, followed by the failure (so presumably it never gets around to restarting it with the correct classpath):
sbt:root> junit/testOnly *Array* -- *foo* +v
[info] Compiling 1 Java source to /Users/szeiger/code/scala/build/quick/classes/scalacheckLib ...
[info] Done compiling.
[info] Packaging /Users/szeiger/code/scala/target/scalacheckLib/scalacheck-lib-2.13.0-pre-SNAPSHOT.jar ...
[info] Done packaging.
***** Initializing JumpstartFramework@46380b39 from URLClassLoader with NativeCopyLoader with RawResources(
  urls = List(/Users/szeiger/code/scala/target/junit/test-classes, /Users/szeiger/code/scala/build/quick/classes/junit, /Users/szeiger/code/scala/build/quick/classes/library, /Users/szeiger/code/scala/build/quick/classes/reflect, /Users/szeiger/code/scala/build/quick/classes/compiler, /Users/szeiger/code/scala/build/quick/classes/partest, /Users/szeiger/code/scala/build/quick/classes/scalap, /Users/szeiger/code/scala/build/quick/classes/repl-frontend, /Users/szeiger/code/scala/build/quick/classes/repl, /Users/szeiger/code/scala/build/quick/classes/interactive, /Users/szeiger/code/scala/build/quick/classes/scaladoc, /Users/szeiger/code/scala/target/scalacheckLib/scalacheck-lib-2.13.0-pre-SNAPSHOT.jar, /Users/szeiger/.ivy2/cache/org.scala-lang.modules/scala-asm/bundles/scala-asm-7.0.0-scala-1.jar, /Users/szeiger/.ivy2/cache/jline/jline/jars/jline-2.14.6.jar, /Users/szeiger/.ivy2/cache/org.scala-sbt/test-interface/jars/test-interface-1.0.jar, /Users/szeiger/.ivy2/cache/com.googlecode.java-diff-utils/diffutils/jars/diffutils-1.3.0.jar, /Users/szeiger/.ivy2/cache/junit/junit/jars/junit-4.12.jar, /Users/szeiger/.ivy2/cache/org.hamcrest/hamcrest-core/jars/hamcrest-core-1.3.jar, /Users/szeiger/.ivy2/cache/org.openjdk.jol/jol-core/jars/jol-core-0.9.jar, /Users/szeiger/.ivy2/local/com.novocode/junit-interface/0.11/jars/junit-interface.jar),
  parent = DualLoader(a = java.net.URLClassLoader@5e90f38e, b = java.net.URLClassLoader@5649fd9b),
  resourceMap = Set(app.class.path, boot.class.path),
  nativeTemp = /var/folders/xy/my9ncw393rs6q08_th_5c8w80000gn/T/sbt_58408784/sbt_912eee46
)
***** fingerprints() in JumpstartFramework@46380b39
***** runner() in JumpstartFramework@46380b39 with classLoader ClasspathFilter(
  parent = URLClassLoader with NativeCopyLoader with RawResources(
  urls = List(/Users/szeiger/code/scala/target/junit/test-classes, /Users/szeiger/code/scala/build/quick/classes/junit, /Users/szeiger/code/scala/build/quick/classes/library, /Users/szeiger/code/scala/build/quick/classes/reflect, /Users/szeiger/code/scala/build/quick/classes/compiler, /Users/szeiger/code/scala/build/quick/classes/partest, /Users/szeiger/code/scala/build/quick/classes/scalap, /Users/szeiger/code/scala/build/quick/classes/repl-frontend, /Users/szeiger/code/scala/build/quick/classes/repl, /Users/szeiger/code/scala/build/quick/classes/interactive, /Users/szeiger/code/scala/build/quick/classes/scaladoc, /Users/szeiger/code/scala/target/scalacheckLib/scalacheck-lib-2.13.0-pre-SNAPSHOT.jar, /Users/szeiger/.ivy2/cache/org.scala-lang.modules/scala-asm/bundles/scala-asm-7.0.0-scala-1.jar, /Users/szeiger/.ivy2/cache/jline/jline/jars/jline-2.14.6.jar, /Users/szeiger/.ivy2/cache/org.scala-sbt/test-interface/jars/test-interface-1.0.jar, /Users/szeiger/.ivy2/cache/com.googlecode.java-diff-utils/diffutils/jars/diffutils-1.3.0.jar, /Users/szeiger/.ivy2/cache/junit/junit/jars/junit-4.12.jar, /Users/szeiger/.ivy2/cache/org.hamcrest/hamcrest-core/jars/hamcrest-core-1.3.jar, /Users/szeiger/.ivy2/cache/org.openjdk.jol/jol-core/jars/jol-core-0.9.jar, /Users/szeiger/.ivy2/local/com.novocode/junit-interface/0.11/jars/junit-interface.jar),
  parent = DualLoader(a = java.net.URLClassLoader@5e90f38e, b = java.net.URLClassLoader@5649fd9b),
  resourceMap = Set(app.class.path, boot.class.path),
  nativeTemp = /var/folders/xy/my9ncw393rs6q08_th_5c8w80000gn/T/sbt_58408784/sbt_912eee46
)
  root = sun.misc.Launcher$AppClassLoader@75b84c92
  cp = Set(/Users/szeiger/code/scala/build/quick/classes/scalap, /Users/szeiger/code/scala/build/quick/classes/partest, /Users/szeiger/code/scala/build/quick/classes/compiler, /Users/szeiger/.ivy2/cache/org.scala-lang.modules/scala-asm/bundles/scala-asm-7.0.0-scala-1.jar, /Users/szeiger/.ivy2/cache/org.openjdk.jol/jol-core/jars/jol-core-0.9.jar, /Users/szeiger/.ivy2/cache/jline/jline/jars/jline-2.14.6.jar, /Users/szeiger/.ivy2/cache/org.scala-sbt/test-interface/jars/test-interface-1.0.jar, /Users/szeiger/code/scala/build/quick/classes/reflect, /Users/szeiger/.ivy2/local/com.novocode/junit-interface/0.11/jars/junit-interface.jar, /Users/szeiger/code/scala/build/quick/classes/scaladoc, /Users/szeiger/.ivy2/cache/org.hamcrest/hamcrest-core/jars/hamcrest-core-1.3.jar, /Users/szeiger/.ivy2/cache/com.googlecode.java-diff-utils/diffutils/jars/diffutils-1.3.0.jar, /Users/szeiger/.ivy2/cache/junit/junit/jars/junit-4.12.jar, /Users/szeiger/code/scala/target/scalacheckLib/scalacheck-lib-2.13.0-pre-SNAPSHOT.jar, /Users/szeiger/code/scala/build/quick/classes/interactive, /Users/szeiger/.sbt/boot/scala-2.12.7/org.scala-sbt/sbt/1.2.7/test-interface-1.0.jar, /Users/szeiger/code/scala/build/quick/classes/junit, /Users/szeiger/code/scala/target/junit/test-classes, /Users/szeiger/code/scala/build/quick/classes/repl-frontend, /Users/szeiger/code/scala/build/quick/classes/repl, /Users/szeiger/code/scala/build/quick/classes/library)
)

OK, here's what's happening:

The actual bug only affects non-forked tests. You get the correct classpath when running forked.
...in theory, because even when running the tests forked, sbt still fully initializes a test Framework and Runner with the wrong classpath before forking.

The workaround is to use a proxy for the framework that does the initialization lazily:
import sbt.testing.*;

public class LazyFramework implements Framework {
    private final Framework framework;

    public LazyFramework() throws Exception {
        this.framework = (Framework)Class.forName("org.scalacheck.CustomScalaCheckFramework").newInstance();
    }

    public String name() { return framework.name(); }
    public Fingerprint[] fingerprints() { return framework.fingerprints(); }
    public Runner runner(String[] strings, String[] strings1, ClassLoader classLoader) {
        return new LazyRunner(framework, strings, strings1, classLoader);
    }
}

class LazyRunner implements Runner {
    private Runner _runner;
    private final Framework framework;
    private final String[] args, remoteArgs;
    private final ClassLoader classLoader;

    public LazyRunner(Framework framework, String[] args, String[] remoteArgs, ClassLoader classLoader) {
        this.framework = framework;
        this.args = args;
        this.remoteArgs = remoteArgs;
        this.classLoader = classLoader;
    }

    private Runner runner() {
        if(_runner == null) _runner = framework.runner(args, remoteArgs, classLoader);
        return _runner;
    }

    public Task[] tasks(TaskDef[] taskDefs) { return runner().tasks(taskDefs); }
    public String done() { if(_runner != null) return _runner.done(); else return "(no runner)"; }
    public String[] remoteArgs() { return remoteArgs; }
    public String[] args() { return args; }
}

The fingerprints may still be a problem. They are fine in my specific case so I didn't pursue this any further.

@szeiger this is interesting. My WAG, so take it with a grain of salt, is that tab completions are what is causing the framework to be loaded twice. It may be possible to run the code for extracting the test class names using reflection to avoid loading the framework with the main application class loader. Either way, I reworked how class loaders are set up for run and test in https://github.com/sbt/sbt/pull/4476. Would you mind trying with a nightly build: sbt -Dsbt.version=1.3.0-bin-20190203T202003? There are a number of different strategies for building the test class loader described in https://github.com/sbt/sbt/blob/develop/main/src/main/scala/sbt/ClassLoaderLayeringStrategy.scala. A simple thing to try is set Test/classLoaderLayeringStrategy := ClassLoaderLayeringStrategy.Flat.

@eatkins Do I need to add a new bootstrap repository? sbt can't find that version.

Oh, yeah, I think you might need sbt >= 1.2.4 for automatic nightly resolution: https://developer.lightbend.com/blog/2018-10-08-sbt-1-2-4-and-nightly-builds/

@eatkins Switching to 1.3.0-bin-20190203T202003 does not make a difference by itself. The framework still gets initialized with the wrong classloader. It does work when I switch to ClassLoaderLayeringStrategy.Flat.

@szeiger thanks for reporting back. That is more or less what I was expecting. I can probably get this working before sbt 1.3.0 but, if not, it should be fixable in a minor release.

Btw, this seems to be still present.  I had to fork tests when switching to a nightly Scala version, like is done in the scala/scala build, in order for it to work: https://github.com/scala/scala-rewrites/blob/c5d5f5cffe9a400e4dda26f5d1871ab78bf742fd/build.sbt#L48.


Picker: Give the designer control over out-of-stock picking

Feature Request
Used to be: Never pick OOS
Now is: Always accept OOS
Should be: Flags for

Prefer in-stock : Default True
Accept/Don't accept OOS: Default Accept with warning

Add trait to override default behavior
Code of Conduct

[X] I agree to follow this project's Code of Conduct

Perhaps an out of stock cost is most accurate?


curl: fix infinite recursion in staging-next

Description of changes
Fixes the infinite recursion in staging-next #257792. Built both Python 3 and curl.
Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[x] x86_64-darwin
[x] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

It's a thing not changed in this PR, but I find it confusing that the fetchurlBoot defined in pkgs/stdenv/darwin/default.nix is actually an almost-normal fetchurl, not like on linux where it's mostly built-in from nix.

The recursion issue had been reverted/solved, so I think the main expected benefit of this PR should be in adding those frameworks, which supposedly fixes some issues with macOS 14?
Those issues were reported with 8.3.0 which we already had in nixpkgs master, so let's not be hasty here and keep the current staging-next iteration without this nontrivial change?  Hopefully it could get better review thanks to that.  (I expect it's still desirable to catch 23.11.)

It's a thing not changed in this PR, but I find it confusing that the fetchurlBoot defined in pkgs/stdenv/darwin/default.nix is actually an almost-normal fetchurl, not like on linux where it's mostly built-in from nix.

I tried to change it when I was working on #240433, but the Darwin stdenv bootstrap has dependencies that use fetchpatch and fetchFromGitHub. Even if the patches could be moved in-tree, there’s still the problem of dependencies hosted on GitHub, which need special handling to hash deterministically.

The recursion issue had been reverted/solved, so I think the main expected benefit of this PR should be in adding those frameworks, which supposedly fixes some issues with macOS 14?

It does that, but a more practical benefit to nixpkgs is it makes curl build (more or less) like any other normal package. It will (or should) be able to link whatever frameworks it needs. Future updates that require more should be less painful.

Those issues were reported with 8.3.0 which we already had in nixpkgs master, so let's not be hasty here and keep the current staging-next iteration without this nontrivial change? Hopefully it could get better review thanks to that. (I expect it's still desirable to catch 23.11.)

I retargeted it to staging. I’d personally rank this change behind #241692 and #256590 for 23.11, but I otherwise agree it’s desirable because it will make backporting curl updates to 23.11 much easier (especially if they happen to require additional frameworks).


Wall Torches do not drop anything when broken

Aquatic torches when placed on the top surface of a block drop as normal, but when placed on the side of a block and destroyed, they do not drop anything at all.

for me they dont even drop when placed on top of a block. (aquatictorches-1.20.1-fabric-1.0.1.jar)

Yeah, I can't get them to drop no matter how I place them.

Me, neither. They don't drop anything whereever they are placed.

is this ever gonna get fixed?

Still happening for 1.20.1 Fabric. Will probably look for alternatives instead.


Verification failed, probably due to a bug

As I couldn't find which openssl version (or OS for that matter) you require to run this project, I tried running with OpenSSL 1.0.2g... is that fine?
Anyway, I get:
$ ./clone-cert.sh cert.pem
Verification failed, probably due to a bug

So I changed to set -o xtrace and it seems to run quite far but then:
$ ./clone-cert.sh cert.pem
[...]
+ diff -q /dev/fd/63 /dev/fd/62
++ openssl x509 -in cert.pem.cert -pubkey -noout
++ openssl rsa -in cert.pem.key -pubout
+ openssl verify -CAfile cert.pem.CA.cert cert.pem.cert
+ echo Verification failed, probably due to a bug
Verification failed, probably due to a bug

Running only the verification:
$ openssl verify -CAfile cert.pem.CA.cert cert.pem.cert
cert.pem.cert: C = DE, O = EXAMP AG, OU = YxxxxxxxYxxxxxxx, CN = EXAMP-Yxxxxxxx Yxxxxxx AG, UID = 12344e8f-1034-2e81-7c3f-e516bf364951
error 20 at 0 depth lookup:unable to get local issuer certificate

Any ideas?

I encountered an issue with openssl 1.0.x that I didn't have with openssl 1.1.1, so you might want to give that a shot. It had to do with the -addext option of openssl req. I though I fixed it though.
Hard to say what went wrong without having the actual certificate. A known issue is if the cert is holding an ECC public key but was signed with an RSA key or vice versa. Could that be the case with your cert?


ODH 2.9 Release Tracker

Links to tracker issues for components planning updates in this.  Please update you manifests before March 8th

[ ]  ODH Operator
[x]  ODH Dashboard
[x]  Workbench
[x]  Data Science Pipelines
[x]  Model Serving
[x]  AI Explainability
[x]  Distributed Workloads

[ ] Codeflare
[ ] Kuberay
[ ] Kueue

[x] Model Registry

DSP should point towards: v2.0.0
We will also need the following PR merged by operator team: https://github.com/opendatahub-io/opendatahub-operator/pull/891/files

Correction, it will need to be v2.0.1

Dashboard release:

Release Notes: https://github.com/opendatahub-io/odh-dashboard/releases/tag/v2.21.1-incubation
Release Branch: https://github.com/opendatahub-io/odh-dashboard/tree/v2.21.1-incubation-release

Please release off the branch.
Dependency for release is an Operator PR: https://github.com/opendatahub-io/opendatahub-operator/pull/871

Kueue:

Tag: https://github.com/opendatahub-io/kueue/tree/v0.6.0-rhoai-2.9
Release: https://github.com/opendatahub-io/kueue/releases/tag/v0.6.0-rhoai-2.9

KubeRay:

Tag: https://github.com/opendatahub-io/kuberay/tree/v1.0.0-rhoai
Release: https://github.com/opendatahub-io/kuberay/releases/tag/v1.0.0-rhoai

Workbench IDE:
Notebooks
Tags: v1.15.0
Release-Note: https://github.com/opendatahub-io/notebooks/releases/tag/v1.14.0
Notebook-controller:
Tags: v1.7.0-7
Release-Note: https://github.com/opendatahub-io/kubeflow/releases/tag/v1.7.0-7
Please point the operator to these versions for the workbenches.
Thank you for your patience.

Hi All, @Jooho @heyselbi @astefanutti @dimakis @harshad16 @dhirajsb @ruivieira
Please provide updated release manifests or confirm if we need to use previous version of the manifests for Monday release.

@VaishnaviHire we are working on it. We will update them by the end of today if that's okay.

Hi, @VaishnaviHire
Below are the release manifests

kserve:

Tag: https://github.com/opendatahub-io/kserve/tree/v<IP_ADDRESS>
Release: https://github.com/opendatahub-io/kserve/releases/tag/v<IP_ADDRESS>

modelmesh-serving:

Tag: https://github.com/opendatahub-io/modelmesh-serving/tree/v<IP_ADDRESS>
Release: https://github.com/opendatahub-io/modelmesh-serving/releases/tag/v<IP_ADDRESS>

Other dependent repos:

modelmesh:

Tag: https://github.com/opendatahub-io/modelmesh/tree/v<IP_ADDRESS>
Release: https://github.com/opendatahub-io/modelmesh/releases/tag/v<IP_ADDRESS>

rest-proxy:

Tag: https://github.com/opendatahub-io/rest-proxy/tree/v<IP_ADDRESS>
Release: https://github.com/opendatahub-io/rest-proxy/releases/tag/v<IP_ADDRESS>

modelmesh-runtime-adapter:

Tag: https://github.com/opendatahub-io/modelmesh-runtime-adapter/tree/v<IP_ADDRESS>
Release: https://github.com/opendatahub-io/modelmesh-runtime-adapter/releases/tag/v<IP_ADDRESS>

odh-model-controller:

Tag: https://github.com/opendatahub-io/odh-model-controller/tree/v<IP_ADDRESS>
Release: https://github.com/opendatahub-io/odh-model-controller/releases/tag/v<IP_ADDRESS>

cc @Jooho @davidesalerno @israel-hdez

Hi @VaishnaviHire ,
The latest model-registry release version is v0.1.2:
Tag: https://github.com/opendatahub-io/model-registry-operator/releases/tag/v0.1.2
Release Branch: https://github.com/opendatahub-io/model-registry-operator/tree/release/v0.1.2

CodeFlare:

Tag: https://github.com/opendatahub-io/codeflare-operator/tree/v1.2.0
Release: https://github.com/opendatahub-io/codeflare-operator/releases/tag/v1.2.0

https://github.com/opendatahub-io/opendatahub-operator/releases/tag/v2.9.0


Allow users who manually report posts to specify an optional reason to be posted in Smokey's message

I'd like to propose a new feature for SmokeDetector, to allow users who file manual reports to specify an optional reason when doing so. Manual reports are usually filed because the post is still spam, but evaded Smokey's spam heuristics. Occasionally, it may also not be obvious to other humans that it's in fact spam. For example, this report for a spam seed, which other users giving feedback in other chat rooms may not know is a spam seed unless they bothered to go into Charcoal HQ and look it up.
Implementing this would allow the reporter to supply a reason indicating that the post is a spam seed, which would be shown in the metasmoke page for the manual report, and in Smokey's messages in all chat rooms.
In my mind, this would look like this:
!!/report [link] "[reason]" [link] "[reason]"...

An example report would be:
!!/report https://meta.stackexchange.com/q/3122 "PST repair spam"

Summary:
I think this is doable, but the amount of complexity we'll have to have in the processing logic for this will make the code coverage/complexity much higher than we would probably like.
Technical details on the implementation are below, but they do not take into consideration whether MetaSmoke will have any issues with this implementation.

Implementation Data
In chatcommands.py, the Report command (currently on line #1057) has a function declaration like this:
def report(msg, urls):

... from which we then create a list of URLs inside (on line 1073) with:
urls = list(set(urls.split()))

This set of URLs, then, is iterated over via a for loop as:
for index, url in enumerate(urls, start=1)

... of which each tuple that is returned by enumerate is processed via the single index value for the loop and the URL for report processing.
Therefore, the way this is passed in is that we explicitly take all the arguments sent via !!/report and then use that to populate the urls argument that is passed during the call of the report command by splitting on space-delimitation (i.e. "foo bar baz" being the arguments run through a .split() will return the list of ["foo", "bar", "baz"] with the way we're doing the current URL list population).
From SmokeDetector's point of view, this is easily doable, at least for splitting these cases down.  Now, there are four specific cases I look at and build upon, and we're assuming that msgargs is going to have all the arguments that were passed to the report function as part of its declaration, and we'll build 'reports' instead of URLs:

Case 1: Multiple URLs being reported, each with its own defined reason: Doable, but not nice
Let's take a look at your first case, operating under the assumption that puts a specific reason for each report.  A call of !!/report foo.com/fudge "bar baz" foo.com/yay "foo bar" would end up with msgargs passed into such redefined function as this string: foo.com/fudge "bar baz" foo.com/yay "foo bar"
Let's take that and preprocess it (assume that msgargs is the variable in the function definition):
reports = []
reportraw = msgargs.split('" ')
for report in reportraw:
    reportdata = report.split(' "')
    reports.append((reportdata[0],reportdata[1]))

... will have a reports object containing tuples, which ends up like this *the 'pretty print' is my doing):
[('foo.com/fudge', 'bar baz'),
 ('foo.com/yay', 'foo bar"')]

... whereby each tuple can be handled properly.  This is able to be handled, but not very kindly in loops (the handling of which is irrelevant here for now).

Case 2: A single URL is reported without a reason.
Now, let's look at your second case.  The above code works, but we need to adjust it little for a bare !!/report foo.com/fudge call to handle there not being a quote character in it:
reports = []
reportraw = msgargs.split('" ')
for report in reportraw:
    if '"' in report:
        reportdata = report.split(' "')
        reportdata[1] = reportdata[1].replace('"', '')
        reports.append((reportdata[0],reportdata[1]))
    else:
        reports.append((report, None))

Case 3: Multiple URLs with a single report reason at the end:
This would happen if !!/report url1 url2 url3 "global report reason for all" happens, as the reportraw value would be ['foo.com/one foo.com/fudge "bar baz"'].
Now, this we can do, but the above code wouldn't work for it.  For just this case, the split code is:
reports = []
reportraw = msgargs.split('" ')
for report in reportraw:
    reportdata = report.split(' "')
    reportdata[1] = reportdata[1].replace('"', '')
    if ' ' in reportdata[0]:
        reporturls = reportdata[0].split()
        for url in reporturls:
            reports.append((url, reportdata[1].replace('"','')))
    else:
        reports.append((reportdata[0], reportdata[1].replace('"','')))

... and the resultant reports are:
[('foo.com/one', 'bar baz'),
 ('foo.com/fudge', 'bar baz')]

And this is usable and doable.

Case 4: Multiple URLs, but each URL does not have an explicit reason set next to it
Now, this is the truly evil case.  We basically have to hybridize all the cases together and have a really evil bit of code.
Assume someone does this with !!/report foo.com/one foo.com/fudge "bar baz" foo.com/yay "foo bar", which is entirely possible.
reportraw would end up being this:
['foo.com/one foo.com/fudge "bar baz', 'foo.com/yay "foo bar"']

... and then when we try and split this down further using the rest of the script, reports ends up as:
[('foo.com/one foo.com/fudge', 'bar baz'),
 ('foo.com/yay', 'foo bar"')]

So now, we have to do an iterative version of the processing that Case 3 has:
reports = []
reportraw = msgargs.split('" ')
for report in reportraw:
    if '"' in report:
        reportdata = report.split(' "')
        reportdata[1] = reportdata[1].replace('"', '')
        if ' ' in reportdata[0]:
            reporturls = reportdata[0].split()
            for url in reporturls:
                reports.append((url, reportdata[1]))
        else:
            reports.append((reportdata[0], reportdata[1]))
    else:
        reports.append((report, None))

Just keep in mind how complicated this logic got.  And how quickly, nonetheless.

Assuming we have the code from the last test-case, then in theory instead of looping over the for url in enumerate(urls, start=1): that we had for processing, we'd instead have to do for report in enumerate(reports, start=1):, and then change the behavior for this loop, such that the loop at line 1081 becomes:
for index, report in enumerate(reports, start=1):
    url = rebuild_url(report[0])
    post = api_get_post(url)
    reason = report[1]

    ...  # The rest of the code is otherwise the same until we get to line 1119 in the existing code...

    if reason:
        why_info = u"Post manually reported by user *{}* in room *{}* with reason *'{}'*.\n".format(msg.owner.name, msg.room.name, reason)
    else:
        why_info = u"Post manually reported by user *{}* in room *{}*.\n".format(msg.owner.name, msg.room.name)

    ... # The rest of the code for the function is the same.

This is doable.  But this doesn't take into consideration how MetaSmoke handles this report.

@ArtOfCode- or @Undo1:
I'd like your input on the above, before we even begin attempting implementation of this.  It is doable, but whether we need this or not is a question that I would like one of you to review both for whether this is needed, and whether MetaSmoke will complain about these changes when it sees the reasons.

NOTE on implementation that wherever we get the URLs passed into the report function could do the preprocessing steps, too, but the increase in code logic and complexity will still be substantial regardless

My opinion: only implement cases 2 (which is how it is now) and 3. Either no reason or one reason for all URLs. If someone wants separate reasons for their reports, then issues multiple commands with individual reasons.
This reduces code complexity and syntax needed to issue a command. As much as we like to star commands of multiple reports due to their complexity, it is error prone. This will be the same. I prefer to not allow that complexity.

Yeah, you shouldn't do a batch report of posts that aren't related to each other in some way

I agree on implementing both cases 2 and 3, in that we only accept the following cases:
!!/report URL
!!/report URL1 URL2
!!/report URL "Reason Here"
!!/report URL1 URL2 "Reason Here"

This covers both the existing functionalities, and just adds reason processing on top of it (rather than all 4 of the test cases I provided in my longer post, as I was only including 'new' functionality in that post)
But, I think we need a little more info on how MS is going to handle the report when it's handed off to the backend to be processed... that's really key here.  We can always handle splitting of URLs and reason(s) to before we receive data in the report command, so that when we're parsing the data to pass that happens.

@quartata brought up a good point, "What if someone includes  " in the reason itself?" and that there may be a user or two having issues here.
The logic I wrote would still work, but instead of making tuples for handling, we'd just split out the urls and the reasons, and then do reason = ' "'.join(reportraw[1:]) which would work then, but there's a few potential ways to implement.  I'll draw up some code for consideration in a separate branch, then include it here for consideration.

Wait...are we having these reasons as official MS reasons or just using
them to give to Smokey to provide context when it reposts the link
elsewhere?
Saving these reasons sounds like a horrible idea. They won't be
standardized and will have typos, capitalization differences, etc. I bet
you given just a bit of time we could also find an exploit.
On Fri, Apr 6, 2018, 6:40 PM Thomas Ward<EMAIL_ADDRESS>wrote:

@quartata https://github.com/quartata brought up a good point, "What if
someone includes " in the reason itself?" and that there may be a user or
two having issues here.
The logic I wrote would still work, but instead of making tuples for
handling, we'd just split out the urls and the reasons, and then do reason
= ' "'.join(reportraw[1:]) which would work then, but there's a few
potential ways to implement. I'll draw up some code for consideration in a
separate branch, then include it here for consideration.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/Charcoal-SE/SmokeDetector/issues/1965#issuecomment-379412013,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AGKb50NC7CvP4gSVEbX8dCKpguAjbkyqks5tl_z-gaJpZM4TJbEm
.

@AWegnerGitHub No.  This 'why' reason is only passed to MetaSmoke and only shows if you do a why response to the specific report message.
But we can test this too, before we incorporate to make sure this is the case.  I'll just have Undo clear out the MS report test cases for the tested items after the tests.

@AWegnerGitHub We just tested this on TCOM ("The Call of Midnight", the unique Test System case for my dev instance), and reports still showed as https://chat.stackexchange.com/transcript/message/43855979#43855979 which is this 'raw' message posted in the chat room:
[ [SmokeDetector](//goo.gl/eLDYqh) | [MS](//m.erwaysoftware.com/posts/by-url?url=//askubuntu.com/questions/34978) ] Manually reported question (batch report: post 2 out of 2): [Configuring to detect if a command does not exist, suggest installation](//askubuntu.com/questions/34978) by [Thomas Ward](//askubuntu.com/users/10616) on `askubuntu.com`

This worked fine.

I'd be fine with !!/report [link 1] [more links...] "[global reason]".

Regarding posting the reason in all the chat rooms as part of the "Manually reported" posts, I disagree with that being done, because it requires chat messages to be properly formatted, with grammar, etc. being pretty darn perfect. and depending on the length of the custom reason, it could be an issue with chat limits or formatting.  I believe the 'why' response to a message to get details is sufficient enough a method to get the custom reasons, and I dont think this should be expanded to adjust the message sent to all relevant chat rooms on a manual report, as everyone uses the why response command normally, anyways, even on standard capture reasons for details on the report reason/detection.

The above commit was merged, so this has been implemented. Thanks @ArtOfCode- . Closing.


Angular Material 19 compatibility

That is a first try to make that library Angular Material 19 compatible.
It compiles and the examples do not look bad to me.

@GNURub Any change for a Material v19 publish?

@mspeak Maybe you can test my bundle in the meantime?
https://www.npmjs.com/package/@imario42/datetime-picker

@imario42 Will do, just need datetime picker, thanks

Hi @imario42 , how can i test it with the moment adapter?
I tried your version and ngxmc/moment-adapter (^19.0.0):
Could not resolve "@ngxmc/datetime-picker"
node_modules/@ngxmc/moment-adapter/fesm2022/ngxmc-moment-adapter.mjs:5:56:
  5 │ import { NgxMatDateAdapter, NGX_MAT_DATE_FORMATS } from '@ngxmc/datetime-picker';


Stacks with same name being created on rancher when namespaces with same names are deleted and recreated.

Rancher Version: v1.2.0-pre2
Steps to reproduce the the problem:
Create a k8s env with default 1.2 version.
Create a namespace with any name say "hello123".
Create service in this namespace.
This results in a stack being created with name "hello123".
Delete this namespace. (This does not result in the stack being deleted .We have this issue to tarck it -  https://github.com/rancher/rancher/issues/5508).
Create a namespace with same name "hello123".
Create service in this namespace.
This results in another stack being created with same name "hello123".
Seems like kubernetes code does not enforce all the checks that API does when creating a stack.
mysql> select id,name,state,created,removed,account_id from environment;
+----+------------------------+---------+---------------------+---------------------+------------+
| id | name                   | state   | created             | removed             | account_id |
+----+------------------------+---------+---------------------+---------------------+------------+
| 15 | hello123               | active  | 2016-09-01 15:11:36 | NULL                |         36 |
| 16 | hello123               | active  | 2016-09-01 15:13:02 | NULL                |         36 |
+----+------------------------+---------+---------------------+---------------------+------------+
16 rows in set (0.00 sec)

@sangeethah This issue is fixed by https://github.com/rancher/cattle/commit/8ef32384fcfa592e011802cb49e785078e1ea8fb
It is in v0.169.0 onwards.

@soumyalj, when you verify this issue , include the K8s version ( and template version) that was used to validate this issue since the fixes may not be available for k8s 1.3 version.

Note to self: Uniqueness constraint on the environment name is not being enforced by k8s agent-event-cattle channel. This needs to be fixed.

As long as https://github.com/rancher/rancher/issues/5508 is fixed, we are fine. Punting this one for now.


Latest git tag is invalid

Rather than a proper version it is just named V.
https://github.com/OpenVoiceOS/ovos-bus-client/releases/tag/V

related hotfix so this issue didnt block pypi releases https://github.com/OpenVoiceOS/ovos-bus-client/commit/629f9ae8709ddd219312deeb276a7c130b96350b


SetBody EIP has 2 id options in the panel

# camel-k: language=yaml

# Write your routes here, for example:
- from:
    uri: "timer:yaml"
    parameters:
      period: "1000"
    steps:
      - setBody:
          constant: "Hello {{myName}} from yaml"
      - log: "${body}"

Then Karavan displays 2 x ID when you select setBody (3.18.0 release)

There is an ID for SetBody EIP DSL Element
and there is an ID for ConstantExpression Element
I think we could remove ID for all expressions from UI.
Agree?

I think we could remove ID for all expressions from UI.
Agree?

Yes


fixup support archive test

Problem:
We should wait properly for EdgeConnect Deployment ready, instead of rely on CR status.
=== Failed
=== FAIL: test/scenarios/standard TestStandard/support-archive/support_archive_subcommand_can_be_executed_correctly_with_managed_logs (13.38s)
    support_archive.go:113:
        	Error Trace:	/runner/_work/dynatrace-operator/dynatrace-operator/target/test/features/support_archive/support_archive.go:113
        	            				/home/runner/go/pkg/mod/sigs.k8s.io/e2e-framework@v0.4.0/pkg/env/env.go:444
        	            				/home/runner/go/pkg/mod/sigs.k8s.io/e2e-framework@v0.4.0/pkg/env/env.go:483
        	Error:      	Should be empty, but was [logs/e2e-test-7b99b5b8fb-5rg4t/edge-connect.log]
        	Test:       	TestStandard/support-archive/support_archive_subcommand_can_be_executed_correctly_with_managed_logs
        	Messages:   	Support archive does not contain all expected files.
    support_archive.go:163: Missing files:
        logs/e2e-test-7b99b5b8fb-5rg4t/edge-connect.log
        --- FAIL: TestStandard/support-archive/support_archive_subcommand_can_be_executed_correctly_with_managed_logs (13.38s)

Test:
make test/e2e/supportarchive

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 64.34%. Comparing base (14c1dfb) to head (8690eab).

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@             Coverage Diff              @@
##           release-1.3    #3814   +/-   ##
============================================
  Coverage        64.34%   64.34%
============================================
  Files              353      353
  Lines            19012    19012
============================================
  Hits             12233    12233
  Misses            5526     5526
  Partials          1253     1253

Flag
Coverage Δ

unittests
64.34% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Text presets: smart color

Context

Summary
This PR ensures that any text element (including presets) added to the page has good contrast with its background.
Uses either black/white colour or black/white Fill (the exact fill colour to be adjusted)

Relevant Technical Choices

To-do

[ ] Update the fill colour based on Figma
[ ] Tests

User-facing changes

Testing Instructions

Set the background colour to black
Add a text (either from the + icon or any preset)
Verify the text is added so that it's visible from the background (assumably white on the black background)
Test with different backgrounds and different presets
Test with using Zoom
Verify the text is always added so that it's accessible and the contrast between the text background and text colour is accessibly.

QA
See above.

[ ] This is a non-user-facing change and requires no QA

This PR can be tested by following these steps:

Checklist

[x] This PR addresses an existing issue and I have linked this PR to it in ZenHub
[ ] I have tested this code to the best of my abilities
[ ] I have verified accessibility to the best of my abilities (docs)
[ ] I have verified i18n and l10n (translation, right-to-left layout) to the best of my abilities
[ ] This PR contains automated tests (unit, integration, and/or e2e) to verify the code works as intended (docs)
[ ] I have added documentation where necessary
[x] I have added a matching Type: XYZ label to the PR

Fixes #7986

@merapi This still needs fixing tests + potentially changing the used colours but otherwise it should be ready for review.


Kitchen Sink: Build A Meme Generator

Build a meme generator where users can add text to popular meme templates that you'll add to the kitchen sink. Feel free to use any existing projects of yours or start one from scratch.
For more information about the Kitchen sink; check out:

https://sink.million.dev/
https://github.com/aidenybai/million/blob/main/packages/kitchen-sink/README.md

N.B: Upon PR review, your usage of Million.js is a plus

Please can you assign me this task/issue?

@tobySolutions I would like to work on this issue please assign me.

@tobySolutions, I would like to take ownership of this issue and work on it. I have already completed some portions of it.

Hey there @adhirajkar3103, @BikramNarayan; I think @adhirajkar3103 requested first. Are you still interested in this Adhiraj?

Hey @tobySolutions  I am still interested! looking forward to contribute

Sorry folks, but, @adhirajkar3103 requested first. I can assign all of you though.

Hey there @adhirajkar3103, any updates on this at all?

Anyone at all?


FIx the broken link for General Contribution Flow page

Description
This PR fixes the broken link for General Contribution Flow page
Notes for Reviewers
Signed commits

[ ] Yes, I signed my commits.

🚀 Preview for commit dd5a72a81a2b3abd9fadc8a1f618b9e2086b6aa6 at: https://631345ebe3237b0de3c19a3d--meshery-docs-preview.netlify.app

🚀 Preview for commit 250904c34d0db11937491123530cf7ff473b447d at: https://6313545e7f1ade1a1d6d831d--meshery-docs-preview.netlify.app

@measutosh
1> Please make sure to file an issue before sending a PR for it.
2> I think the link works perfectly fine and redirects to the right page https://github.com/meshery/meshery/blob/master/docs/CONTRIBUTING-gitflow.md and its needed rightfully.
Theres no need of this change .

closing this , you are welcome to contribute in other issues :)

@measutosh 1> Please make sure to file an issue before sending a PR for it. 2> I think the link works perfectly fine and redirects to the right page https://github.com/meshery/meshery/blob/master/docs/CONTRIBUTING-gitflow.md and its needed rightfully.
Theres no need of this change .

The earlier link leads to a 404 error page - project/contributing/CONTRIBUTING-gitflow.md
I because the page has been moved to a new place which is this -
/docs/CONTRIBUTING-gitflow.md).
I feel this new path should lead to the correct page. Please check this

yes @measutosh sorry it does get to a 404 error page but you will have to make more changes as yours too doesnt get to the desired .
make it redirect to  /contributing-gitflow/ and see if it works :)

yes @measutosh sorry it does get to a 404 error page but you will have to make more changes as yours too doesnt get to the desired .
make it redirect to /contributing-gitflow/ and see if it works :)

Yes, I know. Don't know what's wrong with it
I found the actual path for the file but the dynamic url isn't working
Should I replace it with status url as in
Instead of "{base url}/path", should make it "https://meshery. Io/path"
Will that work out? Could suggest me the url

🚀 Preview for commit 250904c34d0db11937491123530cf7ff473b447d at: https://6313c29cc38f746023439f8c--meshery-docs-preview.netlify.app

🚀 Preview for commit d970b0c0b801911b3bad10f5369af8961f346e14 at: https://631664921693a93a4c058e6d--meshery-docs-preview.netlify.app


Add a license to the repository

I recently came across your project qiskit-notebook and I noticed that the repository github.com/dnnagy/qiskit-notebook currently does not have a license specified.
Why Adding a License is Important?
As GitHub documents

Public repositories on GitHub are often used to share open source software. For your repository to truly be open source, you'll need to license it so that others are free to use, change, and distribute the software.

Would be possible to add a valid license to this repository? Probably something really OpenSource such as the Apache 2.0 license would fit really well.
Thanks!

Added Apache 2.0 license

Thanks!


Fixing bytes data type merge logic

The old implementation convert bytes to string, for dictionary based column, but not for non-dictionary based.
Move this logic to merging part.

Codecov Report

Merging #4534 into master will increase coverage by 8.31%.
The diff coverage is 0%.

@@             Coverage Diff              @@
##             master    #4534      +/-   ##
============================================
+ Coverage      56.5%   64.82%   +8.31%
  Complexity       20       20
============================================
  Files          1075     1075
  Lines         55947    55947
  Branches       8168     8167       -1
============================================
+ Hits          31613    36265    +4652
+ Misses        21834    17021    -4813
- Partials       2500     2661     +161

Impacted Files
Coverage Δ
Complexity Δ

.../operator/transform/TransformBlockDataFetcher.java
70.16% <ø> (+46.35%)
0 <0> (ø)
:arrow_down:

...t/core/query/selection/SelectionOperatorUtils.java
86.84% <0%> (+17.14%)
0 <0> (ø)
:arrow_down:

...pache/pinot/core/util/SortedRangeIntersection.java
83.82% <0%> (-7.36%)
0% <0%> (ø)

.../org/apache/pinot/transport/netty/NettyServer.java
80.8% <0%> (-3.04%)
0% <0%> (ø)

...n/src/main/java/org/apache/pinot/common/Utils.java
59.57% <0%> (-2.13%)
0% <0%> (ø)

...ator/transform/function/BaseTransformFunction.java
29.95% <0%> (+0.42%)
0% <0%> (ø)
:arrow_down:

...ment/creator/impl/SegmentColumnarIndexCreator.java
77.24% <0%> (+0.59%)
0% <0%> (ø)
:arrow_down:

...r/transform/function/ValueInTransformFunction.java
39.2% <0%> (+0.8%)
0% <0%> (ø)
:arrow_down:

.../helix/core/realtime/SegmentCompletionManager.java
70.77% <0%> (+0.86%)
0% <0%> (ø)
:arrow_down:

...e/io/writer/impl/MutableOffHeapByteArrayStore.java
86.45% <0%> (+1.04%)
0% <0%> (ø)
:arrow_down:

... and 288 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 4e41bc3...ecac2e0. Read the comment docs.

Currently we only convert bytes column with dictionary to hex string. However for bytes column without dictionary, the value returned is still byte[]. this will cause cast exception.


AddMigration fail on recursion limit when entity contains more owned types and DbSets has specific names

Hi,
EF Core is not able to create migration for model below. I've already found some workarounds (e.g. rename DbSet properties) but I'am not able to find the real cause.
PM> add-migration Initial

System.InvalidOperationException: The convention invocations have reached the recursion limit. This is likely an issue in EF Core, please report it.
   at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConventionDispatcher.ConventionBatch.Run()
   at Microsoft.EntityFrameworkCore.Metadata.Internal.InternalModelBuilder.Entity(TypeIdentity& type, ConfigurationSource configurationSource, Boolean throwOnQuery)
   at Microsoft.EntityFrameworkCore.Metadata.Internal.InternalModelBuilder.Entity(Type type, ConfigurationSource configurationSource, Boolean throwOnQuery)
   at Microsoft.EntityFrameworkCore.ModelBuilder.Entity(Type type)
   at Microsoft.EntityFrameworkCore.Infrastructure.ModelCustomizer.FindSets(ModelBuilder modelBuilder, DbContext context)
   at Microsoft.EntityFrameworkCore.Infrastructure.RelationalModelCustomizer.FindSets(ModelBuilder modelBuilder, DbContext context)
   at Microsoft.EntityFrameworkCore.Infrastructure.RelationalModelCustomizer.Customize(ModelBuilder modelBuilder, DbContext context)
   at Microsoft.EntityFrameworkCore.Infrastructure.ModelSource.CreateModel(DbContext context, IConventionSetBuilder conventionSetBuilder, IModelValidator validator)
   at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
   at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
   at System.Lazy`1.CreateValue()
   at Microsoft.EntityFrameworkCore.Internal.DbContextServices.CreateModel()
   at Microsoft.EntityFrameworkCore.Internal.DbContextServices.get_Model()
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite, ServiceProviderEngineScope scope)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, ServiceProviderEngineScope scope)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite, ServiceProviderEngineScope scope)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)
   at Microsoft.EntityFrameworkCore.DbContext.get_DbContextDependencies()
   at Microsoft.EntityFrameworkCore.DbContext.get_InternalServiceProvider()
   at Microsoft.EntityFrameworkCore.Internal.InternalAccessorExtensions.GetService[TService](IInfrastructure`1 accessor)
   at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(Func`1 factory)
   at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(String contextType)
   at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.AddMigration(String name, String outputDir, String contextType)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigrationImpl(String name, String outputDir, String contextType)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_0`1.<Execute>b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
The convention invocations have reached the recursion limit. This is likely an issue in EF Core, please report it.

Steps to reproduce

Paste context and entities to a new project
Try PM> Add-Migration

public class Ctx : DbContext
{
    //Workaround no. 1 rename dbSets
    public DbSet<Abs> Abses { get; set; }
    public DbSet<AbsDer1> AbsDer1s { get; set; }
    public DbSet<AbsDer2> AbsDer2s { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        => optionsBuilder.UseNpgsql("fooBar");
}

[Owned]
public class Owned1
{}
[Owned]
public class Owned2
{}

public abstract class Abs
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; internal set; }

    public Owned1 Owned1 { get; set; }
    //Workaround no. 2 remove second owned property
    public Owned2 Owned2 { get; set; }
}

public class AbsDer1 : Abs
{}
public class AbsDer2 : Abs
{}

Further technical details
EF Core version: 2.1.1 (issue also reproduced in newest 2.1.2-rtm-30894)
Database Provider: Npgsql.EntityFrameworkCore.PostgreSQL 2.1.1
Operating system: Windows 10 Pro 1803
IDE: Visual Studio 2017 15.8.0 Preview 3.0

As a workaround you can configure the owned types using fluent API instead of data annotations.