Add a :dispatch-throttle effect #250

These changes are mostly based on a similar pull request for debounced events #249

Thanks heaps for this, I especially appreciate the extensive tests :) Will take me a little bit to give it a proper review, but hope to get to it soon. If you have time, would you be able to add some docs to Effects.md for this? Otherwise I can add them. Thanks!

Thanks for the quick reply. Here are the docs :)

My expectations are that dispatch-throttle defers any event from being handled until after window-duration milliseconds has elapsed. But with this implementation that behaviour only holds true if more than 1 event is queued at one time. Unless the events are queued synchronously it is likely that they will always be dispatched immediately. I think you need to persist a last-ran timestamp so that you know when the last event occurred.
Thanks for taking the time to write this PR – Looking forward to using this. 👍

what do you mean by

"dispatch-throttle defers any event from being handled until after window-duration milliseconds has elapsed. But with this implementation that behavior only holds true if more than 1 event is queued at one time" ?

Doesn't this test case cover this scenario?
(deftest dispatch-throttle-only-trailing
  (async done
         (go
           (let [seen-events (atom [])
                 throttled-event (fn[event]
                                   {:id ::dispatch-throttle-only-trailing
                                    :window-duration 50
                                    :leading? false
                                    :trailing? true
                                    :dispatch [::type-ahead-search event seen-events]})]
             (re-frame/dispatch [::throttle-test (throttled-event "a")])
             (<! (timeout 10))
             (is (= @seen-events []))
             (<! (timeout 60))
             (is (= @seen-events ["a"]))
             (done)))))

The behavior of the first event getting dispatched immediately can be turned off by setting leading? to false. Of course, I might be missing something completely here. I am happy to work on the changes once I figure out the issues are :)

OK, understood! I think I've found the source of my confusion: to my mind, throttling is the process by which events are prevented from dispatching too quickly so an not to overwhelm another part of the system. It doesn't drop events, only defers them from running quicker than the interval specified.
I see now that your implementation is something different: you're only setting the last seen event in the throttled-events atom and using leading?, trailing? and window-duration to determine when that should be run.
Would it not make more sense to accumulate the events, rather than only defer the last seen event? After all, it's still possible to cancel older / newer events in the handler of the deferred event itself.
I'd be interested to hear your / anyone elses thoughts! :)

Ah, I see what you were saying now :) However, I can't think of a way to implement event throttling without dropping the events.
The problems I see in implementing something like this is :

This would require an unbounded queue (so we don't drop any events). Unbounded queues are almost always a bad idea.

Assuming we keep an unbounded queue of events, as the queue starts getting bigger the recent events will have to wait too long before dispatched and I can't think of  any actual use case where this would be useful.

In addition to this, we were looking at lodash's  implementation of throttle as a reference implementation.

to my mind, throttling is the process by which events are prevented from dispatching too quickly so as not to overwhelm another part of the system. It doesn't drop events, only defers them from running quicker than the interval specified.

The intent of this effect handler is to provide something similar to lodash's throttle. I can see why you might want something like what you're describing, but this isn't it :)

OK, thanks for bearing with me. I've now implemented my own fx for what I want - really easy to do in the end :)
One last suggestion: do you want to ensure that no throttled events are handled after a :cancel action is received? If so then I think a dispatch-sync is needed (though not entirely sure what the drawbacks are to this approach).
Cheers

Nice work @kp2222, looking forward to using this

After talking with @mike-thompson-day8 we've decided we'd prefer to keep this and #249 as separate FX handlers that aren't part of re-frame core. They'll still be advertised like other effects in libs so people can learn about them. This is mainly as people have different preferences for these kinds of FX, to reduce the maintenance burden on re-frame, and that they probably don't belong as part of the naked robotic core of re-frame.
@kp2222 if you end up putting this PR into a library, I'm happy to add #249 to it as, as debounce and throttle are quite similar.
Sorry for the delay and run-around after inviting PR's for this feature 🙏.

+1 for breaking this out in a separate lib.


fix f5 in chrome

firefox handles f5 properly out of the box, didn't check other browsers

the diff only applies to jsonnet/windows_shortcuts.jsonnet, but CI says that json/windows_shortcuts.json was changed. Not sure what to do

It's detecting a difference between the JSON file on your branch and the one on the main branch. You should just be able to resync the branches to make sure you've got the latest changes from main.


evince: enable all features

Motivation for this change
I could no longer open postscript files in evince.  While I was at it, I also enabled all other formats (DVI, XPS, PDF multimedia) as well as the nautilus extension.  (The only features not enabled now are the browser plugin, the API docs, and the thumbnail cache.)
There is a slight increase in closure size (probably due to the gstreamer/nautilus dependency):
 nix path-info -shS result/ (which evince)   Mon 25 Mar 2019 03:35:30 PM CET
/nix/store/kd01ji4sb5pgnrjs3lzvgi3c279f1mjd-evince-3.30.2         11.2M  954.3M
/nix/store/rcy2ii19gx1mkqxzvr20jkj2jdzp83n1-evince-3.30.2         11.0M  420.4M

Many of these dependencies are probably already in the system closure (e.g. nautilus depends on gstreamer as well).  We could add an evinceLight version that disables some/most features.
cc @jtojnar @vcunat
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[x] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[x] Assured whether relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

The postscript fix needs to be backported to the release branch as well.

The postscript fix needs to be backported to the release branch as well.

Does that mean you want this change for 19.03 directly?
You should probably make this pr against 19.03 then, as my comment above won't be a problem.

The postscript fix needs to be backported to the release branch as well.
Does that mean you want this change for 19.03 directly?
You should probably make this pr against 19.03 then, as my comment above won't be a problem.

Postscript support used to work in 18.09; so I'd like to see this regression fixed soon and also for the 19.03 release.
I could make one PR just for the postscript fix for master/19.03, and then make the other changes against the 3.32 branch (including meson migration if you want).  @worldofpeace Does that work for you?

I don't see too much of a problem with this aside from enabling the nautilus plugin by default.  (nautilus isn't present everywhere this is used)

Evince should work just fine even if you don't use nautilus.  The flag just builds an extension for nautilus, which shows additional file properties.
  I don't really need the extension, but it is an easy addition which is hard to build otherwise.

Can we wait with this until GNOME 3.32 is merged? The expression was
massively rewritten.
Moreover, we do not actually want Evince to depend on Nautilus, we would
need to move the module to a separate output as Deja Dup does, I think.
On Mon, 25 Mar 2019, 15:49 Gabriel Ebner<EMAIL_ADDRESS>wrote:

The postscript fix needs to be backported to the release branch as well.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/NixOS/nixpkgs/pull/58259#issuecomment-476230424, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AArCYzxFr7I2obmc3zuOvSY-Ihnh78_eks5vaOH5gaJpZM4cHEcv
.

My actual problem with the extension can be seen at https://github.com/NixOS/nixpkgs/issues/32817.
We're yet to implement that, which is why I think it was disabled.
Though I think we should be fine to fix this just for 19.03

:smile: Looks like we responded at the same time.

Ok, I pushed just the postscript bugfix to 19.03 and master now.  I'll make a new PR against gnome-3.32 that enables the other backends but keeps the nautilus extension disabled for now.


Js operators

What is the change?
Added Javascript Operators  markdown
Related issue?
closes: #55
Checklist:
Before you create this PR, confirm all the requirements listed below by checking the checkboxes [x]:

[x] I have followed the Code of Conduct.
[X] I have  checked there aren't other open Pull Requests for the same update/change.
[X] My changes generates no new warnings.
[X] I'm HSoC '22 contributor.

Screenshots (if any)

@vickyrules congratulations PR approved 🔥🔥


Create map view

Requires a new Header, featuring blur and a modal for an account management

Temporary map image is now used instead of the whole Map SDK. To be changed.

Completed as of b98d7b2.


Is there any limit for preloading sounds for prod build on iOS?

:beetle: Description
The limit for preloading sounds on iOS.
:beetle: What have you tried?
I'm trying to preload more than 300 short sounds via new Sound('file-name.mp3', Sound.MAIN_BUNDLE, () => {}); at the same time, but have no luck loading all sounds. It only loads about 150 sounds and that's it.
Also, I would like to mention that this happened for prod build on iOS, but on dev build it works fine.
:beetle: Please post your code:
// sounds = Array<{ title: string; value: string }>

  loadSounds = async (sounds) => {
    const promisifiedSounds = sounds.map((sound) => {
      return new Promise((res, rej) => {
        const currentSound = new Sound(sound.value, Sound.MAIN_BUNDLE, (error) => {
          if (error) {
            console.info('failed to load the sound ', error);
            rej(error);
          }

          currentSound.setVolume(1);

          res(currentSound);
        });
      });
    });

    const data = await Promise.all(promisifiedSounds);

    return data;
  }

Is your issue with...

iOS

Are you using...

React Native CLI (e.g. react-native run-ios)

Which versions are you using?

React Native Sound: ^0.11.1
React Native: 0.65.1
iOS: 14.7.1

Does the problem occur on...

Device

If your problem is happening on a device, which device?

Device: iPhone 11 (iOS 14.7.1)

I have the same issue as IOS Prod didnt play any sound, but debug works well. Any solution?

I figured this issue out.
Instead of loading all sounds after app initialization, just load one sound when the user pressed to play button.
And that's it.
It takes some milliseconds to load your sound but it works perfectly for dev and prod builds.


Automated cherry pick of #9732

Cherry pick of #9732 on release-6.3.
/cc  @M-ZubairAhmed
NONE

Note: once merged, cherry-pick https://github.com/mattermost/mattermost-webapp/pull/9918.

Will try to auto merge this PR once all tests and checks are passing. This might take up to an hour.

Trying to auto merge this PR.

Pull Request successfully merged
SHA: 435aa5c38c1c13783156566795509c94a487dbbc


Updated announcement with Robusta Careers page

Modified the announcement in the Docs from this:

To this:

