Attempt to fix the javadoc error

@MatthewL246 I think this should fix the Javadoc generation. We just need to change
- name: Generate documentation with Javadoc
        run:
          javadoc -d javadoc-output $(find . -name "*.java") -Xdoclint:none
          --ignore-source-errors

in javadoc.yml to something like
- name: Generate documentation with Javadoc
        run:
          gradle docs

Could you test this on your fork? You'll need to reference a dependency from inside the code, for example make a documented method like:
/**
* @param opMode some message
*/
public void method(LinearOpMode opMode) {}

That should force the generator to index a dependency, and if it works it should be fixed.

Well, now there's another error.
* Where:
Build file '/home/runner/work/FtcRobotController/FtcRobotController/build.gradle' line: 80

* What went wrong:
A problem occurred evaluating root project 'FtcRobotController'.
> Could not get unknown property 'sourceSets' for root project 'FtcRobotController' of type org.gradle.api.Project.

Well, now there's another error.
FAILURE: Build failed with an exception.

* Where:
Build file '/home/runner/work/FtcRobotController/FtcRobotController/build.gradle' line: 80

* What went wrong:
A problem occurred evaluating root project 'FtcRobotController'.
> Could not get unknown property 'sourceSets' for root project 'FtcRobotController' of type org.gradle.api.Project.

Fixed by adding apply plugin: 'java' to the top of the file.

Could we try removing the source = sourceSets.main.allJava part of the task? That's probably the issue and I'd assume it would be better to remove it and let gradle use the default than adding more customizations to the file (assuming it would work if we removed it).

@tom-ricci It's fixed. I'm pretty sure that the source and classpath parameters are the minimum necessary. Right now, I'm trying random code from these things:
https://stackoverflow.com/questions/17033878/generate-javadocs-with-android-gradle-plugin
https://stackoverflow.com/questions/21209253/gradle-does-not-generate-javadocs

@MatthewL246 Ah, okay. I'm going to try this on my branch too and see if it works as is.

Well the main build error is fixed, but @tom-ricci the javadoc still does not work.

Yeah that's why I'm going to test it on my branch. That's the most unstable one we have, so if I can get it working on mine it should work everywhere

Working command:
"C:\Program Files\Android\Android Studio\jre\bin\javadoc.exe" -public -splitindex -use -author -version -sourcepath C:\Users\Thomas\AppData\Local\Android\Sdk\platforms\android-29\android.jar --ignore-source-errors -link https://docs.oracle.com/en/java/javase/11/docs/api/ -d C:\Users\Thomas\StudioProjects\FtcRobotController\javadoc @C:\Users\Thomas\AppData\Local\Temp\javadoc_args

See https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-Readme.md and https://github.com/actions/virtual-environments/blob/main/images/win/Windows2022-Readme.md for software.

Okay. After a lot of digging which singlehandedly shaved about 15 years off my lifespan, I've come to the conclusion that I can't figure out how the Android Studio Javadoc program works, although I do now have multiple ASM and bytecode decompiliers and know how to compile and decompile a shell script (Yes, they can be compiled. Compiled scripts are decompiled at runtime and then interpreted though. Why does this exist? No idea.). Anyway, I also now know how to download and run the Javadoc creator on Ubuntu sooooooooooooooooo I guess I'll just do that every time?  If you can, try copying Gradle's dependencies from wherever it stores them and put them in the directory of the javadoc command and see if that works. It didn't for me, but I think that's because of a naming issue and you'd just have to change the name of some folder. Maybe. I'm just going to generate them locally for now.

