Make sure your “spin” joint it the only joint affecting the barrel. It looks like both ‘pivot’ and ‘spin’ are affecting those points. Spin will inherit the motion from pivot automatically because it is a child of pivot, so you don’t need to paint the points to both.
Here’s an explanation if you are interested:
By default the skinCluster moves point by point, working on one at a time, so for simplicitly just think of a single vertex. The skincluster works by transforming that vertex by every joint it is weighted to as if it was weighted 100%. If it is weighted to two joints it will come up with two possible point positions, one for each joint. It doesn’t care about weights at this time.
Then, to figure out the final result, it draws a straight line between the two new positions it just calculated. The final blended position will be somewhere on that line between the two possible results. Where it ends up on that line depends on the skin weights. So if it is weighted to both joints by 50% it will end up exactly halfway on that line. If it is 75% to one joint and 25% to the other it will be 3/4th of the way down the line. This is known as ‘linear’ interpolation, with ‘linear’ referring to that line.
Rotation like your barrel can make cylinders appear to shrink because one joint is telling it to be on one side of the barrel, and the other joint is telling it to be on the other side of the barrel via a 180 degree rotation. If you draw a straight line between those points it goes right through the middle of the barrel, so if your point is weighted 50% to each it will end up right in the middle. This is known as a “candy wrapper” because when it happens on a character’s arm it looks like the ends of one of these .
In your case the solution is to simply weight to a single joint, spin. On a deforming character where it has to blend either more joints are used to “ease” the blend in, or ‘quaternion’ blending is used instead of ‘linear’, which is a type of rotation blending that does not draw a straight line.