with a URL pointing to the Robusta Careers page(https://home.robusta.dev/jobs/).

Looks good, thanks.


Example on README is not correct

Hi,
In the example for the JSON module on the README, I think Joken.Json should be Joken.Codec.

I'll push out an update when I can. The current ddosing of GitHub is making it difficult to do some things (including replying to this issue).

I pushed an update to Hex (0.10.1) that should have the correct docs


"A fatal error has been detected by the Java Runtime Environment"

********** Robot program starting **********
NT: server: client CONNECTED: <IP_ADDRESS> port 60883
Opening USB  serial port to communicate with navX-MXP/Micro
navX-MXP/Micro Connected via USB.
navX-MXP/Micro Configuration Response Received.
HI!
1
12.857513427734375
0.0
HI!
A fatal error has been detected by the Java Runtime Environment:
SIGSEGV (0xb) at pc=0xa9c0d398, pid=17983, tid=0xb52ab470
JRE version: OpenJDK Runtime Environment (8.0_131-b57) (build 1.8.0_131-b57)
Java VM: OpenJDK Client VM (25.131-b57 mixed mode, Evaluation linux-aarch32 )
Problematic frame:
C  [libpathfinderjava.so+0x6398]  pf_trajectory_fromSecondOrderFilter+0x2c8
Core dump written. Default location: //core or core.17983 (max size 2048 kB). To ensure a full core dump, try "ulimit -c unlimited" before starting Java again
An error report file with more information is saved as:
/tmp/hs_err_pid17983.log
I'm really new to motion profiling and thought I'd use these libraries but upon startup I get this error. What do I need to provide to help alleviate this problem?

The library isn't particularly resilient to incorrect initialization. Perhaps if you posted your code we could point out what you missed?

`public interface RobotMap
{
public interface PROFILING
{
public static final Waypoint[]
			MID_TO_RIGHT_SWITCH =
			{
				new Waypoint(0, 0, 0),
				new Waypoint(0.288, 11.167, Pathfinder.d2r(357.04)),
				new Waypoint(1.163, 22.333, Pathfinder.d2r(353.98)),
				new Waypoint(2.660, 33.500, Pathfinder.d2r(350.71)),
				new Waypoint(4.847, 44.667, Pathfinder.d2r(347.07)),
				new Waypoint(7.839, 55.833, Pathfinder.d2r(342.82)),
				new Waypoint(11.845, 67.000, Pathfinder.d2r(337.51)),
				new Waypoint(17.279, 78.167, Pathfinder.d2r(330.20)),
				new Waypoint(25.206, 89.333, Pathfinder.d2r(318.07)),
				new Waypoint(46.516, 100.5, Pathfinder.d2r(270.00))
			},

			MID_TO_LEFT_SWITCH =
			{
				new Waypoint(0, 0, 0),
				new Waypoint(-1.125, 11.167, Pathfinder.d2r(11.51)),
				new Waypoint(4.648, 22.333, Pathfinder.d2r(23.51)),
				new Waypoint(-10.681, 33.500, Pathfinder.d2r(30)),
				new Waypoint(-17.128, 44.667, Pathfinder.d2r(30)),
				new Waypoint(-23.575, 55.833, Pathfinder.d2r(30)),
				new Waypoint(-30.022, 67.000, Pathfinder.d2r(30)),
				new Waypoint(-36.469, 78.167, Pathfinder.d2r(30)),
				new Waypoint(-42.196, 89.333, Pathfinder.d2r(30)),
				new Waypoint(-61.508, 100.5, Pathfinder.d2r(90))
			};
}`

I declare my waypoints in RobotMap like so. It is used inside of a constructor in the command "DriveAlongProfile."
DriveAlongProfile:
`package org.usfirst.frc.team135.robot.commands.auton.singles;
import org.usfirst.frc.team135.robot.Robot;
import org.usfirst.frc.team135.robot.RobotMap;
import org.usfirst.frc.team135.robot.RobotMap.COMPETITION.DRIVETRAIN;
import org.usfirst.frc.team135.robot.util.PIDIn;
import org.usfirst.frc.team135.robot.util.PIDOut;
import edu.wpi.first.wpilibj.PIDController;
import edu.wpi.first.wpilibj.PIDSourceType;
import edu.wpi.first.wpilibj.Timer;
import edu.wpi.first.wpilibj.command.Command;
import jaci.pathfinder.*;
import jaci.pathfinder.followers.EncoderFollower;
import jaci.pathfinder.modifiers.TankModifier;
/**
*
*/
public class DriveAlongProfile extends Command implements RobotMap {
private Waypoint[] _points;
private Trajectory _leftTrajectory, _rightTrajectory;
private EncoderFollower _leftEncoderFollower, _rightEncoderFollower;

private static final Trajectory.FitMethod _FIT_METHOD = Trajectory.FitMethod.HERMITE_QUINTIC;

private static final int _SAMPLES = Trajectory.Config.SAMPLES_HIGH;

private static final double
	_TIMESTEP = 0.05, //In seconds
	_MAX_VELOCITY = DRIVETRAIN.MAX_VELOCITY_TICKS * CONVERSIONS.TICKS2METERS,
	_MAX_ACCELERATION = DRIVETRAIN.MAX_ACCELERATION_TICKS * CONVERSIONS.TICKS2METERS,
	_MAX_JERK = DRIVETRAIN.MAX_JERK_TICKS * CONVERSIONS.TICKS2METERS;

private static final double _VELOCITY_RATIO = 1 / _MAX_VELOCITY;

private static final double
	_drivekP = 1.0,
	_drivekI = 0.01,
	_drivekD = 10.0,
	_drivekA = 0; //Acceleration gain. Tweak this if you want to go to accelerate faster.

private PIDController _angleController;
private PIDOut _buffer;
private PIDIn _pidSource;

private static final double
	_turnkP = .267,
	_turnkI = 0.00267,
	_turnkD = 2.67,
	_turnkF = 0; //There might be some error causing real world process we can take out with kF

private static final double _TRACK_WIDTH = DRIVETRAIN.TRACK_WIDTH * CONVERSIONS.INCHES2METERS; //Jaci calls this wheelbase width

private Timer _timer;
private double _timeout = 5.0;

private boolean _done = false;

public DriveAlongProfile(Waypoint[] points, double timeout) {
	requires(Robot.drivetrain);

	this._timer = new Timer();
	this._timeout = timeout;

	this._points = points.clone(); //Don't want a reference of points, I want a copy of it

	this._buffer = new PIDOut();
	this._pidSource = new PIDIn(() -> Robot.navx.getFusedAngle(), PIDSourceType.kDisplacement);

	this._angleController = new PIDController(DriveAlongProfile._turnkP,
												DriveAlongProfile._turnkI,
												DriveAlongProfile._turnkD,
												DriveAlongProfile._turnkF,
												this._pidSource,
												this._buffer);

	Trajectory.Config baseTrajectoryConfig = new Trajectory.Config(DriveAlongProfile._FIT_METHOD,
																	DriveAlongProfile._SAMPLES,
																	DriveAlongProfile._TIMESTEP,
																	DriveAlongProfile._MAX_VELOCITY,
																	DriveAlongProfile._MAX_ACCELERATION,
																	DriveAlongProfile._MAX_JERK);

	Trajectory baseTrajectory = Pathfinder.generate(this._points, baseTrajectoryConfig);

	TankModifier modifier = new TankModifier(baseTrajectory);

	modifier.modify(DriveAlongProfile._TRACK_WIDTH);

	this._leftTrajectory = modifier.getLeftTrajectory();
	this._rightTrajectory = modifier.getRightTrajectory();

	this._leftEncoderFollower = new EncoderFollower(this._leftTrajectory);
	this._rightEncoderFollower = new EncoderFollower(this._rightTrajectory);

}

// Called just before this Command runs the first time
protected void initialize() {

	this._leftEncoderFollower.configureEncoder((int)Robot.drivetrain.getEncoderCounts(Robot.drivetrain.frontLeftTalon),
												(int)CONVERSIONS.REVS2TICKS,
												DRIVETRAIN.WHEEL_DIAMETER * CONVERSIONS.INCHES2METERS);

	this._rightEncoderFollower.configureEncoder((int)Robot.drivetrain.getEncoderCounts(Robot.drivetrain.frontRightTalon),
												(int)CONVERSIONS.REVS2TICKS,
												DRIVETRAIN.WHEEL_DIAMETER * CONVERSIONS.INCHES2METERS);

	this._leftEncoderFollower.configurePIDVA(DriveAlongProfile._drivekP,
												DriveAlongProfile._drivekI,
												DriveAlongProfile._drivekD,
												DriveAlongProfile._VELOCITY_RATIO,
												DriveAlongProfile._drivekA);

	this._rightEncoderFollower.configurePIDVA(DriveAlongProfile._drivekP,
												DriveAlongProfile._drivekI,
												DriveAlongProfile._drivekD,
												DriveAlongProfile._VELOCITY_RATIO,
												DriveAlongProfile._drivekA);

	this._angleController.setInputRange(0, 360);
	this._angleController.setContinuous(true);
	this._angleController.setOutputRange(-.5, .5);
	this._angleController.setAbsoluteTolerance(.2);

	this._angleController.enable();
	this._timer.start();
}

// Called repeatedly when this Command is scheduled to run
protected void execute()
{
	double left = this._leftEncoderFollower.calculate((int) Robot.drivetrain.getEncoderCounts(Robot.drivetrain.frontLeftTalon));
	double right = this._rightEncoderFollower.calculate((int) Robot.drivetrain.getEncoderCounts(Robot.drivetrain.frontRightTalon));
	double heading = (this._leftEncoderFollower.getHeading() + this._rightEncoderFollower.getHeading()) / 2;

	this._angleController.setSetpoint(Pathfinder.r2d(heading) % 360);

	if (this._timer.get() >= this._timeout)
	{
		this._done = true;
		return;
	}
	else if (left == 0 && right == 0 && this._buffer.output == 0)
	{
		this._done = true;
		return;
	}

	left += this._buffer.output;
	right -= this._buffer.output;

	Robot.drivetrain.driveTank(left, right);
}

// Make this return true when this Command no longer needs to run execute()
protected boolean isFinished() {
    return this._done;
}

// Called once after isFinished returns true
protected void end()
{
	Robot.drivetrain.stopMotors();
}

// Called when another command which requires one or more of the same
// subsystems is scheduled to run
protected void interrupted()
{
	this.end();
}

}`
This command is called within a command group called "MidToSwitch"
MidToSwitch:
`package org.usfirst.frc.team135.robot.commands.auton.groups;
import org.usfirst.frc.team135.robot.RobotMap;
import org.usfirst.frc.team135.robot.commands.auton.singles.DriveAlongProfile;
import org.usfirst.frc.team135.robot.commands.auton.singles.SetLiftPosition;
import org.usfirst.frc.team135.robot.commands.teleop.ExtendMandibles;
import org.usfirst.frc.team135.robot.commands.teleop.GrabMandibles;
import edu.wpi.first.wpilibj.command.CommandGroup;
/**
*
*/
public class MidToSwitch extends CommandGroup implements RobotMap{
private static final double
	SPEED = 1.0,
	TIMEOUT = 5.0;

public MidToSwitch(boolean switchIsRight) {

	addSequential(new ExtendMandibles());
   	addSequential(new SetLiftPosition(COMPETITION.LIFT.SWITCH_POSITION));

	if(switchIsRight)
	{
		addSequential(new DriveAlongProfile(PROFILING.MID_TO_RIGHT_SWITCH, MidToSwitch.TIMEOUT));
	}
	else
	{
		addSequential(new DriveAlongProfile(PROFILING.MID_TO_LEFT_SWITCH, MidToSwitch.TIMEOUT));
	}

   	addSequential(new GrabMandibles());

}

}`
This is grouped within another command group that makes the decision of which middle autonomous routine to run.
`package org.usfirst.frc.team135.robot.commands.auton.entrypoints;
import org.usfirst.frc.team135.robot.Robot;
import org.usfirst.frc.team135.robot.commands.auton.groups.MidToSwitch;
import org.usfirst.frc.team135.robot.commands.auton.singles.InitializeAngle;
import edu.wpi.first.wpilibj.DriverStation;
import edu.wpi.first.wpilibj.command.CommandGroup;
import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;
/**
*
*/
public class MiddlePosition extends CommandGroup {
private static final int
	RIGHT = 0,
	LEFT = 1,
	INVALID = -1;

public MiddlePosition() {
	int switchPosition = getSwitchPosition(DriverStation.getInstance().getGameSpecificMessage());

	addSequential(new InitializeAngle(270));

	System.out.println(switchPosition);

	if (SmartDashboard.getBoolean("Try to go for Switch?", true) && !SmartDashboard.getBoolean("Try to go for Scale?", false))
	{
		System.out.println(Robot.navx.getFusedAngle());
		if (switchPosition == RIGHT)
		{

			addSequential(new MidToSwitch(true));
		}
		else if (switchPosition == LEFT)
		{
			System.out.println(Robot.navx.initAngle);
			addSequential(new MidToSwitch(false));
		}
		else
		{

		}
	}
	else
	{

	}
}

private int getSwitchPosition(String msg)
{
	if (msg.toUpperCase().charAt(0)  == 'L') //Switch is straight up from us
	{
		return LEFT;
	}
	else if (msg.toUpperCase().charAt(0)  == 'R') //Switch is far away from us
	{
		return RIGHT;
	}
	else
	{
		System.out.println("Unable to get a valid game specific message. Only running autoline.");
		return INVALID;
	}
}

}`
Finally they are added as choosers to the SmartDashboard.
`public void robotInit() {
//Order does matter.
	navx = NavX.getInstance();
	canifier = Canifier.getInstance();
	ultrasonic = UltrasonicSensor.getInstance();
	drivetrain = DriveTrain.getInstance();
	hang = Hang.getInstance();
	intake = Intake.GetInstance();
	lift = Lift.getInstance();
	oi = OI.getInstance();

	//CameraServer.getInstance().startAutomaticCapture();

	m_chooser.addObject("Left Position", new LeftPosition());
	m_chooser.addObject("Middle Position", new MiddlePosition());
	m_chooser.addObject("Right Position", new RightPosition());
	SmartDashboard.putData("Auto mode", m_chooser);

	SmartDashboard.setPersistent("Try to go for Scale?");
	SmartDashboard.setPersistent("Try to go for Switch?");
	SmartDashboard.setPersistent("Prefer Switch or Scale?");

}`

In the future please post code in a gist, it's very hefty to read in an issue report.
Usually this issue appears if your path is invalid, change your waypoints to make sure they fit within your drivetrain constraints.

We have the same error and our waypoint is just moving to a waypoint of 5,0,0 from 0,0,0

I'm having the same error.

@JacisNonsense  I'm having an issue with this as well. When the robot tries to load the trajectory file, It crashes. Here is my program I am running: https://github.com/FRCTeam3206/2019Subsystems-Java/tree/master/HobbesPathweaver
Here is the RioLog Error I am receiving:
RioLog Error Pathweaver.txt


Remove Prov suffix

Remove Prov suffix that was present on a handful of extension functions. These were here for legacy reasons dating back from the legacy p8e was owned inside of the Figure private repo.

Codecov Report

Merging #15 (6618f71) into main (23e859e) will not change coverage.
The diff coverage is 40.00%.

@@            Coverage Diff            @@
##               main      #15   +/-   ##
=========================================
  Coverage     38.88%   38.88%
  Complexity       31       31
=========================================
  Files             9        9
  Lines           679      679
  Branches         69       69
=========================================
  Hits            264      264
  Misses          389      389
  Partials         26       26

Impacted Files
Coverage Δ

.../src/main/kotlin/io/provenance/scope/sdk/Client.kt
8.88% <0.00%> (ø)

.../kotlin/io/provenance/scope/sdk/ExecutionResult.kt
0.00% <0.00%> (ø)

...n/kotlin/io/provenance/scope/sdk/SessionBuilder.kt
61.90% <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 23e859e...6618f71. Read the comment docs.

Looks good, I think the one example is just failing to build due to the indexer argument change, but maybe you already fixed that elsewhere

I just fixed that. This build should be green.


There was a problem getting the details of the CS/WI for the build TypeError: Cannot read property 'repository' of null

Azure DevOps Extensions
Generate Release Notes (Node Cross Platform)
Platform
Azure DevOps Services
Azure DevOps Server (TFS) Version
No response
Extension Version
3.63.2
Describe the bug
Work items and release notes not generating. Followed instructions in #1048 but plugin continues to return 0 work items. The commits and work items are visible in the release pipeline (Stage->Work Items).

https://github.com/rfennell/AzurePipelines/issues/1048

Repo Steps
1. add task to pipeline
2. create release

Expected Behavior
work items and commits linked to release available in template.

Logging Information
2021-09-20T16:55:49.6330959Z ##[debug]Evaluating condition for step: 'Generate Release Notes based on Release Comparison API'
2021-09-20T16:55:49.6332618Z ##[debug]Evaluating: succeeded()
2021-09-20T16:55:49.6333101Z ##[debug]Evaluating succeeded:
2021-09-20T16:55:49.6334404Z ##[debug]=> True
2021-09-20T16:55:49.6334966Z ##[debug]Result: True
2021-09-20T16:55:49.6335547Z ##[section]Starting: Generate Release Notes based on Release Comparison API
2021-09-20T16:55:49.6344935Z ==============================================================================
2021-09-20T16:55:49.6345277Z Task         : Generate Release Notes (Crossplatform)
2021-09-20T16:55:49.6345625Z Description  : Generates a release notes file in a format of your choice from the build or release history
2021-09-20T16:55:49.6346635Z Version      : 3.63.2
2021-09-20T16:55:49.6347026Z Author       : Black Marble
2021-09-20T16:55:49.6347865Z Help         : Version: 3.63.2. [More Information](https://github.com/rfennell/AzurePipelines/wiki/GenerateReleaseNotes---Node-based-Cross-Platform-Task/)
2021-09-20T16:55:49.6349171Z ==============================================================================
2021-09-20T16:55:49.6571411Z ##[debug]Using node path: /home/vsts/agents/2.192.0/externals/node10/bin/node
2021-09-20T16:55:49.7625630Z ##[debug]agent.TempDirectory=/home/vsts/work/_temp
2021-09-20T16:55:49.7650125Z ##[debug]loading inputs and endpoints
2021-09-20T16:55:49.7658944Z ##[debug]loading INPUT_OUTPUTFILE
2021-09-20T16:55:49.7674925Z ##[debug]loading INPUT_OUTPUTVARIABLENAME
2021-09-20T16:55:49.7676422Z ##[debug]loading INPUT_TEMPLATELOCATION
2021-09-20T16:55:49.7677810Z ##[debug]loading INPUT_TEMPLATEFILE
2021-09-20T16:55:49.7678955Z ##[debug]loading INPUT_INLINETEMPLATE
2021-09-20T16:55:49.7680025Z ##[debug]loading INPUT_CHECKSTAGE
2021-09-20T16:55:49.7681076Z ##[debug]loading INPUT_STOPONREDEPLOY
2021-09-20T16:55:49.7682079Z ##[debug]loading INPUT_SORTCS
2021-09-20T16:55:49.7683074Z ##[debug]loading INPUT_SORTWI
2021-09-20T16:55:49.7684137Z ##[debug]loading INPUT_SHOWONLYPRIMARY
2021-09-20T16:55:49.7685133Z ##[debug]loading INPUT_SEARCHCROSSPROJECTFORPRS
2021-09-20T16:55:49.7686263Z ##[debug]loading INPUT_DUMPPAYLOADTOCONSOLE
2021-09-20T16:55:49.7687355Z ##[debug]loading INPUT_DUMPPAYLOADTOFILE
2021-09-20T16:55:49.7688350Z ##[debug]loading INPUT_DUMPPAYLOADFILENAME
2021-09-20T16:55:49.7690851Z ##[debug]loading INPUT_REPLACEFILE
2021-09-20T16:55:49.7692794Z ##[debug]loading INPUT_APPENDTOFILE
2021-09-20T16:55:49.7694637Z ##[debug]loading INPUT_CUSTOMHANDLEBARSEXTENSIONFILE
2021-09-20T16:55:49.7697796Z ##[debug]loading INPUT_GETPARENTSANDCHILDREN
2021-09-20T16:55:49.7698297Z ##[debug]loading INPUT_GETALLPARENTS
2021-09-20T16:55:49.7698893Z ##[debug]loading INPUT_GETINDIRECTPULLREQUESTS
2021-09-20T16:55:49.7699348Z ##[debug]loading INPUT_MAXRETRIES
2021-09-20T16:55:49.7699788Z ##[debug]loading INPUT_PAUSETIME
2021-09-20T16:55:49.7702675Z ##[debug]loading INPUT_STOPONERROR
2021-09-20T16:55:49.7703170Z ##[debug]loading INPUT_CONSIDERPARTIALLYSUCCESSFULRELEASES
2021-09-20T16:55:49.7703775Z ##[debug]loading ENDPOINT_AUTH_SYSTEMVSSCONNECTION
2021-09-20T16:55:49.7704239Z ##[debug]loading ENDPOINT_AUTH_SCHEME_SYSTEMVSSCONNECTION
2021-09-20T16:55:49.7705670Z ##[debug]loading ENDPOINT_AUTH_PARAMETER_SYSTEMVSSCONNECTION_ACCESSTOKEN
2021-09-20T16:55:49.7706197Z ##[debug]loaded 27
2021-09-20T16:55:49.7711822Z ##[debug]Agent.ProxyUrl=undefined
2021-09-20T16:55:49.7712279Z ##[debug]Agent.CAInfo=undefined
2021-09-20T16:55:49.7712698Z ##[debug]Agent.ClientCert=undefined
2021-09-20T16:55:49.7713151Z ##[debug]Agent.SkipCertValidation=undefined
2021-09-20T16:55:49.8945229Z ##[debug]Starting Tag XplatGenerateReleaseNotes task
2021-09-20T16:55:49.8946357Z ##[debug]System.TeamFoundationCollectionUri=https://dev.azure.com/BumpCBN/
2021-09-20T16:55:49.8947143Z ##[debug]System.TeamProject=BumpCBN
2021-09-20T16:55:49.8950045Z ##[debug]templateLocation=InLine
2021-09-20T16:55:49.8951190Z ##[debug]templatefile=/home/vsts/work/r1/a
2021-09-20T16:55:49.8953406Z ##[debug]inlinetemplate={{#forEach builds}} {{#if isFirst}}## Builds {{/if}}

Build {{this.build.buildNumber}} {{#forEach this.commits}}
CS {{this.id}}
Message: {{this.message}} {{/forEach}} {{#forEach this.workitems}}
WI {{this.id}}
Title {{lookup this.fields 'System.Title'}} {{/forEach}} {{#forEach this.tests}}
Test {{this.id}}
Name {{this.testCase.name}}
Outcome {{this.outcome}} {{/forEach}} {{/forEach}}
2021-09-20T16:55:49.8955303Z ##[debug]outputfile=/home/vsts/work/r1/a/output.md
2021-09-20T16:55:49.8956078Z ##[debug]outputVariableName=output.md
2021-09-20T16:55:49.8956843Z ##[debug]showOnlyPrimary=False
2021-09-20T16:55:49.8957778Z ##[debug]replaceFile=True
2021-09-20T16:55:49.8958509Z ##[debug]appendToFile=True
2021-09-20T16:55:49.8959211Z ##[debug]getParentsAndChildren=False
2021-09-20T16:55:49.8959971Z ##[debug]searchCrossProjectForPRs=False
2021-09-20T16:55:49.8960692Z ##[debug]overrideStageName=undefined
2021-09-20T16:55:49.8961396Z ##[debug]stopOnRedeploy=False
2021-09-20T16:55:49.8962095Z ##[debug]SortWi=False
2021-09-20T16:55:49.8962768Z ##[debug]SortCS=False
2021-09-20T16:55:49.8963488Z ##[debug]customHandlebarsExtensionCode=undefined
2021-09-20T16:55:49.8964369Z ##[debug]customHandlebarsExtensionFile=customHandlebarsExtension
2021-09-20T16:55:49.8965102Z ##[debug]customHandlebarsExtensionFolder=undefined
2021-09-20T16:55:49.8965793Z ##[debug]gitHubPat=undefined
2021-09-20T16:55:49.8966452Z ##[debug]bitbucketSecret=undefined
2021-09-20T16:55:49.8967112Z ##[debug]bitbucketUser=undefined
2021-09-20T16:55:49.8967771Z ##[debug]dumpPayloadToFile=false
2021-09-20T16:55:49.8968465Z ##[debug]dumpPayloadToConsole=false
2021-09-20T16:55:49.8969198Z ##[debug]dumpPayloadFileName=$(Build.ArtifactStagingDirectory)/payload.json
2021-09-20T16:55:49.8969907Z ##[debug]checkStage=false
2021-09-20T16:55:49.8971141Z ##[debug]getAllParents=False
2021-09-20T16:55:49.8971767Z ##[debug]tags=undefined
2021-09-20T16:55:49.8972322Z ##[debug]overridePat=undefined
2021-09-20T16:55:49.8972913Z ##[debug]overrideBuildReleaseId=undefined
2021-09-20T16:55:49.8973467Z ##[debug]getIndirectPullRequests=False
2021-09-20T16:55:49.8974064Z ##[debug]stopOnError=False
2021-09-20T16:55:49.8974643Z ##[debug]considerPartiallySuccessfulReleases=False
2021-09-20T16:55:49.8975204Z ##[debug]maxRetries=20
2021-09-20T16:55:49.8975713Z ##[debug]Build.BuildId=159
2021-09-20T16:55:49.8976252Z ##[debug]Release.ReleaseId=59
2021-09-20T16:55:49.8976795Z ##[debug]Release.DefinitionId=1
2021-09-20T16:55:49.8977357Z ##[debug]Release_EnvironmentName=Release Notes
2021-09-20T16:55:49.8977920Z ##[debug]ReleaseNotes.Fix349=true
2021-09-20T16:55:49.9000014Z Creating Azure DevOps API connections for https://dev.azure.com/BumpCBN/ with 'allowRetries' set to 'true' and 'maxRetries' count to '20'
2021-09-20T16:55:49.9001525Z ##[debug]Getting System.AccessToken
2021-09-20T16:55:49.9002285Z ##[debug]Getting credentials the agent is running as
2021-09-20T16:55:49.9004740Z ##[debug]SYSTEMVSSCONNECTION exists true
2021-09-20T16:55:49.9005508Z ##[debug]Found an OAUTH token
2021-09-20T16:55:49.9006037Z Creating the credential handler from the OAUTH token
2021-09-20T16:55:50.1241085Z Getting the current release details
2021-09-20T16:55:50.2874370Z Show associated items for primary artifact only is set to false
2021-09-20T16:55:50.2878504Z Getting the Environment Id
2021-09-20T16:55:50.2880615Z Identified [release notes] as having id [8]
2021-09-20T16:55:50.2887486Z Finding successful deployments
2021-09-20T16:55:50.3740466Z Found 13 releases to consider
2021-09-20T16:55:50.3742554Z ##[debug]Found ReleaseID 50 with the Status 4
2021-09-20T16:55:50.3743715Z ##[debug]Found ReleaseID 49 with the Status 4
2021-09-20T16:55:50.3745484Z ##[debug]Found ReleaseID 48 with the Status 4
2021-09-20T16:55:50.3746592Z ##[debug]Found ReleaseID 46 with the Status 4
2021-09-20T16:55:50.3747435Z ##[debug]Found ReleaseID 44 with the Status 4
2021-09-20T16:55:50.3748499Z ##[debug]Found ReleaseID 43 with the Status 4
2021-09-20T16:55:50.3749237Z ##[debug]Found ReleaseID 42 with the Status 4
2021-09-20T16:55:50.3753126Z ##[debug]Found ReleaseID 38 with the Status 4
2021-09-20T16:55:50.3755929Z ##[debug]Found ReleaseID 37 with the Status 4
2021-09-20T16:55:50.3758470Z ##[debug]Found ReleaseID 36 with the Status 4
2021-09-20T16:55:50.3760841Z ##[debug]Found ReleaseID 29 with the Status 4
2021-09-20T16:55:50.3763194Z ##[debug]Found ReleaseID 27 with the Status 4
2021-09-20T16:55:50.3771796Z ##[debug]Found ReleaseID 26 with the Status 4
2021-09-20T16:55:50.3772779Z Finding the last successful release 2<IP_ADDRESS>
2021-09-20T16:55:50.3774476Z Getting all artifacts in the current release...
2021-09-20T16:55:50.3781348Z Found 1 artifacts for current release
2021-09-20T16:55:50.4535119Z Getting all artifacts in the most recent successful release [2<IP_ADDRESS>]...
2021-09-20T16:55:50.4537528Z Found 1 artifacts for most recent successful release
2021-09-20T16:55:50.4543363Z Looking at artifact [bump-core]
2021-09-20T16:55:50.4543692Z Artifact type [Build]
2021-09-20T16:55:50.4543962Z Build Definition ID [11]
2021-09-20T16:55:50.4544223Z Build Number: [20210917.1]
2021-09-20T16:55:50.4544525Z Is Primary: [true]
2021-09-20T16:55:50.4545101Z Looking for the [bump-core] in the most recent successful release [2<IP_ADDRESS>]
2021-09-20T16:55:50.4545749Z Found artifact [bump-core] with build number [1346959e] in release [2<IP_ADDRESS>]
2021-09-20T16:55:50.4546268Z Checking what commits and workitems have changed from [1346959e][ID 1346959ef06b5be4f90b400af6797a53ab6a6b74] => [20210917.1] [ID 159]
2021-09-20T16:55:50.4546741Z Using workaround for build API limitation (see issue #349)
2021-09-20T16:55:50.6258166Z There was a problem getting the details of the CS/WI for the build TypeError: Cannot read property 'repository' of null
2021-09-20T16:55:50.6258779Z Getting test associated with the latest build [159]
2021-09-20T16:55:50.8464967Z ##[debug]Found 0 automated test results associated with the build
2021-09-20T16:55:50.8465980Z ##[debug]No automated tests associated with build 159
2021-09-20T16:55:50.8466482Z Found 0 test associated with the build [159] adding any not already in the global test list to the list
2021-09-20T16:55:50.8467059Z ##[debug]The global test array contains 0 items
2021-09-20T16:55:50.8467566Z ##[debug]The updated global test array contains 0 items
2021-09-20T16:55:50.9467295Z Adding the build [159] and its association to the unified results object
2021-09-20T16:55:50.9479681Z The most common runtime reason for the task to fail is due API ECONNRESET issues. To avoid this failing the pipeline these will be treated as warnings and an attempt to generate any release notes possible
2021-09-20T16:55:50.9491107Z TypeError: Cannot read property 'map' of undefined
2021-09-20T16:55:50.9491472Z Total Builds: [0]
2021-09-20T16:55:50.9493397Z     at /home/vsts/work/_tasks/XplatGenerateReleaseNotes_7b0a5887-75c4-4ade-a915-f92a93c934cb/3.63.2/ReleaseNotesFunctions.js:797:40
2021-09-20T16:55:50.9493859Z Total Commits: [0]
2021-09-20T16:55:50.9495059Z     at Generator.next (<anonymous>)
2021-09-20T16:55:50.9495340Z Total Workitems: [0]
2021-09-20T16:55:50.9496908Z     at /home/vsts/work/_tasks/XplatGenerateReleaseNotes_7b0a5887-75c4-4ade-a915-f92a93c934cb/3.63.2/ReleaseNotesFunctions.js:8:71
2021-09-20T16:55:50.9497425Z Total Related Workitems (Parent/Children): [0]
2021-09-20T16:55:50.9498634Z     at new Promise (<anonymous>)
2021-09-20T16:55:50.9498935Z Total Release Tests: [0]
2021-09-20T16:55:50.9503159Z     at __awaiter (/home/vsts/work/_tasks/XplatGenerateReleaseNotes_7b0a5887-75c4-4ade-a915-f92a93c934cb/3.63.2/ReleaseNotesFunctions.js:4:12)
2021-09-20T16:55:50.9503646Z Total Tests: [0]
2021-09-20T16:55:50.9505811Z     at getFullWorkItemDetails (/home/vsts/work/_tasks/XplatGenerateReleaseNotes_7b0a5887-75c4-4ade-a915-f92a93c934cb/3.63.2/ReleaseNotesFunctions.js:796:12)
2021-09-20T16:55:50.9506302Z Total Manual Test Runs: [0]
2021-09-20T16:55:50.9518765Z     at Object.<anonymous> (/home/vsts/work/_tasks/XplatGenerateReleaseNotes_7b0a5887-75c4-4ade-a915-f92a93c934cb/3.63.2/ReleaseNotesFunctions.js:1396:76)
2021-09-20T16:55:50.9519329Z Total Manual Test Configurations: [0]
2021-09-20T16:55:50.9525283Z     at Generator.next (<anonymous>)
2021-09-20T16:55:50.9525583Z Total Pull Requests: [0]
2021-09-20T16:55:50.9527332Z     at fulfilled (/home/vsts/work/_tasks/XplatGenerateReleaseNotes_7b0a5887-75c4-4ade-a915-f92a93c934cb/3.63.2/ReleaseNotesFunctions.js:5:58)
2021-09-20T16:55:50.9527825Z Total Indirect Pull Requests: [0]
2021-09-20T16:55:50.9529077Z     at process._tickCallback (internal/process/next_tick.js:68:7)
2021-09-20T16:55:50.9529413Z Total Consumed Artifacts: [0]
2021-09-20T16:55:50.9570945Z ##[debug]Using template mode InLine
2021-09-20T16:55:50.9572119Z Using in-line template
2021-09-20T16:55:50.9572928Z ##[debug]Loading handlebar template
2021-09-20T16:55:50.9573604Z ##[debug]Processing template
2021-09-20T16:55:50.9574200Z ##[debug]  WI: 0
2021-09-20T16:55:50.9574807Z ##[debug]  CS: 0
2021-09-20T16:55:50.9575385Z ##[debug]  PR: 0
2021-09-20T16:55:50.9575962Z ##[debug]  Builds: 0
2021-09-20T16:55:50.9576608Z ##[debug]  Manual Tests: 0
2021-09-20T16:55:50.9577234Z ##[debug]  Manual TestConfigurations: 0
2021-09-20T16:55:50.9577893Z ##[debug]  Release Tests: 0
2021-09-20T16:55:50.9580205Z ##[debug]  Related WI: 0
2021-09-20T16:55:50.9580673Z ##[debug]  Indirect PR: 0
2021-09-20T16:55:50.9581124Z ##[debug]  Consumed Artifacts: 0
2021-09-20T16:55:50.9581595Z ##[debug]Processing handlebar template
2021-09-20T16:55:50.9794510Z Loading handlebars-helpers extension
2021-09-20T16:55:51.1723706Z ##[debug]Attempting to load custom handlebars extension from /home/vsts/work/_tasks/XplatGenerateReleaseNotes_7b0a5887-75c4-4ade-a915-f92a93c934cb/3.63.2/customHandlebarsExtension.js}
2021-09-20T16:55:51.1724566Z ##[debug]Custom handlebars extension file does not exist
2021-09-20T16:55:51.2359282Z Completed processing template
2021-09-20T16:55:51.2359686Z Writing output file /home/vsts/work/r1/a/output.md
2021-09-20T16:55:51.2360017Z Finished writing output file /home/vsts/work/r1/a/output.md
2021-09-20T16:55:51.2360335Z Writing output variable output.md
2021-09-20T16:55:51.2360837Z ##[debug]set output.md=
2021-09-20T16:55:51.2361937Z ##[debug]Processed: ##vso[task.setvariable variable=output.md;isOutput=false;issecret=false;]
2021-09-20T16:55:51.2362535Z ##[debug]task result: SucceededWithIssues
2021-09-20T16:55:51.2395283Z ##[warning]Release notes generation had an issue and was only partially successful
2021-09-20T16:55:51.2405820Z ##[debug]Processed: ##vso[task.issue type=warning;]Release notes generation had an issue and was only partially successful
2021-09-20T16:55:51.2414300Z ##[debug]Processed: ##vso[task.complete result=SucceededWithIssues;]Release notes generation had an issue and was only partially successful
2021-09-20T16:55:51.2587676Z ##[section]Finishing: Generate Release Notes based on Release Comparison API

@rfennell The fix in #1087 will check if the work items list is not empty. Im not sure thats the issue I am having. My artifact has work items. I can view them in the Work Item menu for the Stage after a successful release. Is there some additional information I can provide or something I can test? Many thanks.

There was a potential issue if an empty array was being passed into the getFullWorkItemDetails function which assumes a non-null value.

It seems that the first of these two lines is failing, so we see the null error on the repository property
let currentBuild = await buildApi.getBuild(artifactInThisRelease.sourceId, parseInt(artifactInThisRelease.buildId));
let commitInfo = await issue349.getCommitsAndWorkItemsForGitRepo(organisationWebApi, baseBuild.sourceVersion, currentBuild.sourceVersion, currentBuild.repository.id);

Why this should be I don't know, I have not seen this before. This logic is the default behaviour, I think I will have to do some testing in my local test harness to see if I can repo the problem.
As a workaround you can bypass this logic that is there to handle very large numbers of WI/CS. You bypass this with a pipeline variable `ReleaseNotes.Fix349=false'. Could you try that and see if the problem is bypassed

No luck. This is with
ReleaseNotes.Fix349=false
considerPartiallySuccessfulReleases=false
2021-09-20T20:16:49.5549376Z ##[debug]Evaluating condition for step: 'Generate Release Notes based on Release Comparison API'
2021-09-20T20:16:49.5551016Z ##[debug]Evaluating: succeeded()
2021-09-20T20:16:49.5551506Z ##[debug]Evaluating succeeded:
2021-09-20T20:16:49.5553276Z ##[debug]=> True
2021-09-20T20:16:49.5553917Z ##[debug]Result: True
2021-09-20T20:16:49.5554574Z ##[section]Starting: Generate Release Notes based on Release Comparison API
2021-09-20T20:16:49.5567686Z ==============================================================================
2021-09-20T20:16:49.5568394Z Task         : Generate Release Notes (Crossplatform)
2021-09-20T20:16:49.5568781Z Description  : Generates a release notes file in a format of your choice from the build or release history
2021-09-20T20:16:49.5569973Z Version      : 3.64.2
2021-09-20T20:16:49.5570471Z Author       : Black Marble
2021-09-20T20:16:49.5572549Z Help         : Version: 3.64.2. More Information
2021-09-20T20:16:49.5573581Z ==============================================================================
2021-09-20T20:16:49.5771618Z ##[debug]Using node path: /home/vsts/agents/2.192.0/externals/node10/bin/node
2021-09-20T20:16:49.6879181Z ##[debug]agent.TempDirectory=/home/vsts/work/_temp
2021-09-20T20:16:49.6903001Z ##[debug]loading inputs and endpoints
2021-09-20T20:16:49.6913580Z ##[debug]loading INPUT_OUTPUTFILE
2021-09-20T20:16:49.6928027Z ##[debug]loading INPUT_OUTPUTVARIABLENAME
2021-09-20T20:16:49.6929762Z ##[debug]loading INPUT_TEMPLATELOCATION
2021-09-20T20:16:49.6931038Z ##[debug]loading INPUT_TEMPLATEFILE
2021-09-20T20:16:49.6932272Z ##[debug]loading INPUT_INLINETEMPLATE
2021-09-20T20:16:49.6933449Z ##[debug]loading INPUT_CHECKSTAGE
2021-09-20T20:16:49.6934810Z ##[debug]loading INPUT_STOPONREDEPLOY
2021-09-20T20:16:49.6935950Z ##[debug]loading INPUT_SORTCS
2021-09-20T20:16:49.6937133Z ##[debug]loading INPUT_SORTWI
2021-09-20T20:16:49.6938445Z ##[debug]loading INPUT_SHOWONLYPRIMARY
2021-09-20T20:16:49.6939383Z ##[debug]loading INPUT_SEARCHCROSSPROJECTFORPRS
2021-09-20T20:16:49.6940398Z ##[debug]loading INPUT_DUMPPAYLOADTOCONSOLE
2021-09-20T20:16:49.6941509Z ##[debug]loading INPUT_DUMPPAYLOADTOFILE
2021-09-20T20:16:49.6942722Z ##[debug]loading INPUT_DUMPPAYLOADFILENAME
2021-09-20T20:16:49.6943817Z ##[debug]loading INPUT_REPLACEFILE
2021-09-20T20:16:49.6944935Z ##[debug]loading INPUT_APPENDTOFILE
2021-09-20T20:16:49.6946033Z ##[debug]loading INPUT_CUSTOMHANDLEBARSEXTENSIONFILE
2021-09-20T20:16:49.6947069Z ##[debug]loading INPUT_GETPARENTSANDCHILDREN
2021-09-20T20:16:49.6948106Z ##[debug]loading INPUT_GETALLPARENTS
2021-09-20T20:16:49.6949532Z ##[debug]loading INPUT_GETINDIRECTPULLREQUESTS
2021-09-20T20:16:49.6950488Z ##[debug]loading INPUT_MAXRETRIES
2021-09-20T20:16:49.6951388Z ##[debug]loading INPUT_PAUSETIME
2021-09-20T20:16:49.6952375Z ##[debug]loading INPUT_STOPONERROR
2021-09-20T20:16:49.6953315Z ##[debug]loading INPUT_CONSIDERPARTIALLYSUCCESSFULRELEASES
2021-09-20T20:16:49.6954357Z ##[debug]loading ENDPOINT_AUTH_SYSTEMVSSCONNECTION
2021-09-20T20:16:49.6955352Z ##[debug]loading ENDPOINT_AUTH_SCHEME_SYSTEMVSSCONNECTION
2021-09-20T20:16:49.6956371Z ##[debug]loading ENDPOINT_AUTH_PARAMETER_SYSTEMVSSCONNECTION_ACCESSTOKEN
2021-09-20T20:16:49.6959392Z ##[debug]loaded 27
2021-09-20T20:16:49.6964705Z ##[debug]Agent.ProxyUrl=undefined
2021-09-20T20:16:49.6965574Z ##[debug]Agent.CAInfo=undefined
2021-09-20T20:16:49.6966283Z ##[debug]Agent.ClientCert=undefined
2021-09-20T20:16:49.6967014Z ##[debug]Agent.SkipCertValidation=undefined
2021-09-20T20:16:49.8246696Z ##[debug]Starting Tag XplatGenerateReleaseNotes task
2021-09-20T20:16:49.8247903Z ##[debug]System.TeamFoundationCollectionUri=https://dev.azure.com/BumpCBN/
2021-09-20T20:16:49.8250308Z ##[debug]System.TeamProject=BumpCBN
2021-09-20T20:16:49.8258996Z ##[debug]templateLocation=InLine
2021-09-20T20:16:49.8262142Z ##[debug]templatefile=/home/vsts/work/r1/a
2021-09-20T20:16:49.8266289Z ##[debug]inlinetemplate={{#forEach builds}} {{#if isFirst}}## Builds {{/if}}
Build {{this.build.buildNumber}} {{#forEach this.commits}}
CS {{this.id}}
Message: {{this.message}} {{/forEach}} {{#forEach this.workitems}}
WI {{this.id}}
Title {{lookup this.fields 'System.Title'}} {{/forEach}} {{#forEach this.tests}}
Test {{this.id}}
Name {{this.testCase.name}}
Outcome {{this.outcome}} {{/forEach}} {{/forEach}}
2021-09-20T20:16:49.8270101Z ##[debug]outputfile=/home/vsts/work/r1/a/output.md
2021-09-20T20:16:49.8272937Z ##[debug]outputVariableName=output.md
2021-09-20T20:16:49.8276261Z ##[debug]showOnlyPrimary=False
2021-09-20T20:16:49.8279281Z ##[debug]replaceFile=True
2021-09-20T20:16:49.8282029Z ##[debug]appendToFile=True
2021-09-20T20:16:49.8284759Z ##[debug]getParentsAndChildren=False
2021-09-20T20:16:49.8287487Z ##[debug]searchCrossProjectForPRs=False
2021-09-20T20:16:49.8290358Z ##[debug]overrideStageName=undefined
2021-09-20T20:16:49.8293780Z ##[debug]stopOnRedeploy=False
2021-09-20T20:16:49.8296373Z ##[debug]SortWi=False
2021-09-20T20:16:49.8299274Z ##[debug]SortCS=False
2021-09-20T20:16:49.8301186Z ##[debug]customHandlebarsExtensionCode=undefined
2021-09-20T20:16:49.8303968Z ##[debug]customHandlebarsExtensionFile=customHandlebarsExtension
2021-09-20T20:16:49.8305937Z ##[debug]customHandlebarsExtensionFolder=undefined
2021-09-20T20:16:49.8307789Z ##[debug]gitHubPat=undefined
2021-09-20T20:16:49.8309642Z ##[debug]bitbucketSecret=undefined
2021-09-20T20:16:49.8311470Z ##[debug]bitbucketUser=undefined
2021-09-20T20:16:49.8314170Z ##[debug]dumpPayloadToFile=false
2021-09-20T20:16:49.8316898Z ##[debug]dumpPayloadToConsole=false
2021-09-20T20:16:49.8319644Z ##[debug]dumpPayloadFileName=$(Build.ArtifactStagingDirectory)/payload.json
2021-09-20T20:16:49.8322355Z ##[debug]checkStage=false
2021-09-20T20:16:49.8325337Z ##[debug]getAllParents=False
2021-09-20T20:16:49.8327319Z ##[debug]tags=undefined
2021-09-20T20:16:49.8329307Z ##[debug]overridePat=undefined
2021-09-20T20:16:49.8331513Z ##[debug]overrideBuildReleaseId=undefined
2021-09-20T20:16:49.8334402Z ##[debug]getIndirectPullRequests=False
2021-09-20T20:16:49.8337468Z ##[debug]stopOnError=False
2021-09-20T20:16:49.8340742Z ##[debug]considerPartiallySuccessfulReleases=False
2021-09-20T20:16:49.8343904Z ##[debug]maxRetries=20
2021-09-20T20:16:49.8346039Z ##[debug]Build.BuildId=159
2021-09-20T20:16:49.8348141Z ##[debug]Release.ReleaseId=59
2021-09-20T20:16:49.8350282Z ##[debug]Release.DefinitionId=1
2021-09-20T20:16:49.8352379Z ##[debug]Release_EnvironmentName=Release Notes
2021-09-20T20:16:49.8354698Z ##[debug]ReleaseNotes.Fix349=false
2021-09-20T20:16:49.8387976Z Creating Azure DevOps API connections for https://dev.azure.com/BumpCBN/ with 'allowRetries' set to 'true' and 'maxRetries' count to '20'
2021-09-20T20:16:49.8393945Z ##[debug]Getting System.AccessToken
2021-09-20T20:16:49.8396416Z ##[debug]Getting credentials the agent is running as
2021-09-20T20:16:49.8401716Z ##[debug]SYSTEMVSSCONNECTION exists true
2021-09-20T20:16:49.8403624Z ##[debug]Found an OAUTH token
2021-09-20T20:16:49.8405743Z Creating the credential handler from the OAUTH token
2021-09-20T20:16:50.0841304Z Getting the current release details
2021-09-20T20:16:50.2595681Z Show associated items for primary artifact only is set to false
2021-09-20T20:16:50.2596210Z Getting the Environment Id
2021-09-20T20:16:50.2600784Z Identified [release notes] as having id [8]
2021-09-20T20:16:50.2603881Z Finding successful deployments
2021-09-20T20:16:50.3325407Z Found 13 releases to consider
2021-09-20T20:16:50.3326749Z ##[debug]Found ReleaseID 50 with the Status 4
2021-09-20T20:16:50.3328117Z ##[debug]Found ReleaseID 49 with the Status 4
2021-09-20T20:16:50.3328944Z ##[debug]Found ReleaseID 48 with the Status 4
2021-09-20T20:16:50.3329792Z ##[debug]Found ReleaseID 46 with the Status 4
2021-09-20T20:16:50.3330722Z ##[debug]Found ReleaseID 44 with the Status 4
2021-09-20T20:16:50.3333955Z ##[debug]Found ReleaseID 43 with the Status 4
2021-09-20T20:16:50.3336594Z ##[debug]Found ReleaseID 42 with the Status 4
2021-09-20T20:16:50.3339165Z ##[debug]Found ReleaseID 38 with the Status 4
2021-09-20T20:16:50.3341729Z ##[debug]Found ReleaseID 37 with the Status 4
2021-09-20T20:16:50.3346379Z ##[debug]Found ReleaseID 36 with the Status 4
2021-09-20T20:16:50.3350772Z ##[debug]Found ReleaseID 29 with the Status 4
2021-09-20T20:16:50.3354571Z ##[debug]Found ReleaseID 27 with the Status 4
2021-09-20T20:16:50.3358050Z ##[debug]Found ReleaseID 26 with the Status 4
2021-09-20T20:16:50.3361258Z Finding the last successful release 2<IP_ADDRESS>
2021-09-20T20:16:50.3364341Z Getting all artifacts in the current release...
2021-09-20T20:16:50.3373241Z Found 1 artifacts for current release
2021-09-20T20:16:50.4438045Z Getting all artifacts in the most recent successful release [2<IP_ADDRESS>]...
2021-09-20T20:16:50.4461026Z Found 1 artifacts for most recent successful release
2021-09-20T20:16:50.4477356Z Looking at artifact [bump-core]
2021-09-20T20:16:50.4477753Z Artifact type [Build]
2021-09-20T20:16:50.4477994Z Build Definition ID [11]
2021-09-20T20:16:50.4478269Z Build Number: [20210917.1]
2021-09-20T20:16:50.4478546Z Is Primary: [true]
2021-09-20T20:16:50.4479118Z Looking for the [bump-core] in the most recent successful release [2<IP_ADDRESS>]
2021-09-20T20:16:50.4479764Z Found artifact [bump-core] with build number [1346959e] in release [2<IP_ADDRESS>]
2021-09-20T20:16:50.4480373Z Checking what commits and workitems have changed from [1346959e][ID 1346959ef06b5be4f90b400af6797a53ab6a6b74] => [20210917.1] [ID 159]
2021-09-20T20:16:50.6761313Z Getting test associated with the latest build [159]
2021-09-20T20:16:50.8289127Z ##[debug]Found 0 automated test results associated with the build
2021-09-20T20:16:50.8293700Z ##[debug]No automated tests associated with build 159
2021-09-20T20:16:50.8294290Z Found 0 test associated with the build [159] adding any not already in the global test list to the list
2021-09-20T20:16:50.8302554Z ##[debug]The global test array contains 0 items
2021-09-20T20:16:50.8304094Z ##[debug]The updated global test array contains 0 items
2021-09-20T20:16:50.8788825Z Adding the build [159] and its associations to the unified results object
2021-09-20T20:16:50.8795335Z The most common runtime reason for the task to fail is due API ECONNRESET issues. To avoid this failing the pipeline these will be treated as warnings and an attempt to generate any release notes possible
2021-09-20T20:16:50.8811953Z TypeError: Cannot read property 'length' of null
2021-09-20T20:16:50.8812782Z     at Object. (/home/vsts/work/_tasks/XplatGenerateReleaseNotes_7b0a5887-75c4-4ade-a915-f92a93c934cb/3.64.2/ReleaseNotesFunctions.js:1405:82)
2021-09-20T20:16:50.8813297Z     at Generator.next ()
2021-09-20T20:16:50.8813986Z     at fulfilled (/home/vsts/work/_tasks/XplatGenerateReleaseNotes_7b0a5887-75c4-4ade-a915-f92a93c934cb/3.64.2/ReleaseNotesFunctions.js:5:58)
2021-09-20T20:16:50.8814496Z     at process._tickCallback (internal/process/next_tick.js:68:7)
2021-09-20T20:16:50.8814798Z Total Builds: [0]
2021-09-20T20:16:50.8819537Z Total Commits: [0]
2021-09-20T20:16:50.8819867Z Total Workitems: [0]
2021-09-20T20:16:50.8822756Z Total Related Workitems (Parent/Children): [0]
2021-09-20T20:16:50.8825341Z Total Release Tests: [0]
2021-09-20T20:16:50.8828212Z Total Tests: [0]
2021-09-20T20:16:50.8830997Z Total Manual Test Runs: [0]
2021-09-20T20:16:50.8833450Z Total Manual Test Configurations: [0]
2021-09-20T20:16:50.8835991Z Total Pull Requests: [0]
2021-09-20T20:16:50.8838488Z Total Indirect Pull Requests: [0]
2021-09-20T20:16:50.8841162Z Total Consumed Artifacts: [0]
2021-09-20T20:16:50.8859627Z ##[debug]Using template mode InLine
2021-09-20T20:16:50.8860588Z Using in-line template
2021-09-20T20:16:50.8867681Z ##[debug]Loading handlebar template
2021-09-20T20:16:50.8868916Z ##[debug]Processing template
2021-09-20T20:16:50.8869904Z ##[debug]  WI: 0
2021-09-20T20:16:50.8870831Z ##[debug]  CS: 0
2021-09-20T20:16:50.8873193Z ##[debug]  PR: 0
2021-09-20T20:16:50.8873786Z ##[debug]  Builds: 0
2021-09-20T20:16:50.8874221Z ##[debug]  Manual Tests: 0
2021-09-20T20:16:50.8874703Z ##[debug]  Manual TestConfigurations: 0
2021-09-20T20:16:50.8875418Z ##[debug]  Release Tests: 0
2021-09-20T20:16:50.8875856Z ##[debug]  Related WI: 0
2021-09-20T20:16:50.8876306Z ##[debug]  Indirect PR: 0
2021-09-20T20:16:50.8876861Z ##[debug]  Consumed Artifacts: 0
2021-09-20T20:16:50.8877435Z ##[debug]Processing handlebar template
2021-09-20T20:16:50.9195734Z Loading handlebars-helpers extension
2021-09-20T20:16:51.1054460Z ##[debug]Attempting to load custom handlebars extension from /home/vsts/work/_tasks/XplatGenerateReleaseNotes_7b0a5887-75c4-4ade-a915-f92a93c934cb/3.64.2/customHandlebarsExtension.js}
2021-09-20T20:16:51.1055340Z ##[debug]Custom handlebars extension file does not exist
2021-09-20T20:16:51.1721374Z Completed processing template
2021-09-20T20:16:51.1721776Z Writing output file /home/vsts/work/r1/a/output.md
2021-09-20T20:16:51.1722107Z Finished writing output file /home/vsts/work/r1/a/output.md
2021-09-20T20:16:51.1722406Z Writing output variable output.md
2021-09-20T20:16:51.1722907Z ##[debug]set output.md=
2021-09-20T20:16:51.1723936Z ##[debug]Processed: ##vso[task.setvariable variable=output.md;isOutput=false;issecret=false;]
2021-09-20T20:16:51.1724513Z ##[debug]task result: SucceededWithIssues
2021-09-20T20:16:51.1753656Z ##[warning]Release notes generation had an issue and was only partially successful
2021-09-20T20:16:51.1763317Z ##[debug]Processed: ##vso[task.issue type=warning;]Release notes generation had an issue and was only partially successful
2021-09-20T20:16:51.1774680Z ##[debug]Processed: ##vso[task.complete result=SucceededWithIssues;]Release notes generation had an issue and was only partially successful
2021-09-20T20:16:51.1946880Z ##[section]Finishing: Generate Release Notes based on Release Comparison API

There are still issues with nulls and the logging. I will get another build out. That does no explain the null on the repository, but might make it clearer what is happening

Just pushing out a new version with revised logging

Log below is with version 3.64.2.
I will try again once the latest version is available (3.65.1). Its not getting used automatically. Maybe it takes time to become available in Azure.
2021-09-21T13:51:09.1978391Z Finding the last successful release 2<IP_ADDRESS>
2021-09-21T13:51:09.1978733Z Getting all artifacts in the current release...
2021-09-21T13:51:09.1979103Z Found 1 artifacts for current release
2021-09-21T13:51:09.2809578Z Getting all artifacts in the most recent successful release [2<IP_ADDRESS>]...
2021-09-21T13:51:09.2811982Z Found 1 artifacts for most recent successful release
2021-09-21T13:51:09.2815830Z Looking at artifact [bump-core]
2021-09-21T13:51:09.2817775Z Artifact type [Build]
2021-09-21T13:51:09.2819486Z Build Definition ID [11]
2021-09-21T13:51:09.2821532Z Build Number: [20210917.1]
2021-09-21T13:51:09.2823190Z Is Primary: [true]
2021-09-21T13:51:09.2825889Z Looking for the [bump-core] in the most recent successful release [2<IP_ADDRESS>]
2021-09-21T13:51:09.2828333Z Found artifact [bump-core] with build number [1346959e] in release [2<IP_ADDRESS>]
2021-09-21T13:51:09.2830321Z Checking what commits and workitems have changed from [1346959e][ID 1346959ef06b5be4f90b400af6797a53ab6a6b74] => [20210917.1] [ID 159]
2021-09-21T13:51:09.2832373Z Using workaround for build API limitation (see issue #349)
2021-09-21T13:51:09.4125048Z There was a problem getting the details of the CS/WI for the build TypeError: Cannot read property 'repository' of null
2021-09-21T13:51:09.4125664Z Getting test associated with the latest build [159]
2021-09-21T13:51:09.6573298Z ##[debug]Found 0 automated test results associated with the build
2021-09-21T13:51:09.6574949Z ##[debug]No automated tests associated with build 159
2021-09-21T13:51:09.6575717Z Found 0 test associated with the build [159] adding any not already in the global test list to the list
2021-09-21T13:51:09.6576691Z ##[debug]The global test array contains 0 items
2021-09-21T13:51:09.6577633Z ##[debug]The updated global test array contains 0 items
2021-09-21T13:51:09.7255585Z Adding the build [159] and its associations to the unified results object
2021-09-21T13:51:09.7265220Z The most common runtime reason for the task to fail is due API ECONNRESET issues. To avoid this failing the pipeline these will be treated as warnings and an attempt to generate any release notes possible
2021-09-21T13:51:09.7284717Z TypeError: Cannot read property 'length' of undefined
2021-09-21T13:51:09.7285097Z Total Builds: [0]
2021-09-21T13:51:09.7286535Z     at Object. (/home/vsts/work/_tasks/XplatGenerateReleaseNotes_7b0a5887-75c4-4ade-a915-f92a93c934cb/3.64.2/ReleaseNotesFunctions.js:1405:82)
2021-09-21T13:51:09.7287152Z     at Generator.next ()
2021-09-21T13:51:09.7287985Z     at fulfilled (/home/vsts/work/_tasks/XplatGenerateReleaseNotes_7b0a5887-75c4-4ade-a915-f92a93c934cb/3.64.2/ReleaseNotesFunctions.js:5:58)
2021-09-21T13:51:09.7288881Z     at process._tickCallback (internal/process/next_tick.js:68:7)
2021-09-21T13:51:09.7290954Z Total Commits: [0]
2021-09-21T13:51:09.7294618Z Total Workitems: [0]
2021-09-21T13:51:09.7298957Z Total Related Workitems (Parent/Children): [0]
2021-09-21T13:51:09.7303058Z Total Release Tests: [0]
2021-09-21T13:51:09.7306594Z Total Tests: [0]
2021-09-21T13:51:09.7310207Z Total Manual Test Runs: [0]
2021-09-21T13:51:09.7313576Z Total Manual Test Configurations: [0]
2021-09-21T13:51:09.7316973Z Total Pull Requests: [0]
2021-09-21T13:51:09.7320013Z Total Indirect Pull Requests: [0]
2021-09-21T13:51:09.7323167Z Total Consumed Artifacts: [0]
2021-09-21T13:51:09.7340318Z ##[debug]Using template mode InLine
2021-09-21T13:51:09.7341193Z Using in-line template
2021-09-21T13:51:09.7345937Z ##[debug]Loading handlebar template
2021-09-21T13:51:09.7346929Z ##[debug]Processing template
2021-09-21T13:51:09.7347662Z ##[debug]  WI: 0
2021-09-21T13:51:09.7348361Z ##[debug]  CS: 0
2021-09-21T13:51:09.7348995Z ##[debug]  PR: 0
2021-09-21T13:51:09.7349690Z ##[debug]  Builds: 0
2021-09-21T13:51:09.7350373Z ##[debug]  Manual Tests: 0
2021-09-21T13:51:09.7351078Z ##[debug]  Manual TestConfigurations: 0
2021-09-21T13:51:09.7351808Z ##[debug]  Release Tests: 0
2021-09-21T13:51:09.7352549Z ##[debug]  Related WI: 0
2021-09-21T13:51:09.7353405Z ##[debug]  Indirect PR: 0
2021-09-21T13:51:09.7354206Z ##[debug]  Consumed Artifacts: 0

Sorry, company work diverted me, only just pushed out 3.65.2

Most of the errors we down to logging lines that included array.length without checks to make sure the array was not null.
The remaining one is strange. I am surprised the repository error is happening (if the #349 fix is used). It suggests the
let currentBuild = await buildApi.getBuild(artifactInThisRelease.sourceId, parseInt(artifactInThisRelease.buildId));

line failed, but this is a basic line common to the code. If the currentBuild is null so it cannot lookup CS or WI, so explains the results you are seeing. Maybe it is the wrong shape JSON return, but I have no idea why,
Again you could try disable the #349 - but that is a workaround not a fix
After that, I think the only option is for you try the local test runner and rerun your release notes generation adding bit of extra debug around ln1560 of ReleaseNotesFunctions.ts. Maybe something like the following, add the middle line and run locally
let currentBuild = await buildApi.getBuild(artifactInThisRelease.sourceId, parseInt(artifactInThisRelease.buildId));
agentApi.logInfo(currentBuild);
let commitInfo = await issue349.getCommitsAndWorkItemsForGitRepo(organisationWebApi, baseBuild.sourceVersion, currentBuild.sourceVersion, currentBuild.repository.id);

So appears the latest release and using ReleaseNotes.Fix349=false worked. You mentioned this might only be a workaround but I am able to output changes now. If you need more info from me let me know. Thanks!


Doesn't support ActiveRecord 5.0

Even though the README states that this gem supports AR 5, the gemspec specifically requires versions below it. Am I doing something wrong?

I had ready to support AR-5.0, but I forget to released 😓
Today, I got the time to release new version which supports AR-5.0.
Thanks for your report !!

Thanks!


Touch gestures

I have a slide to confirm button within the drawer. However, it works with a mouse event but not with touch swiping on mobile. This only occurs dismissible = false. How do I override that? thanks in advance

@lunarinlunarinlunarin Can you please provide video? It works fine on my iOS, Safari. Which browser are you using?

i can provide a video but it wont show much because it's a swiping action with my fingers. I tried both chrome and safari and both dont work. if i make it dismissible however, it will work.

Please provide a code sandbox demo.


Install fails, operation not permitted

Install fails in phase 4, see log.
setup.log

Is this still an issue? Can you try again? Reopen if you make new attempts


feat(ranking): add popularAlternativeNames, detect security packages

Copy from #965

fyi @MartinKolarik
copied it here because I can't make the CI run for your fork

Cool! Is the reindex running now?


update artifact putting default pipeline classes

ideally pipeline classes should be renamed using new project name, for example
Runner.groovy -> MyProjectRunner.groovy

obsolete. all jobdsl/pipeline logic moved into separated repositories


Update README.md

Cassandra requires the most stable version of Java 7 for cassandra version 2

Assigning to @mrvisser for review

@mrvisser : Can you have a look at this for the release as well?

Looks good. We run java7 in production as well.


[R] Recipe for random sampling

It would be great if there were a way to sample from an arrow dataset. I put together this somewhat hacky example, but I bet there's some thing a bit more elegant..
library(arrow)
library(dplyr)
library(nycflights13)

flights <- nycflights13::flights

flights$id <- seq_len(nrow(flights))

for(i in unique(flights$month)) {
  out <- filter(flights, month == i)
  arrow::write_parquet(out, paste0("flight_ds/", i, ".parquet"))
}

ds <- arrow::open_dataset("flight_ds")

sample <- sample(flights$id, 100)

ds %>%
  filter(id %in% sample) %>%
  collect()

We could wire up the row selection used in [ (which I added last year just to be able to run the vroom benchmarks, not because it was a good idea or done particularly well) to slice_sample() but I'm not sure it's a good idea given the inefficiency of the implementation.

As a part of apache/arrow#11894, I added an example to the datasets vignette to show how to create a sample from a dataset that doesn't fit into memory. This will be available in Arrow 7.0.0. Added #115 to add that to the cookbook.

I think this is a great use case for combining arrow and duckdb.
There is no support for slice_* functions in arrow and duckdb does not yet have the ability to open a dataset.
library(arrow)
library(dplyr)

tf <- tempfile()
dir.create(tf)

nycflights13::flights |>
  group_by(month) |>
  write_dataset(tf)

df <- open_dataset(tf, hive_style = TRUE) |>
  group_by(month) |>
  to_duckdb() |>
  slice_sample(n = 2) |>
  collect()

I would like to contribute to improving the documentation, but I don't know where to add that example.
Wouldn't a function help page be better?

Oh, sorry, I misread your comment as saying that that code example did work, and not that it didn't work as of yet! I get a segfault when calling to_duckdb() on a dataset, as in your example above - that'd be something that it'd be worth opening an issue on the Arrow JIRA about.

On my local this process runs fine. And it appears to be included in the test case.
https://github.com/apache/arrow/blob/0330353a93eff799616bf66e0e994236393458f7/r/tests/testthat/test-duckdb.R#L138-L171

Interesting, I should probably open a bug report somewhere for something then.  If you're proposing a function help page, which page? I don't see anywhere it would make sense to include it in the Arrow R docs, though happy to discuss.
If it was a recipe, the cookbook is currently lacking a datasets chapter; a couple have been drafted, but finding the time to work on it is tricky.  This would work as a subsection in there though.

If you're proposing a function help page, which page? I don't see anywhere it would make sense to include it in the Arrow R docs

https://github.com/apache/arrow/blob/f9f0e65e5a370bd26f49b12c5e8bb51218cd82a6/r/R/duckdb.R#L48-L52

Nicely spotted!  It'd be worth submitting a PR for that or opening an issue on the Arrow JIRA then.

Created a PR to update the example to use the slice function. apache/arrow#13711
Of course, this is not enough for random sampling example though.

slice_sample() will be supported in the upcoming arrow 10.0.0 release


[BUG] Can Set Leap Years to Happen Every 0 Years

In the leap year settings for a calendar you can set the When Leap Years Happen option to 0, causing leap years to happen every 0 years. This causes the dates to be incorrect and the real time clock to advance time incorrectly.
Since having a leap year every 0 years doesn't really make sense the best option is to ensure that users can not set that value to 0.

This issues was fixed in version 2.1.73!


[WIP] Add blob resource

Context
This PR implements RFC 16 - Blob Resource (https://github.com/openregister/registers-rfcs/pull/29)
It also adds the list endpoint (GET /blobs), which we had never implemented. This was previously reported in https://github.com/openregister/specification/issues/9. The consequence of not having /blobs is that if you are using the blobs and entries part of the API, you need to make a request for every item you retrieve, rather than fetching multiple items in one go.
I've currently restricted this to the first 100 items, with the goal of implementing pagination in a later sprint. Since there are other issues with pagination it will be easier for me to work on it all at the same time.
Changes proposed in this pull request

[x] Rename /items -> /blobs
[x] Add missing GET /blobs endpoint (this only supports CSV, JSON, HTML but it is backported to V1 as well)
[x] Rename item-hash -> blob-hash in entries endpoints
[x] Rename item-hash -> blob-hash in /record/entries
[x] Rename the internal directory “item” inside the archive (/download-register) to “blob”. This is not needed in v2 as we are removing the endpoint.
[x] Resource unit tests
[ ] Fix linking between record HTML pages to preserve version number instead of always pointing to version 1

Follow up work I'll raise another PR for or add to the backlog

[ ] Conformance tests
[ ] Tech docs
[ ] HTML links to other registers should use the same API version

Guidance to review

This should be reviewed one commit at a time. If it's easier I can go through it in person.
There is a separate view, template, and resource for each version of a resource
I've had to create a new web view for /items
Each version of the web views should use consistent terminology and any links should be to the same version.

@gidsg there is at least one bug I still need to fix, but I think this is in a reviewable state. Can you take a look tomorrow?

I've taken out the web view part of this PR, so it's now ready to review.

While looking at the conformance tests I've noticed a bug in /records/foo/entries so I will need to fix this before merging


Use CloudWatch alerts and notifications for health checks

Instead of active tests, use the AWS infrastructure to warn us of failed instances.

This should be implemented as a health monitor plugin. Since vpc-router is specialized on EC2, it's ok to do this as an internal plugin (within the vpc-router project).


Don't ask the routing layer for endpoints in public

There is no routing layer in Public to ask, so all requests there fail. Instead infer the endpoints from the EndpointList

Should no longer be needed. RoutingGenerator in public just returns an empty list, and this is only used in application API and JobController (the latter has a fallback to routing policies).


Add new SpatialAsset model and change footprint field

Resolve #328
Adds a new SpatialAsset model for making a SpatialEntry out of any collection of files not explicitly handled by existing models (RasterEntry/RasterMetaEntry, FMVEntry, and GeometryEntry).
This also changes the footprint field on SpatialEntry to be a GeometryField rather than a PolygonField such that we can use arbitrary geometry as the spatial "footprint". This is to cover a use case where a SpatialAsset might only be associated with a single point or a line rather than a polygon.

These changes are required for https://github.com/ResonantGeoData/issue-dashboard/issues/12 and https://github.com/ResonantGeoData/issue-dashboard/issues/13


COMODO certifification got x509: certificate signed by unknown authority

What version of Go are you using (go version)?

go1.4.2
What operating system and processor architecture are you using?

darwin/amd64
What did you do?

run this program,
package main

import (
	"fmt"
	"net/http"
)

func main() {
	url := "https://catchchat.catchchatchina.com/"
	_, err := http.Head(url)
	if err != nil {
		fmt.Println(err)
	}
}

What did you expect to see?

do not print the error. This url can be opened in browsers.
What did you see instead?

[sunrunaway:~/Code/go/bin]$ go run ~/Code/gotmp/httpget.go                                                    (master)
Head https://catchchat.catchchatchina.com/: x509: certificate signed by unknown authority

You can add certificates of "COMODO RSA Domain Validation Secure Server CA" to your certififcate serverd from server, also see full report at https://www.ssllabs.com/ssltest/analyze.html?d=catchchat.catchchatchina.com

@linniksa Thanks.


Token issues breaking workshop

If you just open the workshop right now, you'll see a black overlay preventing you from interacting with the app.
This is because the main tileset hasn't loaded yet, and the overlay is a loading indicator. However, the tileset will never load because it looks like the default token here has expired?
But that's okay! You can add in your own token by replacing:
Cesium.Ion.defaultAccessToken = '<YOUR ACCESS TOKEN HERE>';

So then most things load (imagery etc) but not the tileset id 3839 presumably because my account doesn't have access to it?
So the loading indicator never goes away either way.

Fixed.  We need to make sure we keep updating the version of CesiumJS used in this repo.  I added a note as part of our release process.

This is still broken though. If you follow the tutorial and put your asset token where it tells you, the NYC dataset will fail to load, the loading indicator never goes away, and no error is shown on screen.
The solution is to add the NYC tileset to the asset depot. Otherwise you can't really follow the tutorial.

Thanks @OmarShehata, I forgot that was an issue as well.  I opened another issue


Bug in next14, next15 when using

NextUI Version
Version 2.2.6 and later
Describe the bug
It's been two days since I installed Next UI and it's still having problems and none of the components can be used. This problem is really annoying me because every site I've used Next UI for development doesn't work like before. What's the situation? To use your components, I now have to rewrite all the code I used from your components. What's happening? If you can't fix the problem, tell me I won't use your components anymore. All the sites I've used have had problems.
Your Example Website or App
No response
Steps to Reproduce the Bug or Issue
None of the components are deaf
Expected behavior
All components work as before
Screenshots or Videos
No response
Operating System Version
Windows
Browser
Chrome

Please provide a minimal reproducible environment. For the record, our latest version is 2.6.8.

Have you tried to implement your tailwind?
`
import type { Config } from "tailwindcss";
import { nextui } from '@nextui-org/theme';
export default {
darkMode: ['class'],
content: [
"./src/pages//*.{js,ts,jsx,tsx,mdx}",
"./src/components//.{js,ts,jsx,tsx,mdx}",
"./src/app/**/.{js,ts,jsx,tsx,mdx}",
'./node_modules/@nextui-org/theme/dist/components/(accordion|alert|autocomplete|avatar|badge|breadcrumbs|button|calendar|card|checkbox|chip|code|divider|drawer|dropdown|form|image|input|input-otp|kbd|link|listbox|menu|modal|navbar|pagination|popover|progress|ripple|scroll-shadow|select|skeleton|slider|snippet|spacer|spinner|toggle|table|tabs|user).js',
],
theme: {
extend: {
fontFamily: {
sans: ["var(--font-sans)"],
mono: ["var(--font-mono)"],
},
},
},
plugins: [nextui()],
} satisfies Config;
`

@alirezaFAkhar Please be specific on the issues you're facing. Otherwise we can't help.


Ergonomic content negotiation

Content negotiation is not (currently!) part of routing in Tide, but we should decide whether we want that to change, and if not, how to make it easy for an endpoint to internally perform content negotiation.

@aturon did you mean an ability to route based on requested content-type?
I was trying to return JSON or HTML based on it from one endpoint and looks like there is no ability to do that via tide:
      app.at("/courses/:id")
         .get(|request: Request<State>| async move {
              match request.content_type() {
                  Some(mime::JSON) => Ok(request.state().courses().read(request.param("id").unwrap())),
                 Some(mime::HTML) => ResourceTemplate{}.into(),
                  _ => Err("Unsupported Content-Type.")
              }
          })

Would be great to have more control over what I can return from one endpoint or for endpoints to be fine grained (not only path-based configuration).

nancyfx has an interesting way to do content negotiation. https://github.com/NancyFx/Nancy/wiki/Content-Negotiation
Get["/"] = parameters => {
    return Negotiate
        .WithModel(new RatPack {FirstName = "Nancy "})
        .WithMediaRangeModel("text/html", new RatPack {FirstName = "Nancy fancy pants"})
        .WithView("negotiatedview")
        .WithHeader("X-Custom", "SomeValue");
};

We're recently merged the foundation for content negotation into http-types: https://docs.rs/http-types/2.6.0/http_types/content/index.html -- we should be able to use that to drive API experiments.

Note from triage: there are several different things content-negotation might mean, and we probably want to support all of them.

content-negotation for responses: serve up the right media type based on the accept headers passed by the client
routing based on content-type / accept
best-effort deserialization in an endpoint based on the incoming content-type; e.g. always succeed if json or xml passed

We should survey the field, and come up with implementations. We already have all typed headers for these, so we can try implementations.

What is the current state of this?
You can't even do
        match request.content_type() {
            Some(mime::JSON) => {

error: to use a constant of type `tide::http_types::Mime` in a pattern, `tide::http_types::Mime` must be annotated with `#[derive(PartialEq, Eq)]`

It seems the root issue here is that we're not implementing StructuralEq for Mime. This is a relatively easy fix, albeit noisy.

Ah, it appears we actually can't implement StructuralEq for Mime even if we forward the inner types. It seems this is wholly incompatible with custom PartialEq implementations like we have in Mime. And we need those in order to even be able to define constants. This means we're unfortunately limited by what the language is able to express right now.
Tracking issue on the compiler for this: https://github.com/rust-lang/rust/issues/31434


fix: metrics percentage calculations missing *100

Issue: https://github.com/aws-samples/amazon-dynamodb-monitoring/issues/2
Hello,
I am using this repo as a reference for creating DynamoDB alarms.
I found 4 alarms, which I think are not implemented correctly.
Those alarms are calculating percentage (%) of errors and if error percentage is over threshold, alarm will be raised.
Calculation (based on the first alarm in the PR - system errors):
m1 = number_of_errors
m2 = number_of_consumed_read_capacity_units
m3 = number_of_consumed_write_capacity_units
expression = m1 / (m2 + m3)
From this, it is clear that 0 <= expression <= 1.0, but this is compared to threshold = 2.0%.
Please if you can reply and confirm that this is a bug (and merge this PR).
Or if I am not understanding this correctly, please explain what am I missing.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

cc @ctindel


get_custody_atoms: avoid application of modulo operation (%) to a negative value

get_custody_atoms applies modulo operation to a negative dividend: (-len(bytez) % BYTES_PER_CUSTODY_ATOM).
Modulo operation implementations differ from language to language, when dividend (or divisor) is negative. Therefore that may lead to a bug in a language, which implements modulo operation in a different way than python does (i.e. returning a negative result when a dividend is negative).
@protolambda in a personal communication has suggested that such an ambiguity is better to be avoided in the spec.

This is a very useful shorthand to get the number of missing elements to pad to a certain length. It's certainly unfortunate if we can't use it :(

I have mixed feelings about it. An alternative is definitely bulky and this padding approach is short and elegant.
However, we encounter more and more cases when concise is not clear (e.g. #1746 or #1924).
I.e. a short form may be ambiguous and, as a result, unsafe, in the sense that client implementers may implement it in different ways, potentially leading to a consensus break.
In the particular case, the modulo operation is clearly defined in Python, which is great. However, people are people and make mistakes, the particular case is not obvious to humans. On the other side, bugs here are easy to reveal with appropriate tests.
As a part of overall efforts to make the spec more formal and less ambiguous, my goal is at least to inform EF team about such ambiguities (and suggest a solution, when possible).

We used to have this problem with Java and JavaScript is affected as well. Both, Java and JavaScript by default does it in the following way:
-4 % 3 = -1

While Python follows the canonical math approach:

In mathematics, the result of the modulo operation is an equivalence class, and any member of the class may be chosen as representative; however, the usual representative is the least positive residue, the smallest non-negative integer that belongs to that class, i.e. the remainder of the Euclidean division.

Thus -4 % 3 = 2 in Python and Ruby. And some other languages. There is a helper method in Java SDK Long.remainderUnsigned that does the calculation in the same way as Python. But we've spent a time to learn this ambiguity and make a workaround. And I think that modulo operation should at least be explicitly defined in the spec and covered with test that will cut this ambiguity off on the early stage.

Many languages, including C, Rust, Java Nim, have the mod or % operator be the remainder, which is the same sign as the dividend, while Python, R and solidity uses the sign of the divisor (https://en.wikipedia.org/wiki/Modulo_operation#In_programming_languages)
Either we define modulo like @mkalinin sugested, or we use explicit sign(b) * (abs(a) % abs(b)) to remove ambiguities, which is the approach taken by IETF specs. This makes it clear to implementers that expected sign.

A couple of things:

We previously removed this usage from the spec (long ago, not sure the example) because the usage is very unclear to implementers in other languages
We don't support negative integers in any consensus types and want to avoid them in an intermediate calculations (because a strongly typed language would not handle them "magically" like python).

I suggest we avoid this all together


Disable ref overloads for opaque pointer types

Summary of the PR
While these overloads were usable, they were extremely error prone and should not be used, this cleans up the amount of overloads, and blocks very error prone code from being written
Related issues, Discord discussions, or proposals
https://discord.com/channels/521092042781229087/587346162802229298/1087098494562603108

Relies on #1349

Your git history still a little wonky, I'll try my best to fix it but some of the commit messages may get lost. This is why I hate force push!

Freedesktop gitlab seems down, we may have to delay until their site comes back up as DXVK submodules something from there and we fail during cloning


Clean empty backup directories with infofile

When cleaning old backup directories, delete them if there is nothing more than the infofile.

done in commit c2e300c5ae86f58a428e1d243bd5e017c28a56fb


Fix logging for the nodes with remote store attributes

Is your feature request related to a problem? Please describe.
For Remote store enabled nodes, we add multiple remote store related attributes in node. Those all attributes are getting logged in logs when node's information is being logged.
It is creating too much noise in logs, and for the logs where multiple node's information is logged in single line it will be too long log lines.
Fix
We can redact the node attributes from the logs. We can remove those attribute from toString method of DiscoveryNode.
Meta issue: #10523

Closing as https://github.com/opensearch-project/OpenSearch/pull/10810 is merged


FIXED: Rotation works improperly on retina display #683

Hi,
I have made some changes that work for me. But changes are pretty serious and I am afraid they may affect other parts of the application. Could you review my changes, please? If that solution is good enough I would be glad if you will merge it into the main branch.
Thank you.

Awesome! I love that the fix cleans up the code. I've tested and it seems to work well. Thank you for doing this. :)


Fix access control

Problem

(Xcode 10.1, Swift 4.2.1)
Solution

Make public struct properties explicitly

Reference

The structure’s members (including the numberOfEdits property) therefore have an internal access level by default.
https://docs.swift.org/swift-book/LanguageGuide/AccessControl.html#ID18

Please review 🙏 @miuP

LGTM👍
Thanks!


Rename feed-content directory name to spec-content

Rename feed-content directory name to spec-content
The feed-content directory contains all information about the content of the specification, not just the feed (which is created using the spec). While feed-content is not incorrect, spec-content is more accurate.
This proposal is part of an ongoing effort to organize the GitHub repository. This naming change would require updating hyperlinks in several markdown files but doesn't change anything in the specification or output feed. Thus the change does not necessitate a bump in spec version.

I agree that spec-content is more accurate

I also agree that spec-content is more accurate.  I agree with this change.


Fix potential app css layout issues

Bug/issue #, if applicable: 103147259
Summary
Fixes potential issues with the layout, when the page content is too short, especially when the navigator is completely disabled.
Dependencies
NA
Testing
Steps:

Make sure no regressions are visible.
Try with an old doccarchive, that has no Navigator data at all.
Try with and without a custom header

Checklist
Make sure you check off the following items. If they cannot be completed, provide a reason.

[x] ~Added tests~ - CSS changes only
[ ] Ran npm test, and it succeeded
[ ] Updated documentation if necessary

@swift-ci test


Zoom in/out bug with PDF in landscape

When i display a PDF in landscape the InteractiveViewer does not allow to zoom to the minimum.
I think this is becaus the bounderyMargin setting of the InteractiveViewer.
if I set it to:
 iv.InteractiveViewer(                       transformationController: _txController,                       constrained: false,                       boundaryMargin: const EdgeInsets.all(double.infinity),
the zoom in / out works like it should.
Would be fine to have an option to set this parameter from outside.

Could you explain me more about your problem?
I think the behavior is fine even with single page landscale PDF:

You can see the problem if you try it on android and zoom in and out...

Could you explain more? I'm not sure what's your problem.

Actually, I've found an issue on PdfPageAnchor behavior and fixed it. But it has nothing to do with bounderyMargin:
https://github.com/espresso3389/pdfrx/blob/bae7c2f5205b591d0b7206aa6d8e9ffdf0ca98c3/lib/src/widgets/pdf_viewer.dart#L939-L982

https://github.com/espresso3389/pdfrx/assets/120425754/c3745f77-8b55-4fe1-a902-77bd2c6123df

Oh, I see.

0.4.44 fixes the issue; PdfViewerParams.boundaryMargin is working again and the new default is EdgeInsets.all(double.infinity).
By the way, I could not remember why I've removed boundaryMargin parameter from the code.

You are using the parameter on several other places, are you sure that everything is ok then? Maybe you removed the parameter because of another bug?

I think boundaryMargin should be there anyway. I had been just dropped mistakenly in some recent version.


Check with dryrun

Adding dryrun method to agents for checking config file is valid or not.

LGTM :runner:


Configure Prettier

install and config
integrate with ESLint
run from CLI, VSCode, CI pipeline and as a pre-commit hook

Closes #15


Feature request: table and keyspace macros and creation

I'm not sure if this project is accepting feature requests, but after first use of the driver I'm missing some ergonomics for tables and keyspaces.
I personally love Diesel macros for declaring a schema and getting methods generated automatically
Also, it would be great to be able to manage schemas and migrations with code like Diesel, although this is probably a separate issue

We do accept feature requests, but due to the open-source nature of this driver, the request is likely to wait until a contribution :) Macros for defining schemas are a great idea, thanks for pointing out a reference implementation.

@cortopy I made such code for Cassandra/ScyllaDB in https://github.com/Jasperav/cdrs_orm, but it doesn't support this crate yet since https://github.com/scylladb/scylla-rust-driver/issues/231 and https://github.com/scylladb/scylla-rust-driver/issues/216 (connection pooling) are not implemented yet. The ORM can generate Rust structs from tables and compile time checked queries :)

@Jasperav that's looking great!!! thanks for that

The requested functionality belongs to ORM domain. It should be implemented on top of the driver, not in the driver itself.


enhancement: Update module to go 1.16 and remove unnecessary files

Checklist:

[X] The readme and documentation has been updated or does not need to be updated
[X] This change has been communicated with the team if needed
[X] I have linked to the original issue
[ ] I have added tests to cover my changes
[X] This PR does not need notes or I've added them below
[X] This PR does not need extra testing from our release testing process or I've added a 'tests' section below

Per @dsludwig's comment https://github.com/Plantiga/go-wireless/pull/1#issuecomment-1007663959, I'm adding in CI to this repo and updating this to a proper go module.
This PR adds in the github workflow for testing, since this is a public repo.
I created this as a go module explicitly for golang 1.16, since the original repository was created before go.mod was used.
I also removed lots unneeded code, which were bringing in extra dependencies that made no sense for our use.

Adding @Rowansdabomb too. please update your local build to use the same golang version

The go 1.16 version indicated in the go.mod file is the minimum version the module supports, go tools will warn a user if compilation or running fails and the user is using a different toolchain version.
Our CI is using go 1.17 https://go.dev/doc/go1.17