Also, I just realized we could install Android Studio as a snap package-- then we could do whatever we wanted with it. If we can do that, all we need is to figure out how Android Studio determines the classpath (it's contained inside the @C:/AppData/Local/Temp/some/path/idk part of the command I posted above).

After a bit of digging, I think the default javadoc generator can actually now be used if it only finds files with the glob pattern *.java. The Javadoc program was actually finding anything with *.java at the end, not just files, causing the generator to attempt to load packages like net.java because it thought it was a file.

More digging, and it turns out the current problem is because of --ignore-source-errors.

OH MY GOD I THINK I FIGURED IT OUT. It turns out there's actually a bug with the Javadoc program itself on Java 11! Switching to Java 16 should fix this. I'll try.

Screw it, I'm trying using JDK 8. If that doesn't work, we need to wait until 3/22/2022 for JDK 18 to release, and then another week or so for GitHub Actions to support it. The only other way we could potentially do this is by unpacking .aar files, but I have no idea if that'll work.

JDK 8 won't work. Either wait for 18 or attempt to unpack aars and their enclosed jars.

Okay, I've decided the best idea is to try switching to Dokka. It supports Kotlin and allows me to avoid having to decompile aars or attempt to reverse engineer Android Studio's Javadoc generator to generate the classpath it uses, which I really don't want to do again.

Well, there's nothing I can do at this point.
@MatthewL246 could you try extracting the dependencies from the exploded AARs they're stored in? Basically, there's a classes.jar file inside each AAR which includes the dependency classes. After running ./gradlew build, each dependency gets stored inside ~/.gradle/caches/transforms-3/<some hash>/transformed/jetified-<dependency name>/jars/classes.jar. The classes.jar needs to be moved to /some/sensible/location<dependency-name>.jar.  Just make sure you copy the dependencies after the command runs.
This isn't as critical, but next we need to either A. provide <dependency name>.jar to the Javadoc generator via -sourcepath <dependency name>.jar, or if that doesn't work, B. decompile the JAR and copy the classes to the working directory of the Javadoc tool (this might be stupidly complex because the JAR might have some of its own dependencies; try avoiding this option for now).
I'm going to revert my branch now to how it was before we started this.  Test this on a copy of my (now reverted) branch since it's the one that needs to be fixed (the other ones will work if this works).
Also here's the action's source code since it's not on my branch anymore:
name: Javadoc Generation
on:
  push:
    branches:
      - "master"
      - "testing-*"
  workflow_dispatch:

jobs:
  generate:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

      - name: Setup Environment
        run: |
          cd ~/
          wget -O java.tar.gz --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz
          sudo mkdir -p /usr/lib/cjdk/jvm
          cd /usr/lib/cjdk/jvm
          sudo tar -xvzf ~/java.tar.gz
          sudo mv ./jdk-17.0.1 ./jdk-17
          cd /home/runner/work/FtcRobotController/FtcRobotController
          echo -e "DEBUG LOGS START\n\n\n"
          ./gradlew --version
          echo -e "\n\n\n\n\n------------------------------------------------------------------------------------------\n\n\n\n\n"
          echo -e "Tree:\n"
          find .
          echo -e "\n\n\nDEBUG LOGS END"
          ./gradlew build
          sudo apt --purge remove adoptopenjdk-8-hotspot adoptopenjdk-11-hotspot
          export PATH=$PATH:/usr/lib/cjdk/jvm/jdk-17/bin
          export JAVA_HOME=/usr/lib/cjdk/jvm/jdk-17
          sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/cjdk/jvm/jdk-17/bin/java" 0
          sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/cjdk/jvm/jdk-17/bin/javac" 0
          sudo update-alternatives --install "/usr/bin/javadoc" "javadoc" "/usr/lib/cjdk/jvm/jdk-17/bin/javadoc" 0
          sudo update-alternatives --set java /usr/lib/cjdk/jvm/jdk-17/bin/java
          sudo update-alternatives --set javac /usr/lib/cjdk/jvm/jdk-17/bin/javac
          sudo update-alternatives --set javadoc /usr/lib/cjdk/jvm/jdk-17/bin/javadoc
          rm -rf javadoc-output
          rm -rf javadoc-workspace
          rm -rf javadoc-temp-workspace
          mkdir -p javadoc-output
          mkdir -p javadoc-workspace
          mkdir -p javadoc-temp-workspace
          rm -rf ./TeamCode/build/
          rm -rf ./FtcRobotController/build/
          cp -r -p ./TeamCode/ ./javadoc-workspace/
          cp -r -p ./FtcRobotController/ ./javadoc-workspace/
          cp -r -p ~/.gradle/caches/modules-2/files-2.1/ ./javadoc-temp-workspace/
          mv ./javadoc-temp-workspace/files-2.1/ ./javadoc-workspace/files-final/
          echo -e "DEBUG LOGS START\n\n\n"
          find ./javadoc-workspace/
          echo -e "\n\n"
          update-alternatives --list java
          update-alternatives --list javac
          update-alternatives --list javadoc
          java --version
          echo -e "\n\n\nDEBUG LOGS END"

#      - name: Install Android Studio
#        run: |
#          cp -r -p jdtar/android-studio.tar.gz ./
#          tar -xf android-studio.tar.gz
      - name: Generate Javadoc
        run: |
          export PATH=$PATH:/usr/lib/cjdk/jvm/jdk-17/bin
          export JAVA_HOME=/usr/lib/cjdk/jvm/jdk-17
          java --version
          javadoc -Xdoclint:none -public -splitindex -use -author -version -sourcepath $ANDROID_HOME/platforms/android-29/android.jar -d ./javadoc-output -link https://docs.oracle.com/en/java/javase/11/docs/api/ -link https://xaverianteamrobotics.github.io/FtcRobotController/javadocs/libs/ftccommon/ -link https://xaverianteamrobotics.github.io/FtcRobotController/javadocs/libs/hardware/ -link https://xaverianteamrobotics.github.io/FtcRobotController/javadocs/libs/inspection/ -link https://xaverianteamrobotics.github.io/FtcRobotController/javadocs/libs/onbotjava/ -link https://xaverianteamrobotics.github.io/FtcRobotController/javadocs/libs/robotcore/package-list $(find ./javadoc-workspace/ -name "*.java" -not -type d) --ignore-source-errors
          # sudo snap install android-studio --classic
#      - name: Generate Javadoc
#        run: |
#          cd android-studio/jre/bin
#         ./javadoc -d ./javadoc-output $(find ../../ -name "*.java") -public -splitindex -use -author -version -Xdoclint:none --ignore-source-errors -link https://docs.oracle.com/en/java/javase/11/docs/api/ -link https://xaverianteamrobotics.github.io/FtcRobotController/javadocs/libs/ftccommon/ -link https://xaverianteamrobotics.github.io/FtcRobotController/javadocs/libs/hardware/ -link https://xaverianteamrobotics.github.io/FtcRobotController/javadocs/libs/inspection/ -link https://xaverianteamrobotics.github.io/FtcRobotController/javadocs/libs/onbotjava/ -link https://xaverianteamrobotics.github.io/FtcRobotController/javadocs/libs/robotcore/
      - name: Find
        run: find .
      - name: Upload the Javadoc output
        uses: actions/upload-artifact@v2
        with:
          name: Javadoc-output
          path: ./javadoc-output/

      - name: Commit and push the new Javadoc folder
        run: |
          # Set up Git and environment variables
          git config user.name "GitHub Actions Bot"
          git config user.email<EMAIL_ADDRESS>          shopt -s dotglob
          export BRANCH_NAME=$(echo $GITHUB_REF | sed -e "s/refs\/heads\///")

          # Move Javadoc output and build reports
          mv javadoc-output/ ..
          mkdir -p ../team-reports/
          mv ./TeamCode/build/reports/*  ../team-reports/
          mkdir -p ../sdk-reports/
          mv ./FtcRobotController/build/reports/* ../sdk-reports/

          # Checkout gh-pages branch
          git reset --hard HEAD
          git clean -f -d -x
          git remote set-branches origin --add 'gh-pages'
          git fetch -a -v
          git checkout gh-pages

          # Copy Javadoc docs to gh-pages
          rm -rf ./javadocs/${BRANCH_NAME}/ || true
          mkdir -p ./javadocs/${BRANCH_NAME}/
          mv ../javadoc-output/* ./javadocs/${BRANCH_NAME}/

          # Copy build reports to gh-pages
          rm -rf ./reports/${BRANCH_NAME}/ || true
          mkdir -p ./reports/${BRANCH_NAME}/team-reports/
          mkdir -p ./reports/${BRANCH_NAME}/sdk-reports/
          mv ../team-reports/* ./reports/${BRANCH_NAME}/team-reports/
          mv ../sdk-reports/* ./reports/${BRANCH_NAME}/sdk-reports/
          mv ./reports/${BRANCH_NAME}/team-reports/lint-results-debug.html ./reports/${BRANCH_NAME}/team-reports/index.html || true
          mv ./reports/${BRANCH_NAME}/sdk-reports/lint-results-debug.html ./reports/${BRANCH_NAME}/sdk-reports/index.html || true

          # Commit and push changes
          git add -A
          git commit -a -m "Javadoc documentation update ($GITHUB_RUN_NUMBER)

          Information:
            Repository: $GITHUB_REPOSITORY
            Branch: $GITHUB_REF
            Commit: $GITHUB_SHA
            Who triggered action: $GITHUB_ACTOR"
          git push

Btw I stopped using Dokka because it was causing more problems than it solved, so I gave up and I'm just using the default Javadoc tool.

Android Studio's generated -classpath, might be useful if extracting the AARs doesn't work and we can figure out a way to generate it:
-classpath
"C:/Users/Thomas/StudioProjects/FtcRobotController/TeamCode/src/main/assets;C:/Users/Thomas/StudioProjects/FtcRobotController/TeamCode/src/main/java;C:/Users/Thomas/StudioProjects/FtcRobotController/TeamCode/src/main/res;C:/Users/Thomas/StudioProjects/FtcRobotController/FtcRobotController/src/main/res;C:/Users/Thomas/StudioProjects/FtcRobotController/FtcRobotController/src/main/java;C:/Users/Thomas/StudioProjects/FtcRobotController/FtcRobotController/src/main/assets;C:/Users/Thomas/.gradle/caches/modules-2/files-2.1/junit/junit/4.12/2973d150c0dc1fefe998f834810d68f278ea58ec/junit-4.12.jar;C:/Users/Thomas/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.3/42a25dc3219429f0e5d060061f71acb49bf010a0/hamcrest-core-1.3.jar;C:/Users/Thomas/.gradle/caches/modules-2/files-2.1/com.google.android.wearable/wearable/2.8.1/9088d02f75b3150f1d15f03d619636a5aefdda98/wearable-2.8.1.jar;C:/Users/Thomas/.gradle/caches/modules-2/files-2.1/org.checkerframework/checker-qual/2.5.8/41c6fa63cba0fea55ebd3581d42b3d2c5cca98b2/checker-qual-2.5.8.jar;C:/Users/Thomas/.gradle/caches/modules-2/files-2.1/androidx.collection/collection/1.1.0/1f27220b47669781457de0d600849a5de0e89909/collection-1.1.0.jar;C:/Users/Thomas/.gradle/caches/modules-2/files-2.1/androidx.lifecycle/lifecycle-common/2.1.0/c67e7807d9cd6c329b9d0218b2ec4e505dd340b7/lifecycle-common-2.1.0.jar;C:/Users/Thomas/.gradle/caches/modules-2/files-2.1/androidx.arch.core/core-common/2.1.0/b3152fc64428c9354344bd89848ecddc09b6f07e/core-common-2.1.0.jar;C:/Users/Thomas/.gradle/caches/modules-2/files-2.1/androidx.annotation/annotation/1.2.0/57136ff68ee784c6e19db34ed4a175338fadfde1/annotation-1.2.0.jar;C:/Users/Thomas/.gradle/caches/modules-2/files-2.1/org.threeten/threetenbp/1.5.1/1d66c467c82fa2d01858f196d3600069368a8ccb/threetenbp-1.5.1-no-tzdb.jar;C:/Users/Thomas/.gradle/caches/modules-2/files-2.1/org.nanohttpd/nanohttpd-websocket/2.3.1/f2cfb09cee12469ff64f0d698b13de19903bb4f7/nanohttpd-websocket-2.3.1.jar;C:/Users/Thomas/.gradle/caches/modules-2/files-2.1/androidx.constraintlayout/constraintlayout-solver/2.0.4/1f001d7db280a89a6c26b26a66eb064bb6d5efeb/constraintlayout-solver-2.0.4.jar;C:/Users/Thomas/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-coroutines-core-jvm/1.6.0/f3b8fd26c2e76d2f18cbc36aacb6e349fcb9fd5f/kotlinx-coroutines-core-jvm-1.6.0.jar;C:/Users/Thomas/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-coroutines-android/1.6.0/453fa53456bbaea50e51bd92d7f16f7bf6fcc58e/kotlinx-coroutines-android-1.6.0.jar;C:/Users/Thomas/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.6.0/baf82c475e9372c25407f3d132439e4aa803b8b8/kotlin-stdlib-jdk8-1.6.0.jar;C:/Users/Thomas/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.6.0/da6bdc87391322974a43ccc00a25536ae74dad51/kotlin-stdlib-jdk7-1.6.0.jar;C:/Users/Thomas/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.6.0/a40b8b22529b733892edf4b73468ce598bb17f04/kotlin-stdlib-1.6.0.jar;C:/Users/Thomas/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar;C:/Users/Thomas/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.6.0/7857e365f925cfa060f941c1357cda1f8790502c/kotlin-stdlib-common-1.6.0.jar;C:/Users/Thomas/.gradle/caches/transforms-3/9466f617a79a18c4eb8bd802c5f10fd3/transformed/jetified-Inspection-7.0.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/9466f617a79a18c4eb8bd802c5f10fd3/transformed/jetified-Inspection-7.0.0/res;C:/Users/Thomas/.gradle/caches/transforms-3/9466f617a79a18c4eb8bd802c5f10fd3/transformed/jetified-Inspection-7.0.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/9799a1864f05b4f7215334215770266e/transformed/jetified-dashboard-0.4.3/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/9799a1864f05b4f7215334215770266e/transformed/jetified-dashboard-0.4.3/res;C:/Users/Thomas/.gradle/caches/transforms-3/9799a1864f05b4f7215334215770266e/transformed/jetified-dashboard-0.4.3/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/a27c89d9a921036aa0268a5554ce4e30/transformed/jetified-RobotCore-7.0.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/a27c89d9a921036aa0268a5554ce4e30/transformed/jetified-RobotCore-7.0.0/jars/libs/Vuforia.jar;C:/Users/Thomas/.gradle/caches/transforms-3/a27c89d9a921036aa0268a5554ce4e30/transformed/jetified-RobotCore-7.0.0/jars/libs/androidx-rs.jar;C:/Users/Thomas/.gradle/caches/transforms-3/a27c89d9a921036aa0268a5554ce4e30/transformed/jetified-RobotCore-7.0.0/jars/libs/gson-2.8.0.jar;C:/Users/Thomas/.gradle/caches/transforms-3/a27c89d9a921036aa0268a5554ce4e30/transformed/jetified-RobotCore-7.0.0/jars/libs/gson-extras-0.2.1.jar;C:/Users/Thomas/.gradle/caches/transforms-3/a27c89d9a921036aa0268a5554ce4e30/transformed/jetified-RobotCore-7.0.0/jars/libs/slf4j-api-1.7.26.jar;C:/Users/Thomas/.gradle/caches/transforms-3/a27c89d9a921036aa0268a5554ce4e30/transformed/jetified-RobotCore-7.0.0/jars/libs/slf4j-handroid-1.7.27.jar;C:/Users/Thomas/.gradle/caches/transforms-3/a27c89d9a921036aa0268a5554ce4e30/transformed/jetified-RobotCore-7.0.0/res;C:/Users/Thomas/.gradle/caches/transforms-3/a27c89d9a921036aa0268a5554ce4e30/transformed/jetified-RobotCore-7.0.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/c85a81c0ac83aff92cf83ff7e88ae33f/transformed/jetified-Tfod-7.0.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/c85a81c0ac83aff92cf83ff7e88ae33f/transformed/jetified-Tfod-7.0.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/d94c0a23efc7bd895627abab1d71b068/transformed/jetified-tensorflow-lite-task-vision-0.2.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/d94c0a23efc7bd895627abab1d71b068/transformed/jetified-tensorflow-lite-task-vision-0.2.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/593174fcf8acc235c7fbaa20cf46a2ee/transformed/jetified-tensorflow-lite-task-base-0.2.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/593174fcf8acc235c7fbaa20cf46a2ee/transformed/jetified-tensorflow-lite-task-base-0.2.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/0c0f004421b3985354d95bfa31151f14/transformed/jetified-tensorflow-lite-support-0.2.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/0c0f004421b3985354d95bfa31151f14/transformed/jetified-tensorflow-lite-support-0.2.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/44e595a1e0a3fa01daa3490c4c9cf535/transformed/jetified-tensorflow-lite-2.4.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/44e595a1e0a3fa01daa3490c4c9cf535/transformed/jetified-tensorflow-lite-2.4.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/18832ceebbaa25b95a33b58a0a3049e7/transformed/constraintlayout-2.0.4/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/18832ceebbaa25b95a33b58a0a3049e7/transformed/constraintlayout-2.0.4/res;C:/Users/Thomas/.gradle/caches/transforms-3/18832ceebbaa25b95a33b58a0a3049e7/transformed/constraintlayout-2.0.4/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/9e48202649c48daf26bb8f239c66483e/transformed/appcompat-1.2.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/9e48202649c48daf26bb8f239c66483e/transformed/appcompat-1.2.0/res;C:/Users/Thomas/.gradle/caches/transforms-3/9e48202649c48daf26bb8f239c66483e/transformed/appcompat-1.2.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/5a24d0ac34e8b92853002037542df95b/transformed/jetified-core-ktx-1.5.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/5a24d0ac34e8b92853002037542df95b/transformed/jetified-core-ktx-1.5.0/res;C:/Users/Thomas/.gradle/caches/transforms-3/5a24d0ac34e8b92853002037542df95b/transformed/jetified-core-ktx-1.5.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/ea518d4c78c0eeea5d4bb4059dba0f83/transformed/fragment-1.1.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/ea518d4c78c0eeea5d4bb4059dba0f83/transformed/fragment-1.1.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/fb385394bf73708ec20b6c31ba39e100/transformed/jetified-appcompat-resources-1.2.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/fb385394bf73708ec20b6c31ba39e100/transformed/jetified-appcompat-resources-1.2.0/res;C:/Users/Thomas/.gradle/caches/transforms-3/fb385394bf73708ec20b6c31ba39e100/transformed/jetified-appcompat-resources-1.2.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/18fbcccabe51d7517c41d9253cb19813/transformed/drawerlayout-1.0.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/18fbcccabe51d7517c41d9253cb19813/transformed/drawerlayout-1.0.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/29a7f96b1635356672387b8a2fd2b8c6/transformed/viewpager-1.0.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/29a7f96b1635356672387b8a2fd2b8c6/transformed/viewpager-1.0.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/936e10ab5147e35a87205426e48f3c1a/transformed/loader-1.0.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/936e10ab5147e35a87205426e48f3c1a/transformed/loader-1.0.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/09bc519b110313256a1e7adeba62b536/transformed/jetified-activity-1.0.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/09bc519b110313256a1e7adeba62b536/transformed/jetified-activity-1.0.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/ea832e28a0d896f535ef1366e99188e7/transformed/vectordrawable-animated-1.1.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/ea832e28a0d896f535ef1366e99188e7/transformed/vectordrawable-animated-1.1.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/1fcc58705be535d81ca2122cd82fb2dd/transformed/vectordrawable-1.1.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/1fcc58705be535d81ca2122cd82fb2dd/transformed/vectordrawable-1.1.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/2b36b5095d5e21f336fa59dc4d2e4a62/transformed/customview-1.0.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/2b36b5095d5e21f336fa59dc4d2e4a62/transformed/customview-1.0.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/21bf649bbbda36aca0c59bf737cafeeb/transformed/core-1.5.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/21bf649bbbda36aca0c59bf737cafeeb/transformed/core-1.5.0/res;C:/Users/Thomas/.gradle/caches/transforms-3/21bf649bbbda36aca0c59bf737cafeeb/transformed/core-1.5.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/4028e17a5ae7423d0e5c6e221d879097/transformed/cursoradapter-1.0.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/4028e17a5ae7423d0e5c6e221d879097/transformed/cursoradapter-1.0.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/f2060284c1145d2bba6b4c373413d31e/transformed/lifecycle-runtime-2.1.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/f2060284c1145d2bba6b4c373413d31e/transformed/lifecycle-runtime-2.1.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/0872e19b344265a0f14b376edd67805b/transformed/versionedparcelable-1.1.1/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/0872e19b344265a0f14b376edd67805b/transformed/versionedparcelable-1.1.1/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/da0ecce8aebee953b57fc8055f4ca34e/transformed/lifecycle-viewmodel-2.1.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/da0ecce8aebee953b57fc8055f4ca34e/transformed/lifecycle-viewmodel-2.1.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/95e84cc99c292154bb05a620ffdfc355/transformed/jetified-savedstate-1.0.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/95e84cc99c292154bb05a620ffdfc355/transformed/jetified-savedstate-1.0.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/42eb83a5cfe1555af3660a647b227e91/transformed/lifecycle-livedata-2.0.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/42eb83a5cfe1555af3660a647b227e91/transformed/lifecycle-livedata-2.0.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/5857348fa969fa2d29faa5e29366968f/transformed/lifecycle-livedata-core-2.0.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/5857348fa969fa2d29faa5e29366968f/transformed/lifecycle-livedata-core-2.0.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/0e22635ff414f3e2d1c25fc7b42874a3/transformed/core-runtime-2.0.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/0e22635ff414f3e2d1c25fc7b42874a3/transformed/core-runtime-2.0.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/f8f847d2daac12340270db8b770ae69f/transformed/interpolator-1.0.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/f8f847d2daac12340270db8b770ae69f/transformed/interpolator-1.0.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/f7eecb595f734cccc055b6379115f1c5/transformed/jetified-threetenabp-1.3.1/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/f7eecb595f734cccc055b6379115f1c5/transformed/jetified-threetenabp-1.3.1/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/460cdce8e03c321865dd644a3d38600e/transformed/jetified-Blocks-7.0.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/460cdce8e03c321865dd644a3d38600e/transformed/jetified-Blocks-7.0.0/res;C:/Users/Thomas/.gradle/caches/transforms-3/460cdce8e03c321865dd644a3d38600e/transformed/jetified-Blocks-7.0.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/3536387efc12132cc24ec216bf7dd3c3/transformed/jetified-RobotServer-7.0.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/3536387efc12132cc24ec216bf7dd3c3/transformed/jetified-RobotServer-7.0.0/jars/libs/Java-WebSocket-1.4.1-20190423.174615-6.jar;C:/Users/Thomas/.gradle/caches/transforms-3/3536387efc12132cc24ec216bf7dd3c3/transformed/jetified-RobotServer-7.0.0/res;C:/Users/Thomas/.gradle/caches/transforms-3/3536387efc12132cc24ec216bf7dd3c3/transformed/jetified-RobotServer-7.0.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/3ae69fe52eb72652360d0fc50a8789d9/transformed/jetified-Hardware-7.0.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/3ae69fe52eb72652360d0fc50a8789d9/transformed/jetified-Hardware-7.0.0/res;C:/Users/Thomas/.gradle/caches/transforms-3/3ae69fe52eb72652360d0fc50a8789d9/transformed/jetified-Hardware-7.0.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/d526d69aa9553ca1562e51beccdbd857/transformed/jetified-FtcCommon-7.0.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/d526d69aa9553ca1562e51beccdbd857/transformed/jetified-FtcCommon-7.0.0/res;C:/Users/Thomas/.gradle/caches/transforms-3/d526d69aa9553ca1562e51beccdbd857/transformed/jetified-FtcCommon-7.0.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/e042609789ed816f4b674bc770724847/transformed/jetified-OnBotJava-7.0.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/e042609789ed816f4b674bc770724847/transformed/jetified-OnBotJava-7.0.0/jars/libs/javac.jar;C:/Users/Thomas/.gradle/caches/transforms-3/e042609789ed816f4b674bc770724847/transformed/jetified-OnBotJava-7.0.0/res;C:/Users/Thomas/.gradle/caches/transforms-3/e042609789ed816f4b674bc770724847/transformed/jetified-OnBotJava-7.0.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/547fb357ea7bacb6e21d99d8c8959eb9/transformed/jetified-gameAssets-FreightFrenzy-1.0.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/547fb357ea7bacb6e21d99d8c8959eb9/transformed/jetified-gameAssets-FreightFrenzy-1.0.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/fcb373ff3b593d813ccae3978b766d4c/transformed/jetified-easyopencv-1.5.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/fcb373ff3b593d813ccae3978b766d4c/transformed/jetified-easyopencv-1.5.0/res;C:/Users/Thomas/.gradle/caches/transforms-3/fcb373ff3b593d813ccae3978b766d4c/transformed/jetified-easyopencv-1.5.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/7e348c709901a767cc6198533ea65f73/transformed/jetified-opencv-repackaged-4.5.3-B/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/7e348c709901a767cc6198533ea65f73/transformed/jetified-opencv-repackaged-4.5.3-B/res;C:/Users/Thomas/.gradle/caches/transforms-3/7e348c709901a767cc6198533ea65f73/transformed/jetified-opencv-repackaged-4.5.3-B/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/modules-2/files-2.1/androidx.annotation/annotation/1.1.0/e3a6fb2f40e3a3842e6b7472628ba4ce416ea4c8/annotation-1.1.0.jar;C:/Users/Thomas/.gradle/caches/transforms-3/1ce2abb752f93566003b344729c85543/transformed/core-1.3.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/1ce2abb752f93566003b344729c85543/transformed/core-1.3.0/res;C:/Users/Thomas/.gradle/caches/transforms-3/1ce2abb752f93566003b344729c85543/transformed/core-1.3.0/AndroidManifest.xml;C:/Users/Thomas/.gradle/caches/transforms-3/ddc1690ce21042fddab91f96b3d46309/transformed/versionedparcelable-1.1.0/jars/classes.jar;C:/Users/Thomas/.gradle/caches/transforms-3/ddc1690ce21042fddab91f96b3d46309/transformed/versionedparcelable-1.1.0/AndroidManifest.xml"

Oh I also just had an idea:
Instead of having to extract the AARs, we might be able to get away with changing the command to:
javadoc -Xdoclint:none -public -splitindex -use -author -version -sourcepath $ANDROID_HOME/platforms/android-29/android.jar -d ./javadoc-output -link https://docs.oracle.com/en/java/javase/11/docs/api/ -link https://xaverianteamrobotics.github.io/FtcRobotController/javadocs/libs/ftccommon/ -link https://xaverianteamrobotics.github.io/FtcRobotController/javadocs/libs/hardware/ -link https://xaverianteamrobotics.github.io/FtcRobotController/javadocs/libs/inspection/ -link https://xaverianteamrobotics.github.io/FtcRobotController/javadocs/libs/onbotjava/ -link https://xaverianteamrobotics.github.io/FtcRobotController/javadocs/libs/robotcore/package-list -classpath $(find ./javadoc-workspace/ -name "*.java" -not -type d < INSERT COLON HERE FOR EACH FILE >):$(find ~/.gradle/caches/ -name "*.java" -name "*.jar" -not -type d < INSERT COLON HERE FOR EACH FILE >) $(find ./javadoc-workspace/TeamCode/ -name "*.java" -not -type d) --ignore-source-errors
Because that should index all of Gradle's cached dependencies and add them to the CLASSPATH, which means that as long as we ./gradlew build before running javadoc, we'll index all of the project's dependencies. It might not work if there's conflicting files in the CLASSPATH, but that could easily be solved with some logic. I'll check it out later.

Okay that didn't help. Back to javadoc -Xdoclint:none -public -splitindex -use -author -version -sourcepath $ANDROID_HOME/platforms/android-29/android.jar -d ./javadoc-output -link https://docs.oracle.com/en/java/javase/11/docs/api/ -link https://xaverianteamrobotics.github.io/FtcRobotController/javadocs/libs/ftccommon/ -link https://xaverianteamrobotics.github.io/FtcRobotController/javadocs/libs/hardware/ -link https://xaverianteamrobotics.github.io/FtcRobotController/javadocs/libs/inspection/ -link https://xaverianteamrobotics.github.io/FtcRobotController/javadocs/libs/onbotjava/ -link https://xaverianteamrobotics.github.io/FtcRobotController/javadocs/libs/robotcore/package-list -classpath $(find ./javadoc-workspace/ -name "*.java" -not -type d < INSERT COLON HERE FOR EACH FILE >):$(find ~/.gradle/caches/ -name "*.java" -name "*.jar" -not -type d < INSERT COLON HERE FOR EACH FILE >) $(find ./javadoc-workspace/TeamCode/ -name "*.java" -not -type d) --ignore-source-errors

Good luck...
I have no idea what's going on at this point tbh.

Lol if you're at robotics later today I'll be able to explain (for the next week or so I'll be at robotics an hour or so later because work study).

Well, we're gonna have to unpack the jars. It shouldn't be that hard tbh, after an AAR is exploded, most of our job is actually already done. All we need to do is extract each classes.jar from every exploded AAR and rename them.

Hm, looks like Javadoc actually added support for the in-house tags at some point. That's good to know. Anyway, I'm getting closer to completion, I only have a few missing classes left and dependencies are working!

Oh. my. god.
https://github.com/XaverianTeamRobotics/FtcRobotController/actions/runs/1680817110

I'm fixing up some final things now (turns out Android is being a pain as always), and then going to see if I can get the linter working. If that works, I'll leave it in. If not, I won't.

Anyway, @MatthewL246 thank you for building the base of this script! I don't think I would be able to do it from scratch. /gen
Tomorrow, I'm going to do the following:

Extract the FTC SDK Javadocs and replace the hosted ones with those on every generation
Require the Gradle build action to pass before generation
Add a bot which comments on commits/PRs if either the linter or the source generated errors. If one of these happens, the bot will let the author(s) know and rerun the generation with the linter disabled and/or --ignore-source-errors enabled
Attempt to fix the lag issue I've noticed with Javadocs on our site specifically

I'm going to pull the Javadoc generator into all branches except master. I'll deal with master later.

Also note to self:

Need to add android.jar back into the sourcepath
Need to stop making docs of BuildConfig and R classes

Closing, there's still an annoying thing but it's not critical and lies with GitHub itself. Hopefully it'll be fixed one day. https://github.com/github/feedback/discussions/5435


Angular Universal (Server side rendering) - how use *.umd.js for node.js

When I launch my application with angular universal
i use this repo: https://github.com/evertonrobertoauler/cli-universal-demo
$ node dist/server.js
~/api-lib/index.js:1
(function (exports, require, module, __filename, __dirname) { import { Component, Directive, ElementRef, Injectable, NgModule, Pipe } from '@angular/core';
                                                              ^^^^^^

SyntaxError: Unexpected token import

I see that when run build, lib is created in es2015
As in the file tsconfig.es5.json we have "module": "es2015"
But in the file api-lib.umd.js - this is what I need
In my application, I connect the library like this
import {SampleModule, SampleService} from 'api-lib';
There is a solution in my project to make webpack compile into es5
In webpack.config.js
externals: [nodeExternals({
    whitelist: [
      /^api-lib/
    ]
  })],

But it seems to me not right,
I do not understand how I can get my application to connect
here is the api-lib.umd.js file when compiled
Or should it automatically do this?

@kkaabbaa — Is it possible to share your code? Thanks!

@kkaabbaa
have the same issue how can I solve this?

i use this post https://medium.com/@evertonrobertoauler/angular-4-universal-app-with-angular-cli-db8b53bba07d
and added
externals: [nodeExternals({
whitelist: [
/^api-lib/
]
})],


Support Groovy

Close #10

Codecov Report

Merging #29 into master will decrease coverage by 0.19%.
The diff coverage is 0%.

@@            Coverage Diff            @@
##             master    #29     +/-   ##
=========================================
- Coverage       9.9%   9.7%   -0.2%
  Complexity        8      8
=========================================
  Files            17     18      +1
  Lines           101    103      +2
  Branches         14     14
=========================================
  Hits             10     10
- Misses           91     93      +2

Impacted Files
Coverage Δ
Complexity Δ

...ji/contributor/GroovyEmojiCompletionContributor.kt
0% <0%> (ø)
0 <0> (?)

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 ca5f557...4510cd4. Read the comment docs.


cmd/cgo: mishandles 40 bit bitfield

Building this test case with go build foo.go
package p

/*
typedef struct {
	unsigned long x : 40;
} s;
*/
import "C"

var v C.s

produces
# command-line-arguments
/tmp/go-build300185653/b001/_cgo_gotypes.go:23:4: undefined: uint40

Oddly, something seems to be special about the number 40.

Ah, it fails when the bit size is a multiple of 8 other than 8, 16, 32, 64.


Package-based routing and scalability

We need a way of segmenting packaged functionality by VM for enhanced scalability and rollout control.  Our mechanism for grouping features together is already well established in our asset packages concept.  To avoid forcing separate Git repositories for each package group, we already have in mind the notion of a yaml configuration file that governs which packages from a repo are applicable for a particular environment.
We need an approach that builds on this and the routing strategy concept to automatically route REST requests based on resource path to a server instance that has the appropriate packages configured.  We can consider adding the configured package info in the AppSummary response so that the routing instance can know about this relationship for each node.  Also, we no longer want to require a dedicated routing instance.  In fact, each instance should be intelligent enough to route to it's peers.

Sample mdw.yml:
endpoints:
  discovery:
    - https://mdw.useast.appfog.ctl.io/mdw
    - http://lxdenvmtc143.dev.qintra.com:7021/Discovery
  releases:
    - http://repo.maven.apache.org/maven2

# optional section for package groups
  packageGroups:
    base:
      routes:
        - /
      packages:
        - com.centurylink.mdw.base
        - com.centurylink.mdw.camel
        - com.centurylink.mdw.db
        - com.centurylink.mdw.hub
    demo-workflow:
      routes:
        - /services/intro
      packages:
        - com.centurylink.mdw.demo.cool
        - com.centurylink.mdw.demo.intro
    demo-services:
      routes:
        - /services/bugs
      packages:
        - /bugs

# optional section for remote projects (replaces plugin.xml)
  mdw.version: 6.0.04-SNAPSHOT
  server:
    host: localhost
    port: 8080
    context: mdw


[WIP] Change active partitions counter to gauge

To address #1200, but needs more work

being done in #1485


Help! user model not pulling roles in the database in laravel 5.3

I have installed this package and seeded my database with roles, permissions, a test user and attached appropriate roles and permissions. Also in my user model, I used EntrustUserTrait. But checking whether the authentication user in my controller has a particular role does not work. It's not pulling roles.
`  */
protected $user;
public  function __construct(){
$this->middleware('auth'); //protect this controller authentication
}
public function index()
{
  //get all active roles except system role

$user =Auth::user();
dd($user->roles());
//dd($user->hasRole('admin'));
        $roles = Role::all();
        return view('user::roles.index', ['roles' => $roles]);

}

`
when dd($this->user->roles) I keep getting null where as the role is present in the database .

I have been able to resolve this. It was an error from my own side.


Add my first file

I have created a brand, commit and created pull request!

Wow this is magical haha


Rename "enumeration" -> "enumerations"

The SVD specs allow multiple enumerations, (different read/read-write, for example).

fixed on 2017-12-08 (>v0.2.0)


Incorporate Fixed Vocabularies

We may want to copy some tables wholesale. Use cases might include something like the omop concept table in its entirety.

Perhaps a different SQLSynthGen base class could take care of this
class conceptGenerator(VocabGenerator):
   pass

sorted_generators = [
   ...,
   conceptGenerator,
  ...,
]

When I think of fixing the vocabulary, I think of using the hydef values from Jon: https://github.com/alan-turing-institute/TSDiP/issues/21

Markus and I agree that it would be nice if no commands require you to have access to both databases at once. For that reason, we may want to export vocab tables either

during the make-generators command or
in a separate make-vocab command

Then, for the create-data step (or create-vocab, perhaps) we can have a generator that simply reads in a whole file. Things to be aware of are the file format with which to store the vocab.

If we can presume that vocabulary tables don't ever depend on private data, we can add functionality to make-gens so that it

exports the raw vocab data
makes file-upload generators for the vocab tables
creates generators for the non-vocab tables

and we can split the create-data step into two steps

create-vocab which runs the file-upload generators
create-data which runs the other generators

so that create-tables and create-vocab should only need to be called once.
To begin with, we can specify vocab tables on the CLI and then merge with Markus' config file
sqlsynthgen make-gens --vocab=table1,table2 orm.py > ssg.py

At this point, we are potentially creating more than one output file so we may want to change how the command works (e.g. writing to pre-specified file names and erroring if any of those files already exist).

Closed by https://github.com/alan-turing-institute/sqlsynthgen/pull/41


Tool updates

This PR simply updates the tooling and library versions to the current latest.

Nothing interesting here, and CI is passing so going to merge.


Add more toolbar functionalities

Firstly, add a more accessible update all apps on toolbar.
Also, provide a way to install Google services apps in correct order.

will need to be redone later


Added Confbridge Actions

Just added the following actions:
ConfbridgeListRooms
ConfbridgeList
ConfbridgeKick
ConfbridgeMute
ConfbridgeUnmute
Usage:
List Confbridges:
@ami.confbridges

List Channels in a given Confbridge:
@ami.confbridge("<conference>")

Mute/Unmute/Kick a Channel in a given Confbridge:
@ami.confbridge_kick("<conference>","<channel>")

Thanks for this very useful gem! 👍

Thanks for your contribution!


Use a faster method to check if a table has any rows

We noticed some slow COUNT(1) queries coming from target-postgres. I believe this method checking for table emptiness is the culprit. Because we only care if there are any rows at all, we don't actually need to count all the rows, and can just check for the existence of any. PG has a handy exists keyword for this, so we can do that instead!
Before, with the count query like select count(1) from raw_tap_shopify.orders; here's the explain:
Finalize Aggregate  (cost=553053.72..553053.73 rows=1 width=8)
  ->  Gather  (cost=553053.50..553053.71 rows=2 width=8)
        Workers Planned: 2
        ->  Partial Aggregate  (cost=552053.50..552053.51 rows=1 width=8)
              ->  Parallel Seq Scan on orders  (cost=0.00..549615.20 rows=975320 width=0)
JIT:
  Functions: 4
  Options: Inlining true, Optimization true, Expressions true, Deforming true

Note the full table scan.
After this change, with the exists query like select exists (select * from raw_tap_shopify.orders); here's the explain:
Result  (cost=0.24..0.25 rows=1 width=1)
  InitPlan 1 (returns $0)
    ->  Seq Scan on orders  (cost=0.00..563269.69 rows=2340769 width=0)

Woop woop! I believe this feature is also supported on Redshift, so this change should be safe to apply downstream as well. (https://docs.aws.amazon.com/redshift/latest/dg/r_exists_condition.html)

Good find! Hadn't even thought of the SELECT COUNT(1) being unnecessary here. Will merge and monitor CI. Assuming things there are good, we can expect this change probably tomorrow!


Error I don't know what it is

This is the error:
[ERROR] [MySQL] [es_extended] An error happens on MySQL for query "UPDATE users SET job = 'police', job_grade = 2, loadout = '[]', position = '{"x":415.40000000002,"y":-988.0,"z":29.400000000002}' WHERE identifier = 'steam:11000011265965c'": ER_DATA_TOO_LONG: Data too long for column 'position' at row 1
Can you explain?

It's an es_extended error that has absolutely nothing to do with m-a.  Change the length of the position column in your users table from 32 to 255.

It's an es_extended error that has absolutely nothing to do with m-a. Change the length of the position column in your users table from 32 to 255.

Hey! So okay I know what you mean but could you help me out?
My discord is: Mr.BelgiumGamer#1378
please help xD

https://streamable.com/4vlg8

https://streamable.com/4vlg8

Thanks but I have MyAdmin haha I don't find the option to do that on there haha

Found it nvm , thanks!


Add configurable gtk accelerators

https://developer.gnome.org/gtk3/stable/gtk3-Keyboard-Accelerators.html
Some immediately useful ones:

Ctrl-Q to quit
Left/Right arrow keys to change image
Ctrl+ or Ctrl- or just plain -/+ to zoom

I have added left/right arrow keys to change image and +/- to zoom in caed3e1. In order to add Ctrl-Q to quit I will have to add GActions to the applications, so that will come later.

I have added Ctrl-Q to quit in cb46dd220e89e759a90f04bd12be5d69abbcc063.


Messages sent to server console audience are not translated server-side

Or, to phrase it another way, Components sent as messages to the server console (FabricServerAudiences#console()) are not rendered through the GlobalTranslator, but instead are rendered just as their language key. This differs from the behavior of other platforms like Paper and Sponge 7 that do perform this rendering.
MinecraftServer server = /* ... */;
FabricServerAudiences adventure = FabricServerAudiences.of(server);
TranslationRegistry registry = TranslationRegistry.create(Key.key("kyori", "test"));
registry.defaultLocale(Locale.ROOT);
registry.register("kyori.test", Locale.ROOT, new MessageFormat("Hello, world!"));
adventure.console().sendMessage(Component.translatable("kyori.test"));
// Expected output: "Hello, world!"
// Actual output: "kyori.test"

I did poke around at the library code but I'm not sure what's causing this. Implementation looks pretty similar to Paper's and I don't immediately see any logical errors. Could be related to using the mod as jar-in-jar but then, the global translator works for other purposes like sending actual chat messages to players, so 🤷🏻♀
Using adventure 4.13.1, adventure-platform-fabric 5.8.0, fabric-api 0.78.0+1.19.4, & fabric-server-mc.1.19.4-loader.0.14.19-launcher.0.11.2.jar

hm, I think this might be an issue with your registry -- you create a registry but you don't then register it with the GlobalTranslator -- you should have something like:
registry.register(/****/);
GlobalTranslator.translator().addSource(registry);
adventure.console.sendMesage(...);

I'll move this over to docs though, since imo this is an issue with the lack of translation documentation.


subfolders in src file

How to have the sub-folders in the src file and have that included in the gulp file?

Subfolders are automatically included.
Also, please direct support questions to Stack Overflow as directed in the issue template.

Sure! After posting the question over here, I did manage to solve it, sub-folders are included but I wasn't referring to it properly. Thanks!


Remove dependency on superagent, replace by the standard fetch API

Hi @ludovicm67 !
This PR replaces superagent by the standard fetch API, enabling us to completely remove the superagent dependency 🎉
And take a direction where we reduce the size of YASGUI (1MB is quite large! I think there are a few optimizations we can do to reduce this)
As far as I know fetch is really well supported now, so I don't think we really need to use superagent (which uses axios under the hood). The fetch API is not that complex, and usually well known from most web devs, making it easier to maintain on the long run.
I have run the tests + checked myself everything works fine (abort included)
This increase the sustainability of the software by removing, while reducing its final bundle size of about  ~6KB 5% of bundle size (from 1.07 MiB to 1.01 MiB)
Also now when a query is aborted the abort message is shown to the user instead of triggering a console.error() (filling up the console with hidden abort messages is not ideal imo, aborting is not an error per say)
Aborting now:

Aborting before:

@ludovicm67 thanks for the feedback, I made changes for most comments, let me know if there is anything else to address!

@ludovicm67 Using the Response object in the queryResponse event is not working out, it is expected to be the actual results dict, not a response.
The event is also used in Tab.ts, where the response is directly passed to yasr.setResponse to set the result tab which expect a any
In Tab.ts it is a any: https://github.com/zazuko/Yasgui/blob/0454e9029142c31d97410fc24769576a80a7aee5/packages/yasgui/src/Tab.ts#L408
Not sure why it was typed as a SuperAgentRequest in Yasqe though
And it seems like the queryResults event is not used for anything. Maybe just there in case someone want to do something with the results, but they could have just override queryResponse and get the body themselves
All appearances of queryResponse: https://github.com/search?q=repo%3Azazuko%2FYasgui queryResponse&type=code


Add severity levels based on Brakeman confidence

I'm adding severity levels to the Pronto messages based on the confidence of the Brakeman warning.
Brakeman has 3 levels of confidence: high, medium and low. I'm mapping these to fatal, warning and info on the Pronto messages, respectively.
Hopefully bubbling up the confidence rating from Brakeman will help make the report from Pronto even more useful! 😃

Ping @mmozuras 😃

@aergonaut sorry about that, a busy month 😄
What about: high -> fatal, medium -> error, low -> warning?

@mmozuras my problem with that mapping is that the GithubStatusFormatter's mapping turns warnings into failed status marks. So a low confidence Brakeman warning would generate a red mark on a PR; to me low confidence seems more like something you should look at, but not something that is very urgent.
How about if I move medium confidence warnings up to the error level, but leave low confidence at the info level? There's still a skipped level, but it's lower on the chain.

@aergonaut you explanation makes sense. Let's leave it as you've first suggested.
Thanks for the contribution! 🙇

Thanks 🎉


feature: Add v1 routes

Closes #64
Summary
Add v1 on /trace and /traces.
Local Tests
I made sure that GET /traces and GET /trace work well:
curl -H 'Content-type: application/json' -X PUT http://<IP_ADDRESS>:8181/api/amlight/sdntrace_cp/v1/trace -d '{"trace": {"switch": {"dpid": "00:00:00:00:00:00:00:01","in_port": 1}}}'

{"result":[{"dpid":"00:00:00:00:00:00:00:01","port":1,"time":"2023-04-11 19:16:42.264349","type":"starting"},{"dpid":"00:00:00:00:00:00:00:02","out":null,"port":2,"time":"2023-04-11 19:16:42.264406","type":"incomplete"}]}

curl -H 'Content-type: application/json' -X PUT http://<IP_ADDRESS>:8181/api/amlight/sdntrace_cp/v1/traces -d '[{"trace": {"switch": {"dpid": "00:00:00:00:00:00:00:01","in_port": 1}}}]'

{"result":[[{"dpid":"00:00:00:00:00:00:00:01","port":1,"time":"2023-04-11 19:17:02.650791","type":"starting"},{"dpid":"00:00:00:00:00:00:00:02","out":null,"port":2,"time":"2023-04-11 19:17:02.650848","type":"incomplete"}]]}

End-to-End Tests
Refactoring ...

@viniarck, Thank you.
I will wait for https://github.com/kytos-ng/mef_eline/pull/313 to be approved to avoid error in mef_eline.


Upgrade to Pydantic2

Description
This PR updates the nv-ingest codebase to use Pydantic 2 instead of Pydantic 1. We have seen challenges where other libraries being installed require Pydantic greater than 2 while we are still using Pydantic 1. This is causing dependency issues and therefore we are making the switch to Pydantic 2
Checklist

[x] I am familiar with the Contributing Guidelines.
[x] New or existing tests cover these changes.
[x] The documentation is up to date with these changes.

Looks good; one small issue I found.
conda/packages/**/meta.yaml need their pydantic version updated as well.

Good catch I just updated it. I'm trying to perform lots of different runs now. I have a feeling that there is certainly a few more things that need tweaked as well.


[OCCM] fix listener pop during iteration

What this PR does / why we need it:
Move the remove of the listener at the end of the loop.
Since the listener is a pointer and needed during the loop the removal will mess up the logic.
We observed on a k8s service with 4 ports that a load balancer listener pool were updated on every reconcile loop.
Which issue this PR fixes(if applicable):
fixes https://github.com/kubernetes/cloud-provider-openstack/issues/1795
Special notes for reviewers:
Release note:

NONE

/ok-to-test

thanks for the PR
do you mind create an issue with background and impact etc ( which is in your commit msg basically) so we can track the changes etc, thanks

and please update the header of PR to [OCCM] fix listener pop during iteration
which indicate this is for OCCM change.. thanks

@jichenjc thx for your help the issue is created

@lingxiankong @jichenjc I was able to reproduce the issue again and I will try to provide a many informations I can.
On OpenStack side there is one LoadBalancer with 2 listeners.

While iterating over service.Spec.Ports the lbaas.ensureOctaviaListeneris called to get the listener from curListenerMapping map

Right before the popListener call the listener pointing to the Name listener_0_kube_service_g04_kube-system_ingress-nginx-controller

After the popListener call, the listener is pointing to the Name listener_1_kube_service_g04_kube-system_ingress-nginx-controller and here is the problem, because we are still on the portIndex = 0 but the listener is now pointing to the wrong one and the function ensureOctaviaPool is mixing members up!

here https://go.dev/play/p/OXmDUNxHIVj you can also see the issue if you don't trust my debugger ;)

/override openstack-cloud-controller-manager-e2e-conformance-test

here https://go.dev/play/p/OXmDUNxHIVj you can also see the issue if you don't trust my debugger ;)

Thanks for the investigation @FlorinPeter, I see the issue now, the problem is caused by the line:
curListenerMapping[key] = &curListeners[i]

Here the value of curListenerMapping is a pointer which is going to be changed during the ports iteration.
So rather than moving curListeners = popListener(curListeners, listener.ID), we should change the definition of curListenerMapping to curListenerMapping := make(map[listenerKey]listeners.Listener) to avoid the potential issues in the future.
Changed version: https://go.dev/play/p/45IYjqFA2fZ

So rather than moving curListeners = popListener(curListeners, listener.ID), we should change the definition of curListenerMapping to curListenerMapping := make(map[listenerKey]listeners.Listener) to avoid the potential issues in the future.

sorry but this is a massive change and there is absolutely no benefit doing it instead of moving this function to the end!
I attached the diff of a possible change in order that you understand what implications it will have and besides that there are still if listener == nil { checks that needs to changed....
I have no clue why we need to overcomplicate such a small fix...
diff --git a/pkg/openstack/loadbalancer.go b/pkg/openstack/loadbalancer.go
index 4eabdc4..9620e20 100644
--- a/pkg/openstack/loadbalancer.go
+++ b/pkg/openstack/loadbalancer.go
@@ -1205,7 +1205,7 @@ func (lbaas *LbaasV2) buildMonitorCreateOpts(svcConf *serviceConfig, port corev1
 }

 // Make sure the pool is created for the Service, nodes are added as pool members.
-func (lbaas *LbaasV2) ensureOctaviaPool(lbID string, name string, listener *listeners.Listener, service *corev1.Service, port corev1.ServicePort, nodes []*corev1.Node, svcConf *serviceConfig) (*v2pools.Pool, error) {
+func (lbaas *LbaasV2) ensureOctaviaPool(lbID string, name string, listener listeners.Listener, service *corev1.Service, port corev1.ServicePort, nodes []*corev1.Node, svcConf *serviceConfig) (*v2pools.Pool, error) {
 	pool, err := openstackutil.GetPoolByListener(lbaas.lb, lbID, listener.ID)
 	if err != nil && err != openstackutil.ErrNotFound {
 		return nil, fmt.Errorf("error getting pool for listener %s: %v", listener.ID, err)
@@ -1334,7 +1334,7 @@ func (lbaas *LbaasV2) buildBatchUpdateMemberOpts(port corev1.ServicePort, nodes
 }

 // Make sure the listener is created for Service
-func (lbaas *LbaasV2) ensureOctaviaListener(lbID string, name string, curListenerMapping map[listenerKey]*listeners.Listener, port corev1.ServicePort, svcConf *serviceConfig, _ *corev1.Service) (*listeners.Listener, error) {
+func (lbaas *LbaasV2) ensureOctaviaListener(lbID string, name string, curListenerMapping map[listenerKey]listeners.Listener, port corev1.ServicePort, svcConf *serviceConfig, _ *corev1.Service) (listeners.Listener, error) {
 	listener, isPresent := curListenerMapping[listenerKey{
 		Protocol: getListenerProtocol(port.Protocol, svcConf),
 		Port:     int(port.Port),
@@ -1349,7 +1349,7 @@ func (lbaas *LbaasV2) ensureOctaviaListener(lbID string, name string, curListene
 		var err error
 		listener, err = openstackutil.CreateListener(lbaas.lb, lbID, listenerCreateOpt)
 		if err != nil {
-			return nil, fmt.Errorf("failed to create listener for loadbalancer %s: %v", lbID, err)
+			return listeners.Listener{}, fmt.Errorf("failed to create listener for loadbalancer %s: %v", lbID, err)
 		}

 		klog.V(2).Infof("Listener %s created for loadbalancer %s", listener.ID, lbID)
@@ -1417,7 +1417,7 @@ func (lbaas *LbaasV2) ensureOctaviaListener(lbID string, name string, curListene
 		if listenerChanged {
 			klog.InfoS("Updating listener", "listenerID", listener.ID, "lbID", lbID, "updateOpts", updateOpts)
 			if err := openstackutil.UpdateListener(lbaas.lb, lbID, listener.ID, updateOpts); err != nil {
-				return nil, fmt.Errorf("failed to update listener %s of loadbalancer %s: %v", listener.ID, lbID, err)
+				return listeners.Listener{}, fmt.Errorf("failed to update listener %s of loadbalancer %s: %v", listener.ID, lbID, err)
 			}
 			klog.InfoS("Updated listener", "listenerID", listener.ID, "lbID", lbID)
 		}
@@ -1728,7 +1728,7 @@ func (lbaas *LbaasV2) checkService(service *corev1.Service, nodes []*corev1.Node
 }

 // checkListenerPorts checks if there is conflict for ports.
-func (lbaas *LbaasV2) checkListenerPorts(service *corev1.Service, curListenerMapping map[listenerKey]*listeners.Listener, isLBOwner bool, lbName string) error {
+func (lbaas *LbaasV2) checkListenerPorts(service *corev1.Service, curListenerMapping map[listenerKey]listeners.Listener, isLBOwner bool, lbName string) error {
 	for _, svcPort := range service.Spec.Ports {
 		key := listenerKey{Protocol: listeners.Protocol(svcPort.Protocol), Port: int(svcPort.Port)}

@@ -1856,10 +1856,10 @@ func (lbaas *LbaasV2) ensureOctaviaLoadBalancer(ctx context.Context, clusterName
 	// This is an existing load balancer, either created by occm for other Services or by the user outside of cluster.
 	if !createNewLB {
 		curListeners := loadbalancer.Listeners
-		curListenerMapping := make(map[listenerKey]*listeners.Listener)
+		curListenerMapping := make(map[listenerKey]listeners.Listener)
 		for i, l := range curListeners {
 			key := listenerKey{Protocol: listeners.Protocol(l.Protocol), Port: l.ProtocolPort}
-			curListenerMapping[key] = &curListeners[i]
+			curListenerMapping[key] = curListeners[i]
 		}
 		klog.V(4).InfoS("Existing listeners", "portProtocolMapping", curListenerMapping)

@@ -1874,6 +1874,9 @@ func (lbaas *LbaasV2) ensureOctaviaLoadBalancer(ctx context.Context, clusterName
 				return nil, err
 			}

+			// After all ports have been processed, remaining listeners are removed if they were created by this Service.
+			curListeners = popListener(curListeners, listener.ID)
+
 			pool, err := lbaas.ensureOctaviaPool(loadbalancer.ID, cutString(fmt.Sprintf("pool_%d_%s", portIndex, lbName)), listener, service, port, nodes, svcConf)
 			if err != nil {
 				return nil, err
@@ -1882,9 +1885,6 @@ func (lbaas *LbaasV2) ensureOctaviaLoadBalancer(ctx context.Context, clusterName
 			if err := lbaas.ensureOctaviaHealthMonitor(loadbalancer.ID, cutString(fmt.Sprintf("monitor_%d_%s", portIndex, lbName)), pool, port, svcConf); err != nil {
 				return nil, err
 			}
-
-			// After all ports have been processed, remaining listeners are removed if they were created by this Service.
-			curListeners = popListener(curListeners, listener.ID)
 		}

 		// Deal with the remaining listeners, delete the listener if it was created by this Service previously.
@@ -2100,10 +2100,10 @@ func (lbaas *LbaasV2) ensureLoadBalancer(ctx context.Context, clusterName string
 	if err != nil {
 		return nil, fmt.Errorf("error getting LB %s listeners: %v", loadbalancer.Name, err)
 	}
-	curListenerMapping := make(map[listenerKey]*listeners.Listener)
+	curListenerMapping := make(map[listenerKey]listeners.Listener)
 	for i, l := range oldListeners {
 		key := listenerKey{Protocol: listeners.Protocol(l.Protocol), Port: l.ProtocolPort}
-		curListenerMapping[key] = &oldListeners[i]
+		curListenerMapping[key] = oldListeners[i]
 	}
 	for portIndex, port := range ports {
 		key := listenerKey{Protocol: listeners.Protocol(port.Protocol), Port: int(port.Port)}
@@ -2746,7 +2746,7 @@ func (lbaas *LbaasV2) updateOctaviaLoadBalancer(ctx context.Context, clusterName
 			return fmt.Errorf("loadbalancer %s does not contain required listener for port %d and protocol %s", loadbalancer.ID, port.Port, port.Protocol)
 		}

-		_, err := lbaas.ensureOctaviaPool(loadbalancer.ID, cutString(fmt.Sprintf("pool_%d_%s", portIndex, loadbalancer.Name)), &listener, service, port, nodes, svcConf)
+		_, err := lbaas.ensureOctaviaPool(loadbalancer.ID, cutString(fmt.Sprintf("pool_%d_%s", portIndex, loadbalancer.Name)), listener, service, port, nodes, svcConf)
 		if err != nil {
 			return err
 		}
diff --git a/pkg/util/openstack/loadbalancer.go b/pkg/util/openstack/loadbalancer.go
index 605a307..ddca8b9 100644
--- a/pkg/util/openstack/loadbalancer.go
+++ b/pkg/util/openstack/loadbalancer.go
@@ -314,18 +314,18 @@ func UpdateListener(client *gophercloud.ServiceClient, lbID string, listenerID s
 }

 // CreateListener creates a new listener
-func CreateListener(client *gophercloud.ServiceClient, lbID string, opts listeners.CreateOpts) (*listeners.Listener, error) {
+func CreateListener(client *gophercloud.ServiceClient, lbID string, opts listeners.CreateOpts) (listeners.Listener, error) {
 	mc := metrics.NewMetricContext("loadbalancer_listener", "create")
 	listener, err := listeners.Create(client, opts).Extract()
 	if mc.ObserveRequest(err) != nil {
-		return nil, err
+		return listeners.Listener{}, err
 	}

 	if err := WaitLoadbalancerActive(client, lbID); err != nil {
-		return nil, fmt.Errorf("failed to wait for load balancer %s ACTIVE after creating listener: %v", lbID, err)
+		return listeners.Listener{}, fmt.Errorf("failed to wait for load balancer %s ACTIVE after creating listener: %v", lbID, err)
 	}

-	return listener, nil
+	return *listener, nil
 }

 // DeleteListener deletes a listener.

@lingxiankong I updated the comment, can you please override the openstack-cloud-controller-manager-e2e-conformance-test and bring this to an end?
I also checked the previous versions and only 1.23 is affected as far I can see.
Is there a planned patch release or how is the patches release cadence?

No idea why the occm pod failed to create (we need to get the pod logs when it fails), but given this change shouldn't affect the deployment, so I would override the job.
/override openstack-cloud-controller-manager-e2e-conformance-test
/override openstack-cloud-controller-manager-e2e-test

/lgtm

/approve
/lgtm
a separate topic: suffering this error
/usr/local/bin/runner.sh: line 114: ./tests/ci-occm-e2e-conformance.sh: No such file or directory
guess this PR suffering same per above?

@lingxiankong the test failed, can you help to grant me owner so I can overwrite as well? Thanks

/override openstack-cloud-controller-manager-e2e-conformance-test


Comp 243/ignore symlinks

Pull Request Type

[x] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] CI related changes
[ ] Documentation content changes
[ ] Other... Please describe:

Description

Added ability to read symlinks targeting files
PR Checklist

[x] The commit message follows our guidelines included in the CONTRIBUTING.md
[x] Tests for the changes have been added (for bug fixes / features)
[x] Relevant CHANGELOG is updated

Does this PR introduce a breaking change?

[ ] Yes
[x] No

Other information

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

3 of 3 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.02%) to 84.129%

Totals

Change from base Build<PHONE_NUMBER>:
0.02%

Covered Lines:
474

Relevant Lines:
537

💛  - Coveralls


"add" should say "import"

It's a silly small thing. But in the desktop client it refers to 'add', but the button is called Import

Hi @thibaultmol -- thanks for noticing this! It's actually been fixed upstream in this PR, but we're waiting for a few other changes before cutting a new release of Web UI (which in turn feeds IPFS Desktop). Watch this space!


Git Configuration Disconnects When Publishing

Describe the bug
I'm using the AZDF authoring UI, connected to Git, to manage most of the AZDF objects.  But, for triggers, I am generating them outside of this, through another application and using Publish-AdfV2FromJson targeting a created Trigger json file.
The trigger gets created, however what I have found is that the Git configuration disappears.  It becomes disconnected upon a using Publish-AdfV2FromJson.
To Reproduce
1. Connect AZDF with existing objects to a Git repo, don't import to the repo, and then publish
2. Deploy a trigger, using options: Includes.Add([trigger_name]); DeleteNotInSource = $false; StopStartTriggers = $true; DeployGlobalParams = $false - using Publish-AdfV2FromJson and these options

Expected behaviour
Trigger is deployed but the Git connection is not removed.
This is only in our development environment, since the other environments are not connected to Git.  This is needed because the external process (outside of AZDF authoring) defines when the trigger is created and needed.

Please ensure that you have 'Data Factory Contributor' role assign to you.
This may be a lack of solution which results in that message, but Git Configuration should still be there.

Please ensure that you have 'Data Factory Contributor' role assign to you.
This may be a lack of solution which results in that message, but Git Configuration should still be there.

I will give it a try and report back.  I'm using an AzDO pipeline, which uses an app sp that is subscription owner, not sure if that isn't enough and needs this specific role, but will try.

I will give it a try and report back.  I'm using an AzDO pipeline, which uses an app sp that is subscription owner, not sure if that isn't enough and needs this specific role, but will try.

The Owner for SP is absolutely enough. I'm asking what's your permission to ADF when you notice (and what exactly you see) lack of GIT configuration. No one else faced this issue, so it's probably something related to your environment.

The Owner for SP is absolutely enough. I'm asking what's your permission to ADF when you notice (and what exactly you see) lack of GIT configuration. No one else faced this issue, so it's probably something related to your environment.

My permission is subscription owner also, when logged into the Azure portal.
I setup a test environment & separate repo and was able to repeat everything.

Connect AZDF to Git (an existing set of AZDF objects), unchecking the import into repo
Publish once connected
Verify everything looks good
Externally publish a Trigger, everything succeeds.
If I'm still in AZDF Authoring, it shows as connected to Git, new trigger doesn't appear
Once I exist out of Authoring and then go back in, I see the Trigger, but it's no longer connected to Git

I'm thinking that this is by design.  If you publish something that is not in the Git repo, rather than AZDF adding the new item to Git (which it does not do), it seems to be designed to assume you no longer want to use Git, disconnects it, and then publishes it.
It really isn't an issue outside of my Dev environment, because those environments aren't connected to git.
So I'm left trying to figure out a way to handle this.  For context, when we create a new client from an application, it creates resources in Azure (e.g. Blob Storage Account, Databases), and then creates the Trigger using a trigger template, config files, and does a custom replace for updating the template with the trigger name (the config replacement feature doesn't seem to support updating object names) and then a config file for the properties.
It uses common linked services that are parameterized to handle the different storage accounts and databases.  All works fine--just not when I run the new client process in Development, because it disconnects.
As a workaround I was having the ETL developer verify before starting any work if Git was disconnected and fix it, but because the dynamically created Triggers are added when disconnected from Git, they are not in source, and they disappear once rebinding Git.
I don't think this is a problem with Azure DataFactory Tools, but more of how AZDF handles it.
I thought about pushing the content to the repo instead of publishing, for Development only.   That would work in way that AZDF seems to like.  It would just appear, but still need to be published by the developer, but no biggie.
These environments are totally independent, so I wouldn't want those triggers to be deployed through my normal process upstream, so I would just ignore the triggers when deploying the actual application to other environments (which is a separate step entirely).  I think this might work ok.
Long thread I know, just thought I'd put some context into what I'm doing.
Since I don't think this is a Azure Data Factory Tools problem, but more of a AZDF implementation, feel free to close it.  I can't say I've definitively confirmed it's outside the tool, but I'd be pretty confident it is.
Thanks,
Dave

First of all... thank you for giving the context.
I think you're doing something tricky there, so I can't help until you provide me with steps in order to reproduce the issue.
As you mentioned and I agree - it's doesn't look like a problem with #adftools.
Furthermore, ADF does not remove Git association without reason.
Even having the context you described, I have no clue what's going on over there.
If you want to share this with me - do consider recording short video and share it with me privately.
In the meantime, I close this ticket but feel free to continue this thread.


Decide how to handle key read-write cycle

The X25519 function allows any 32-byte string as a secret key, and clamps it as a scalar on use. From 712c025b40275014e204b60d3ee39c4762cadf86 the library stores keys internally in clamped form (rage -g returns clamped keys but rage -d accepts both clamped and unclamped). This means that reading and then writing a key may result in a different encoding. I do not know if this is likely to trip anyone up, and in any case I cannot think of any reason for anyone to be performing this operation. That being said, it would be nice to document this behaviour somewhere, and/or discourage or prevent the read/write cycle.

To be clear, I'm referring to the read-write APIs on age::SecretKey, for downstream library users. The rage and rage-keygen tools do not have this problem.

One way around this would be to have distinct types for generated and parsed SecretKeys. I'll play with this idea during my recipients / identities refactor for 0.5.


Fix issue #242

The validation pipeline should be loaded from cfg.data.val, but it is currently loading from  cfg.data.train

Hi @gvalvano！First of all, we want to express our gratitude for your significant PR in the MMGeneration project. Your contribution is highly appreciated, and we are grateful for your efforts in helping improve this open-source project during your personal time. We believe that many developers will benefit from your PR.
We would also like to invite you to join our Special Interest Group (SIG) private channel on Discord, where you can share your experiences, ideas, and build connections with like-minded peers. To join the SIG channel, simply message moderator— OpenMMLab on Discord or briefly share your open-source contributions in the #introductions channel and we will assist you. Look forward to seeing you there! Join us ：https://discord.gg/UjgXkPWNqA
If you have WeChat account，welcome to join our community on WeChat. You can add our assistant ：openmmlabwx. Please add "mmsig + Github ID" as a remark when adding friends：）
Thank you again for your contribution❤ @gvalvano


Standalone flag

The current near-sdk build command creates a wasm file to be deployed in the js-vm. We should give users the option of creating the a standalone wasm file as well.
This could be done adding a --standalone flag to near-sdk build. In this way near-sdk build --standalone would create a wasm file ready to deploy in the classic NEAR blockchain.

The challenge is a contract on top of jsvm using some different APIs than standalone, so it's not necessarily a valid standalone contract. We're trying to abstract the API in a uniform way to make this happen

This issue was created before I had the meeting with the tooling team. Yeah, the standalone and enclave will be separated, so a flag makes no sense in such context. Will close this issue.


Add ScrollMagic plugin

On...

Before BEFORE->DURING
After AFTER->DURING
Enter *->DURING
Exit DURING->*
During DURING (only valid calls: play, follow, tween, tweenMany, move, moveMany, sequence, movie)

Call animator...

play (animation, options)
unplay (animation, options)
pause (attributes)
resume (attributes)
stop (attributes)
finish (attributes)
end (attributes)
nopeat (attributes)
queue (animation, options)
transition (transition, animation, options)
spring (spring)
follow (attribute, path, options)
restore
tween (attribute, start, end, options)
tweenMany (starts, ends, options)
tweenTo (attribute, target, options)
tweenManyTo (manyTo, options)
tweenFrom (attribute, from, options)
tweenManyFrom (manyFrom, options)
move (attribute, amount)
moveMany (many, options)
set (values)

Call animators...

sequence play|queue|transition (delay, easing, animation, options, transition)

Call movie...

play
pause
resume
reverse
backward
forward
start
end

For Inside events - call method on animator, then takes the attrimators. Manually apply the attrimators on progress update.
You can set the scene to go backwards (for scrolling in the opposite direction) which swaps progress (1 - progress) and also AFTER/BEFORE state checks.
Possible Syntax
.after(function() {
  this.animator( subject, function() {
    this.play( animation, options );
  });
  this.animators( subjects, function() {
    this.sequence( delay, easing, function() {
      this.play( animation, options );
    });
  });
  this.movie( movie, function() {
    this.play();
  });
});
.animate('after', 'animator', subject, 'play', animation, options)
.animate('during', 'movie', movie, 'play')

https://github.com/anim8js/anim8js-scrollmagic


"Gobblin project version is not set!" or jars not found/do not exist

When running the gobblin-mapreduce.sh job I always receiving a Gobblin project version is not set! response.  If I attempt to pass a version with--projectversion, then I get a <whatever>-<projectversion>.jar does not exist or can't be found in /gobblin-dist/lib/...
In gobblin-mapreduce.sh the variable is set:
# Set during the distribution build
GOBBLIN_VERSION="0.6.2-4-g1f0109a"
There is a check for a GOBBLIN_VERSION further down that seems that it will always return the "Gobblin project version is not set!" response anytime an attempt in made to run the gobblin-mapreduce.sh job with the initial build.
if ( [ -z "$GOBBLIN_VERSION" ] || [ "$GOBBLIN_VERSION" == ""0.6.2-4-g1f0109a"" ] ); then
  die "Gobblin project version is not set!"
fi
Changing [ "$GOBBLIN_VERSION" == ""0.6.2-4-g1f0109a"" ] to [ "$GOBBLIN_VERSION" != ""0.6.2-4-g1f0109a"" ] resulted in the job running successfully.

Actually, just removing the || [ "$GOBBLIN_VERSION" == ""0.6.2-4-g1f0109a"" ] seems to be a better solution.  That will still allow for other versions to be passed with --projectversion.

This seems to be a bug with the approach taken in https://github.com/linkedin/gobblin/pull/635
Sorry for the trouble. Will work on a solution to this.

It is definitely ugly. I'll take care of it!


Use Markdown in RFC phase

I want to propose to move the proposal to Markdown instead of a static PDF.
Markdown has the advantage that it can be discussed, edited and revision in an transparent and open fashion. Once the community / owner is happy a Markdown document can be rendered into any format. PDF, HTML, Word, LaTeX or whatever.
For a proper and transparent RFC I advocate strongly for modern Markdown on GitHub.

Hi!  The attribute tables (and terms) from the white paper have been translated and posted in Markdown format.  Since then the attributes has been updated as well.

There are two sources of truth now, the PDF and a Markdown.
The attributes differ between the two versions. Maybe it is better to have only one Markdown document, with easy, transparent information that allows versioning. Markdown allows building modern static websites as well.
See e.g. http://docs.fdsn.org/projects/stationxml/en/latest/index.html

PDF version has been removed. Github now only host the Markdown document.


missing translations for charger types in settings

The selection for "Tesla CCS" results in displaying "tesla_ccs" in german (with an underline). I did not found any translatable items for this section in the text file (nor in the EN one, which behaves similar).
Also, I was wondering about the displayed selection "SC" - which is (all from my point of view) the acronym for "Service Center", not Supercharger, which should be "SuC"
Nothing important at all.

Thanks, we'll fix that!

Meanwhile issue is fixed and can be closed.


Incorrect version string

In Setting/Apps/Minima/Advanced, the version string says "0.96.36", which I think might be a bit out of date.

Setting/Apps/Minima/Advaced
now says 97.5 when im running 97.7
we need to keep this up to date.
close?

What does it say when you go into Settings/App on Android?

Mine says 97.5, too - @spartacusrex99 - version string update, please :)

fixed  in 0.97.12


Version 1.0.8

I was going to submit each change as its own pull request -- and I can still do that -- but if it's easier for you, these are all the changes that I had in mind for the next release.

I'm going to close this temporarily -- I have some additional improvements in mind.


12.1.x wallet upgrade (windows)

When upgrading the Windows wallet from 12.0.58 to 12.1.0, the data directory defaults to Dash instead of DashCore. As a result, the wallet cannot be started until you delete the mncache.dat file.
If you do a clean install of 12.1.0 where the Dash data directory does not exist, you will see the default data directory gets set to Dash instead of DashCore
To replicate the upgrade issue with the mncache.dat error, I do the following:

Confirm that AppData\Roaming\Dash does not exist.
Install 12.0.58.
Accept the default data directory of AppData\Roaming\Dash
Close the wallet.
Install 12.1.0
Note that you are not prompted to set a data directory.
Receive the error Cannot obtain a lock on data directory C:\Users\username\AppData\Roaming\Dash. Dash Core is probably already running
Click OK
Delete mncache.dat
Restart wallet.

Can confirm but only partially - I get different error: "Can't load masternode cache from mncache.dat". "Lock" error should only occur if you started another copy of the wallet before you closed the other one (make sure small window "wait for..." disappears). Anyway, thanks for reporting the issue need to be addressed in some way for sure.

should be fixed  by #1287


[WFLY-14281] - Integrate MP Fault Tolerance 3.0 into EAP

Integrate MP Fault Tolerance 3.0 into Wildfly
JIRA: https://issues.redhat.com/browse/WFLY-14281
Analysis Doc PR: https://github.com/wildfly/wildfly-proposals/pull/361

@jasondlee I resolved a conflict via the GH editor. This results in another commit. Please check it and squash with the previous one.
@rhusar let me know when you guys agree this is ready

@jasondlee I resolved a conflict via the GH editor. This results in another commit. Please check it and squash with the previous one.
@rhusar let me know when you guys agree this is ready

@jasondlee I resolved a conflict via the GH editor. This results in another commit. Please check it and squash with the previous one.

I've pulled, squashed, pushed. :)

@jasondlee I resolved a conflict via the GH editor. This results in another commit. Please check it and squash with the previous one.

I've pulled, squashed, pushed. :)

@jasondlee Replaced by https://github.com/wildfly/wildfly/pull/13929 – that PR contains all the changes in here plus adds TCK and docs fixes. Thanks again Jason.
@kabir FYI

@jasondlee Replaced by https://github.com/wildfly/wildfly/pull/13929 – that PR contains all the changes in here plus adds TCK and docs fixes. Thanks again Jason.
@kabir FYI

That looks great. I'll close out this PR.

That looks great. I'll close out this PR.


symengine exponential error

symengine gives the wrong result for symengine.exp(1j*0)= nan. + nan.*I , instead of 1.

Thanks for the bug report. Fixed in https://github.com/symengine/symengine/pull/1229


Animal NPCs becoming invisible when using Sentinel

I really wonder how this could happen, but all non-human NPCs on my server become invisible once I install Sentinel. I can hear the type of mob I used (for example moo-ing in cows) but they don't appear. No errors or warnings in the logs whatsoever.
I tried respawning them, creating new ones, nothing works.
Here's my full plugin list, in case it's a known conflict.
Plugins (36): dynmap, WorldEdit, TimTheEnchanter, Sting, Spectate, Essentials, MinePacks, LogBlock, ClearLag, PluginManagerReloaded, Bloodshed, Modifyworld, WorldBorder, LWC, Multiverse-Core, WorldGuard, NoCheatPlus, Citizens, EssentialsXMPP, Admin-Chat, ChestRestock, EssentialsGeoIP, PermissionsEx, AddLight, TrollBoss, CS-CoreLib, ChatEx, EssentialsSpawn, Denizen, pvparena, HolographicDisplays, Slimefun, SlimefunLuckyBlocks, ExoticGarden, CombatIndicator, TouchscreenHolograms
I am using Citizens 2.0.21.

That shouldn't be possible to induce through Sentinel. Sentinel does not affect any of that relevant code.
It might just have forced a re-ordering of plugins, causing some bad unrelated plugin to take priority and win the fight for how entities work.

I will conduct some tests tomorrow and let you know what I find out.

Issue has randomly resolved itself. Go figure.


BLU Motion Sensor support

Is it possible to add support for a motion sensor? It would be great. The opening sensors work well.

Would love this too.

+1

Just a bump.  I’d top for this.  The motion sensor works great.  Just need to get it into HomeKit.

+1

+1


added pull request template

#29
Added a pull request template.

@ShivangRawat30 Please remove the issue template, I have added it via github. Lets keep the pretty PR template.


Release v2.6.0

v2.6.0
Major Scope

Changelog

Codecov Report

Merging #657 (ca97fd4) into master (21232a2) will increase coverage by 0.10%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master     #657      +/-   ##
==========================================
+ Coverage   96.69%   96.79%   +0.10%
==========================================
  Files          22       22
  Lines        1179     1218      +39
==========================================
+ Hits         1140     1179      +39
  Misses         39       39

Impacted Files
Coverage Δ

connaisseur/exceptions.py
100.00% <100.00%> (ø)

connaisseur/trust_root.py
100.00% <100.00%> (ø)

connaisseur/validators/cosign/cosign_validator.py
99.23% <100.00%> (-0.04%)
:arrow_down:

connaisseur/validators/notaryv1/key_store.py
100.00% <100.00%> (ø)

connaisseur/validators/notaryv1/notary.py
98.33% <100.00%> (ø)

...naisseur/validators/notaryv1/notaryv1_validator.py
98.31% <100.00%> (+0.01%)
:arrow_up:

connaisseur/validators/notaryv1/trust_data.py
100.00% <100.00%> (ø)

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 21232a2...ca97fd4. Read the comment docs.


Create IP to hostname mapping for Medusa restores

What this PR does:
Creates a mapping from the hosts in a given remote Medusa backup (on a cloud bucket) to targets derived from a K8ssandraCluster's projected hostnames.
Which issue(s) this PR fixes:
Fixes #486
Checklist

[ ] Changes manually tested
[ ] Automated Tests added/updated
[ ] Documentation added/updated
[ ] CHANGELOG.md updated (not required for documentation PRs)
[ ] CLA Signed:  DataStax CLA

It all looks very good to me @Miles-Garnsey 👍
One last thing is missing if you check #486, which is the in_place setting.
If the mapping shows exactly matching pod names between the source and the target cluster, then you're performing an in place restore (and in_place should then be true), otherwise it's a remote restore (in this case we don't restore the system.local table which contain the cluster name and tokens) .

@adejanovski my latest commit adds a function IsInPlace() to check for the condition you've described. Let me know if it is what you need.

Final unit tests finished/added. I also noticed that there is no way that we can actually restore a cluster with unbalanced racks, because we don't allow for setting rack size anywhere at the cass-operator level here so I guess all of those considerations weren't actually worth worrying about too much (or would be part of a different ticket anyway).
I think this is ready to merge if there isn't anything else to consider.

Closing in favor or #980


Add support for CKAN 2.10

This PR adds support for CKAN 2.10 and drops support for CKAN 2.8 and Python 2.7 since they will no longer by maintained by the CKAN community. (Starting CKAN 2.10).
It also modernizes the test.yaml template to use a common approach with all CKAN extensions.

@pdelboca We need to fix the GitHub pipeline, apart from that LGTM.


The Anchor feature in TransitionBase is broken

It can't handle the same Anchor being passed to multiple transitions.
It can't handle a transition's anchor being changed during a secondary build.

One possibility is to have it use GlobalKeys to track the transition.
Another is to have a TransitionBuilder helper object that you instantiate and then use to build anywhere you want that particular transition. It would own its performance, but would be able to create multiple transitions that all use the same logic. This would also remove the need for buildWithChild().

I think the builder approach is probably the way to go.

Actually we don't even need a class for this. Anyone who would take an anchor can just expose a transition builder method that takes a child and returns something prebuilt.

...except you can't easily get a hold of that object from a build() method... Hmm...

Anchor no longer exists.


Groups Detail View UI Becomes Unresponsive Under Special Circumstances.

Steps to Reproduce
(reproducible in Fire Fox)

Add several gila thistle plants to the map.
Highlight the plants from step 1 and create a new group.
From the group menu, attempt to open the detail view for the group created in  step 2.
Observe that the UI becomes unresponsive.

Observations

This does not happen with groups containing plants that have an Icon in OpenFarm, such as romaine lettuce
In groups that do cause the issue, the UI appears to be calling cachedCrop() excessively.

Affected Versions
Reproducible in 6a1ee383

Fixed.


f_onchar_create_init dosnt work

as title said. It dosnt work.

f_onchar_create does work

I think it dosnt work cos it is called from Client and client is always 0 on any serv_trigger

This check never get fired, we could remove it cos it is not needed anyway.
This is what happening if u try to create a new character

And it denys character's creation.

f_onchar_create_init doesn't work because the 2nd parameter is null, it should be pChar or &gServ.
When you do serv.log it tries to call the command on the 2nd parameter, but because there are no object nothing is displayed (it actually trhrows a warning)

&g_Serv is probably better choice here, while pChar is initialized after this function triggered.


need update and change port

Hi, I notice 2 problems with the activator, the latest finatra is 2.0.0.M3 and this activator is using M2..and the ports..activator use the same port 8888 than the activator, that means, you can run finatra inside the activator, at least, not changing the ports before, thanks!!

The latest published finatra is 2.0.0.M2. 2.0.0.M3-SNAPSHOT has not yet been released/published, thus the activator template uses what is available.
As for the port, I can update from the default of :8888 -- thanks!

Updated README.md and tutorial.


Set badge numbers

In the old infobip cordova plugin there was a feature to set the number of badges for ios.
push.setBadgeNumber(num);
Will a similar feature be added to the new infobip cordova plugin?

Current version of cordova plugin supports badge API only at server level and there are no plans to support it at client side. However you can use other plugins to set badge on iOS (like https://github.com/katzer/cordova-plugin-badge/).
You can also find reference of server API below:
Single push notification: https://dev.infobip.com/docs/send-push-notifications (https://dev.infobip.com/docs/send-push-notifications#section-notification-options)
Bulk push notifications (scheduling, campaigns, large amount of messages): https://dev.infobip.com/docs/send-bulk-push-notificatons (https://dev.infobip.com/docs/send-bulk-push-notificatons#section-notification-options)
If you can provide your use-case, we will discuss it within the team and will see if can address it in our feature roadmap for cordova plugin.

My use case is setting badge number to 0 when the the app opens after the user taps on the push notification.
Currently with my test notifications the badge number is stuck to 1.

iOS library inside this plugin does not set badge on its own, neither cordova part of the plugin. So now it can only be set through http api.
As a temporary solution I suggest you to use https://github.com/katzer/cordova-plugin-badge/. Then you will be able to call
cordova.plugins.notification.badge.clear() to clear the badge whenever you need it. I checked it with our library and there would be no conflicts.
Let me know if that works for you and I would close this issue for now. I will report here when we have badge available within our plugin.

Ok will do that, thanks.

Closing for now, to be updated with badge details once available.

Please add this to the instructions as I'm facing a similar issue.


Add discriminatedUnion schema type

Our current implementation naively goes through and tests each member in a union and reports back all errors. This is both noisy and slower for cases where the union is a discriminated union.
Adding this issue to discuss how best to tackle adding a new schema type for discriminated unions.
Some technical challenges
Async?
How do we support an async version of the schema?
Requiring schemas to be objects with the discriminate as a key
I think there should be a way to do this, but I think it needs to be absolutely type-level constrained that you can't add a schema to the union that wouldn't contain the discriminant, so it needs to exclude non-objects and objects who's shape does not include the discriminant.

I actually got to be thinking about implementing this as a part of the currently existing z.union() schema. z.union() could take an optional first parameter: z.union(discriminator, types).
Any objections?


[Fix] Fix typos in root README

Hi Tim, thanks for the tools! I play NES Tetris occasionally on my laptop and am interested in helping out in the future (maybe NESTrisChamps project). 🙂

Thank you!
nestrischamps could use some help indeed, but because it's sort of dirty (in need of some cleanup and refactoring), it's best to discuss on my yobi discord server first :)
I look forward to see you there!


Don't attempt to load worlds when changing player location

Fix https://github.com/SpongePowered/SpongeCommon/issues/2559

@Zidane Are we changing the behaviour of stable-7 to do this - or should we be looking at allowing this without setting the world - (i.e., set the location based on the existence of WorldProperties alone)?
The thing that bothers me is that this method clearly exists to set the location of a user to a world that hasn't loaded, but is enabled. If we only wanted to allow setting a player's location to a world that is loaded, then setLocation(Location<World>) would suffice, for offline and online players. I agree we shouldn't load the world, but perhaps we should set the location based on the WorldProperties existing instead.
I'd argue that this should be the case of 8 too, though I know that world management happens differently there so may need a better workaround (or just the removal of that API method, whatever you prefer).

A more "backward compatible" way of doing it would be to return false instead of throwing an exception. That's what happens when the teleport event is canceled.
AFAIK that method exists to be used by a SpongeUser (offline player) for offline location here: https://github.com/SpongePowered/SpongeCommon/blob/4db9bcd110abf7a94062f5f5a6e1a08f949238ca/src/main/java/org/spongepowered/common/mixin/api/common/entity/player/SpongeUserMixin_API.java#L117-L134
The fact Player is extending that method is a side effect. It shouldn't be used for online players just like there's no similar method for the Entity class.
For API 8 there's an opened PR changing the behaviour of the method: https://github.com/SpongePowered/SpongeCommon/pull/2558/files#diff-dbdb1fdeab655e15e5e318cbe807bf1bR451

Good point. I'd somehow missed the fact this was on Player, not User.
Well, the contract is that is passed through to setLocation(Location), and Location must have an online world in this case. However, it might be that a user is obtained by the USS and so you're just operating on User objects, not Player objects - and so you might just use this method across all entries you pull out. It shows a bit of a discrepency in the abilities of User#setLocation and Player#setLocation, though I can see why that is...
I think we should return false in this case at the very least, but:

The fact Player is extending that method is a side effect. It shouldn't be used for online players just like there's no similar method for the Entity class.

But it is there, and so we have to assume people might use it. We really cannot fall into the trap of "well, this method exists but shouldn't be used". It's there, it's potentially in use.
Kind of makes me feel like what the method is currently doing is right, to be honest. I see your point, I see @Zidane's point, but I think that it's the wrong point to make. We can use this method to send an offline player to an offline world, but not an online player to an offline world? Doesn't seem right to me.


Use native GitHub hovercards on reaction avatars

Currently, the avatars displayed next to reactions use GitHub’s old-style hovercard with just the user’s name:

However, avatars on GitHub now use this hovercard:

Would it be possible to use this hovercard on reactions?

This could work for 1 person, but we need to show a list of people who reacted.

Why not show the hovercard for each person only when hovering over their avatar?

I’d go the opposite way actually because Firefox does not support hover on elements inside the buttons. This led to us restoring the single tooltip with all the names and now it looks like that with two tooltips.
Do you know if there’s a way to see a list of all the people who reacted? Not that any of this is particularly useful information anyway…

Going to pass on this. The avatars are just meant to give an quick indication whether there are people you know that voted, not as a means of discovering new people. I would recommend submitting a feature request to GitHub instead to improve showing the people that voted natively<EMAIL_ADDRESS>


Refactoring efforts

@anmyachev worth expanding on what this entails?

@jbrockmendel This is epic for all refactorings, so that it is convenient for everyone to see in which direction the modification of the old code is going and that there are efforts to improve the quality of the code at all. At least that's how I thought of it.  But perhaps this is visible to those who use Zenhub.


Delete all should be paginated

DeleteAll done in a single transaction will often have a transactions size exceeding etcd's limit. Since we're trying to delete everything, we're not as concerned about possible data races, and instead find it worth it to split it into separate transactions.

This encountered a lot of CI failures on random tests. Since deleteAll is called from almost every test, it makes me concerned about actually merging it.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Closing this PR, as it's obsolete.