text:
feat(types): Traceless types

Fixes https://github.com/azjezz/psl/issues/412
Closes https://github.com/azjezz/psl/pull/429
This PR will:

Speed up type coerce + assert by removing the trace completely.
Improve the error message by nesting the various given exceptions (whilst keeping track of current path).

This will result in errors that look like:

Expected "array{'name': string, 'articles': vec<array{'title': string, 'content': string, 'likes': int, 'comments'?: vec<array{'user': string, 'comment': string}>}>, 'dictionary': dict<string, vec<array{'title': string, 'content': string}>>, 'pagination'?: array{'currentPage': uint, 'totalPages': uint, 'perPage': uint, 'totalRows': uint}}", got "array" at path "articles.0.comments.0".

With an exception stack like:

Psl\Type\Exception\AssertException: Expected "array{'user': string, 'comment': string}", got "array". in /azjezz/psl/src/Psl/Type/Exception/AssertException.php:46
Stack trace:
0 /azjezz/psl/src/Psl/Type/Internal/ShapeType.php(171): Psl\Type\Exception\AssertException::withValue(Array, 'array{'user': s...')
1 /azjezz/psl/src/Psl/Type/Type.php(70): Psl\Type\Internal\ShapeType->assert(Array)
2 /azjezz/psl/src/Psl/Type/Internal/VecType.php(93): Psl\Type\Type->assertChildType(Object(Psl\Type\Internal\ShapeType), Array, '0')
3 /azjezz/psl/src/Psl/Type/Internal/OptionalType.php(47): Psl\Type\Internal\VecType->assert(Array)
4 /azjezz/psl/src/Psl/Type/Type.php(70): Psl\Type\Internal\OptionalType->assert(Array)
5 /azjezz/psl/src/Psl/Type/Internal/ShapeType.php(162): Psl\Type\Type->assertChildType(Object(Psl\Type\Internal\OptionalType), Array, 'comments')
6 /azjezz/psl/src/Psl/Type/Type.php(70): Psl\Type\Internal\ShapeType->assert(Array)
7 /azjezz/psl/src/Psl/Type/Internal/VecType.php(93): Psl\Type\Type->assertChildType(Object(Psl\Type\Internal\ShapeType), Array, '0')
8 /azjezz/psl/src/Psl/Type/Type.php(70): Psl\Type\Internal\VecType->assert(Array)
9 /azjezz/psl/src/Psl/Type/Internal/ShapeType.php(162): Psl\Type\Type->assertChildType(Object(Psl\Type\Internal\VecType), Array, 'articles')
10 /azjezz/psl/test.php(31): Psl\Type\Internal\ShapeType->assert(Array)
11 {main}
Next Psl\Type\Exception\AssertException: Expected "vec<array{'user': string, 'comment': string}>", got "array" at path "0". in /azjezz/psl/src/Psl/Type/Exception/AssertException.php:46
Stack trace:
0 /azjezz/psl/src/Psl/Type/Type.php(72): Psl\Type\Exception\AssertException::withValue(Array, 'vec<array{'user...', '0', Object(Psl\Type\Exception\AssertException))
1 /azjezz/psl/src/Psl/Type/Internal/VecType.php(93): Psl\Type\Type->assertChildType(Object(Psl\Type\Internal\ShapeType), Array, '0')
2 /azjezz/psl/src/Psl/Type/Internal/OptionalType.php(47): Psl\Type\Internal\VecType->assert(Array)
3 /azjezz/psl/src/Psl/Type/Type.php(70): Psl\Type\Internal\OptionalType->assert(Array)
4 /azjezz/psl/src/Psl/Type/Internal/ShapeType.php(162): Psl\Type\Type->assertChildType(Object(Psl\Type\Internal\OptionalType), Array, 'comments')
5 /azjezz/psl/src/Psl/Type/Type.php(70): Psl\Type\Internal\ShapeType->assert(Array)
6 /azjezz/psl/src/Psl/Type/Internal/VecType.php(93): Psl\Type\Type->assertChildType(Object(Psl\Type\Internal\ShapeType), Array, '0')
7 /azjezz/psl/src/Psl/Type/Type.php(70): Psl\Type\Internal\VecType->assert(Array)
8 /azjezz/psl/src/Psl/Type/Internal/ShapeType.php(162): Psl\Type\Type-> assertChildType(Object(Psl\Type\Internal\VecType), Array, 'articles')
9 /azjezz/psl/test.php(31): Psl\Type\Internal\ShapeType->assert(Array)
10 {main}
Next Psl\Type\Exception\AssertException: Expected "array{'title': string, 'content': string, 'likes': int, 'comments'?: vec<array{'user': string, 'comment': string}>}", got "array" at path "comments.0". in /azjezz/psl/src/Psl/Type/Exception/AssertException.php:46
Stack trace:
0 /azjezz/psl/src/Psl/Type/Type.php(72): Psl\Type\Exception\AssertException::withValue(Array, 'array{'title': ...', 'comments', Object(Psl\Type\Exception\AssertException))
1 /azjezz/psl/src/Psl/Type/Internal/ShapeType.php(162): Psl\Type\Type->assertChildType(Object(Psl\Type\Internal\OptionalType), Array, 'comments')
2 /azjezz/psl/src/Psl/Type/Type.php(70): Psl\Type\Internal\ShapeType->assert(Array)
3 /azjezz/psl/src/Psl/Type/Internal/VecType.php(93): Psl\Type\Type->assertChildType(Object(Psl\Type\Internal\ShapeType), Array, '0')
4 /azjezz/psl/src/Psl/Type/Type.php(70): Psl\Type\Internal\VecType->assert(Array)
5 /azjezz/psl/src/Psl/Type/Internal/ShapeType.php(162): Psl\Type\Type->assertChildType(Object(Psl\Type\Internal\VecType), Array, 'articles')
6 /azjezz/psl/test.php(31): Psl\Type\Internal\ShapeType->assert(Array)
7 {main}
Next Psl\Type\Exception\AssertException: Expected "vec<array{'title': string, 'content': string, 'likes': int, 'comments'?: vec<array{'user': string, 'comment': string}>}>", got "array" at path "0.comments.0". in /azjezz/psl/src/Psl/Type/Exception/AssertException.php:46
Stack trace:
0 /azjezz/psl/src/Psl/Type/Type.php(72): Psl\Type\Exception\AssertException::withValue(Array, 'vec<array{'titl...', '0', Object(Psl\Type\Exception\AssertException))
1 /azjezz/psl/src/Psl/Type/Internal/VecType.php(93): Psl\Type\Type->assertChildType(Object(Psl\Type\Internal\ShapeType), Array, '0')
2 /azjezz/psl/src/Psl/Type/Type.php(70): Psl\Type\Internal\VecType->assert(Array)
3 /azjezz/psl/src/Psl/Type/Internal/ShapeType.php(162): Psl\Type\Type->assertChildType(Object(Psl\Type\Internal\VecType), Array, 'articles')
4 /azjezz/psl/test.php(31): Psl\Type\Internal\ShapeType->assert(Array)
5 {main}
Next Psl\Type\Exception\AssertException: Expected "array{'name': string, 'articles': vec<array{'title': string, 'content': string, 'likes': int, 'comments'?: vec<array{'user': string, 'comment': string}>}>, 'dictionary': dict<string, vec<array{'title': string, 'content': string}>>, 'pagination'?: array{'currentPage': uint, 'totalPages': uint, 'perPage': uint, 'totalRows': uint}}", got "array" at path "articles.0.comments.0". in /azjezz/psl/src/Psl/Type/Exception/AssertException.php:46
Stack trace:
0 /azjezz/psl/src/Psl/Type/Type.php(72): Psl\Type\Exception\AssertException::withValue(Array, 'array{'name': s...', 'articles', Object(Psl\Type\Exception\AssertException))
1 /azjezz/psl/src/Psl/Type/Internal/ShapeType.php(162): Psl\Type\Type->assertChildType(Object(Psl\Type\Internal\VecType), Array, 'articles')
2 /azjezz/psl/test.php(31): Psl\Type\Internal\ShapeType->assert(Array)
3 {main}

The benchmarks results look promising:

Pull Request Test Coverage Report for Build 8472283332
Details

218 of 227 (96.04%)  changed or added relevant lines in 46 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.2%) to 98.798%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/Psl/Type/Internal/ShapeType.php
31
33
93.94%

src/Psl/Type/Internal/VecType.php
14
16
87.5%

src/Psl/Type/Internal/DictType.php
25
30
83.33%

Totals

Change from base Build 8448386198:
-0.2%

Covered Lines:
4193

Relevant Lines:
4244

💛  - Coveralls

Final bench results
PHPBench (1.2.14) running benchmarks... #standwithukraine
with configuration file: /Users/verweto/Projects/github/azjezz/psl/config/phpbench.json
with PHP version 8.2.10, xdebug ❌, opcache ❌
comparing [actual vs. benchmark_reference]

\Psl\Tests\Benchmark\Channel\CommunicationBench

    benchBoundedCommunication...............R1 I2 - [Mo2.715ms vs. Mo3.038ms] -10.65% (±2.41%)
    benchUnboundedCommunication.............R1 I4 - [Mo2.544ms vs. Mo2.785ms] -8.66% (±2.15%)

\Psl\Tests\Benchmark\Type\VecTypeBench

    benchCoerce # mixed, empty array........R1 I4 - [Mo0.143μs vs. Mo0.504μs] -71.62% (±2.60%)
    benchCoerce # mixed, empty iterable.....R1 I1 - [Mo0.180μs vs. Mo0.520μs] -65.36% (±0.00%)
    benchCoerce # mixed, non-empty array....R1 I1 - [Mo0.331μs vs. Mo0.800μs] -58.67% (±1.20%)
    benchCoerce # mixed, non-empty iterable.R1 I3 - [Mo0.467μs vs. Mo1.162μs] -59.79% (±3.22%)
    benchCoerce # mixed, large array........R1 I2 - [Mo5.372μs vs. Mo9.063μs] -40.72% (±1.22%)
    benchCoerce # mixed, large iterable.....R2 I2 - [Mo8.234μs vs. Mo8.911μs] -7.60% (±2.07%)
    benchCoerce # int, empty array..........R5 I4 - [Mo0.150μs vs. Mo0.602μs] -75.10% (±1.34%)
    benchCoerce # int, empty iterable.......R5 I4 - [Mo0.180μs vs. Mo0.641μs] -71.90% (±1.10%)
    benchCoerce # int, non-empty array......R1 I4 - [Mo0.357μs vs. Mo0.816μs] -56.25% (±1.24%)
    benchCoerce # int, non-empty iterable...R2 I2 - [Mo0.542μs vs. Mo0.993μs] -45.40% (±1.36%)
    benchAssert # mixed, empty array........R5 I4 - [Mo0.150μs vs. Mo0.595μs] -74.81% (±1.34%)
    benchAssert # mixed, non-empty array....R1 I2 - [Mo0.328μs vs. Mo0.768μs] -57.36% (±2.02%)
    benchAssert # mixed, large array........R1 I4 - [Mo5.147μs vs. Mo6.062μs] -15.09% (±2.79%)
    benchAssert # int, empty array..........R5 I4 - [Mo0.150μs vs. Mo0.532μs] -71.83% (±1.32%)
    benchAssert # int, non-empty array......R1 I1 - [Mo0.340μs vs. Mo0.665μs] -48.86% (±0.72%)
    benchMatch # mixed, empty array.........R1 I4 - [Mo0.130μs vs. Mo0.128μs] +1.39% (±1.91%)
    benchMatch # mixed, non-empty array.....R1 I4 - [Mo0.280μs vs. Mo0.349μs] -19.76% (±1.13%)
    benchMatch # mixed, large array.........R1 I4 - [Mo4.645μs vs. Mo4.566μs] +1.72% (±3.01%)
    benchMatch # int, empty array...........R2 I1 - [Mo0.125μs vs. Mo0.130μs] -3.72% (±0.00%)
    benchMatch # int, non-empty array.......R2 I4 - [Mo0.286μs vs. Mo0.360μs] -20.69% (±1.39%)

\Psl\Tests\Benchmark\Type\DictTypeBench

    benchCoerce # generic array, empty arra.R2 I4 - [Mo0.153μs vs. Mo1.011μs] -84.86% (±2.43%)
    benchCoerce # generic array, empty iter.R5 I4 - [Mo0.195μs vs. Mo1.050μs] -81.44% (±1.62%)
    benchCoerce # generic array, non-empty .R1 I4 - [Mo0.328μs vs. Mo1.013μs] -67.62% (±2.67%)
    benchCoerce # generic array, non-empty .R5 I4 - [Mo0.399μs vs. Mo1.274μs] -68.66% (±1.22%)
    benchCoerce # generic array, large arra.R1 I2 - [Mo12.588μs vs. Mo14.764μs] -14.74% (±2.17%)
    benchCoerce # generic array, large iter.R1 I4 - [Mo15.821μs vs. Mo18.379μs] -13.92% (±0.20%)
    benchCoerce # int array, empty array....R1 I4 - [Mo0.155μs vs. Mo0.917μs] -83.10% (±2.04%)
    benchCoerce # int array, empty iterable.R1 I4 - [Mo0.195μs vs. Mo1.020μs] -80.89% (±1.62%)
    benchCoerce # int array, non-empty arra.R1 I4 - [Mo0.513μs vs. Mo1.391μs] -63.13% (±1.13%)
    benchCoerce # int array, non-empty iter.R1 I4 - [Mo0.643μs vs. Mo1.494μs] -56.98% (±1.66%)
    benchCoerce # int array, large array....R1 I2 - [Mo10.339μs vs. Mo11.148μs] -7.25% (±1.38%)
    benchCoerce # int array, large iterable.R1 I4 - [Mo13.325μs vs. Mo13.502μs] -1.31% (±1.73%)
    benchCoerce # map, empty array..........R1 I4 - [Mo0.155μs vs. Mo0.788μs] -80.34% (±1.30%)
    benchCoerce # map, empty iterable.......R1 I4 - [Mo0.195μs vs. Mo0.858μs] -77.26% (±1.62%)
    benchCoerce # map, non-empty array......R1 I4 - [Mo0.595μs vs. Mo1.168μs] -49.06% (±0.53%)
    benchCoerce # map, non-empty iterable...R1 I1 - [Mo0.723μs vs. Mo1.572μs] -54.02% (±1.28%)
    benchCoerce # map, large array..........R1 I4 - [Mo10.704μs vs. Mo12.508μs] -14.43% (±1.83%)
    benchCoerce # map, large iterable.......R1 I4 - [Mo14.020μs vs. Mo15.275μs] -8.22% (±0.69%)
    benchAssert # generic array, empty arra.R2 I3 - [Mo0.145μs vs. Mo0.937μs] -84.52% (±1.37%)
    benchAssert # generic array, non-empty .R2 I4 - [Mo0.288μs vs. Mo0.982μs] -70.68% (±2.00%)
    benchAssert # generic array, large arra.R2 I4 - [Mo12.074μs vs. Mo14.671μs] -17.70% (±2.63%)
    benchAssert # int array, empty array....R1 I4 - [Mo0.143μs vs. Mo0.821μs] -82.58% (±2.60%)
    benchAssert # int array, non-empty arra.R1 I4 - [Mo0.465μs vs. Mo1.305μs] -64.37% (±0.53%)
    benchAssert # int array, large array....R1 I4 - [Mo10.921μs vs. Mo12.895μs] -15.31% (±1.99%)
    benchAssert # map, empty array..........R1 I2 - [Mo0.143μs vs. Mo0.840μs] -82.97% (±2.60%)
    benchAssert # map, non-empty array......R1 I2 - [Mo0.570μs vs. Mo1.257μs] -54.65% (±0.78%)
    benchAssert # map, large array..........R5 I4 - [Mo10.356μs vs. Mo10.480μs] -1.19% (±1.89%)
    benchMatch # generic array, empty array.R1 I1 - [Mo0.179μs vs. Mo0.995μs] -81.97% (±2.26%)
    benchMatch # generic array, non-empty a.R1 I4 - [Mo0.317μs vs. Mo1.136μs] -72.07% (±2.11%)
    benchMatch # generic array, large array.R1 I4 - [Mo12.213μs vs. Mo14.747μs] -17.18% (±1.25%)
    benchMatch # int array, empty array.....R2 I4 - [Mo0.175μs vs. Mo0.931μs] -81.21% (±1.42%)
    benchMatch # int array, non-empty array.R1 I2 - [Mo0.486μs vs. Mo1.335μs] -63.62% (±0.82%)
    benchMatch # int array, large array.....R1 I4 - [Mo10.910μs vs. Mo13.128μs] -16.89% (±1.91%)
    benchMatch # map, empty array...........R3 I3 - [Mo0.175μs vs. Mo0.795μs] -77.98% (±1.15%)
    benchMatch # map, non-empty array.......R3 I4 - [Mo0.590μs vs. Mo1.214μs] -51.37% (±0.86%)
    benchMatch # map, large array...........R3 I4 - [Mo10.213μs vs. Mo11.266μs] -9.35% (±0.70%)

\Psl\Tests\Benchmark\Type\NonEmptyStringTypeBench

    benchCoerce # string....................R3 I4 - [Mo0.105μs vs. Mo0.127μs] -17.28% (±1.89%)
    benchCoerce # int.......................R1 I3 - [Mo0.125μs vs. Mo0.150μs] -16.58% (±1.61%)
    benchCoerce # instanceof Stringable (ex.R1 I4 - [Mo0.150μs vs. Mo0.187μs] -19.59% (±3.18%)
    benchCoerce # instanceof Stringable (im.R1 I4 - [Mo0.155μs vs. Mo0.161μs] -3.52% (±1.30%)
    benchAssert.............................R1 I4 - [Mo0.100μs vs. Mo0.125μs] -19.87% (±2.40%)
    benchMatch..............................R1 I4 - [Mo0.105μs vs. Mo0.120μs] -12.50% (±1.89%)

\Psl\Tests\Benchmark\Type\StringTypeBench

    benchCoerce # string....................R1 I0 - [Mo0.095μs vs. Mo0.100μs] -5.18% (±2.63%)
    benchCoerce # int.......................R1 I4 - [Mo0.120μs vs. Mo0.125μs] -4.00% (±1.68%)
    benchCoerce # instanceof Stringable (ex.R1 I4 - [Mo0.143μs vs. Mo0.150μs] -4.76% (±3.19%)
    benchCoerce # instanceof Stringable (im.R1 I4 - [Mo0.135μs vs. Mo0.150μs] -9.89% (±1.79%)
    benchAssert.............................R1 I4 - [Mo0.085μs vs. Mo0.100μs] -14.83% (±2.82%)
    benchMatch..............................R1 I0 - [Mo0.095μs vs. Mo0.100μs] -5.17% (±2.63%)

\Psl\Tests\Benchmark\Type\ArrayKeyTypeBench

    benchCoerce # string....................R2 I2 - [Mo0.095μs vs. Mo0.100μs] -5.00% (±2.08%)
    benchCoerce # int.......................R1 I1 - [Mo0.100μs vs. Mo0.125μs] -19.86% (±2.40%)
    benchCoerce # instanceof Stringable (ex.R1 I0 - [Mo5.975μs vs. Mo5.171μs] +15.53% (±2.07%)
    benchCoerce # instanceof Stringable (im.R1 I0 - [Mo5.867μs vs. Mo4.665μs] +25.78% (±3.67%)
    benchAssert # string....................R1 I3 - [Mo0.095μs vs. Mo0.115μs] -17.42% (±2.63%)
    benchAssert # int.......................R1 I4 - [Mo0.100μs vs. Mo0.125μs] -20.13% (±2.50%)
    benchMatch # string.....................R1 I4 - [Mo0.100μs vs. Mo0.125μs] -19.99% (±1.98%)
    benchMatch # int........................R1 I2 - [Mo0.100μs vs. Mo0.127μs] -21.10% (±2.40%)

\Psl\Tests\Benchmark\Type\IntTypeBench

    benchCoerce # int.......................R5 I4 - [Mo0.095μs vs. Mo0.100μs] -5.32% (±2.63%)
    benchCoerce # string....................R5 I4 - [Mo0.163μs vs. Mo0.205μs] -20.45% (±2.28%)
    benchCoerce # float.....................R5 I4 - [Mo0.120μs vs. Mo0.145μs] -17.34% (±1.68%)
    benchCoerce # instanceof Stringable (ex.R2 I3 - [Mo0.204μs vs. Mo0.255μs] -19.88% (±2.38%)
    benchCoerce # instanceof Stringable (im.R1 I2 - [Mo0.205μs vs. Mo0.209μs] -2.06% (±0.00%)
    benchAssert.............................R1 I4 - [Mo0.085μs vs. Mo0.100μs] -14.83% (±2.82%)
    benchMatch..............................R2 I4 - [Mo0.090μs vs. Mo0.100μs] -9.84% (±2.66%)

\Psl\Tests\Benchmark\Type\ShapeTypeBench

    benchCoerce # empty shape, empty array .R1 I3 - [Mo0.330μs vs. Mo0.358μs] -7.72% (±0.60%)
    benchCoerce # empty shape, empty iterab.R1 I4 - [Mo0.574μs vs. Mo0.620μs] -7.35% (±2.45%)
    benchCoerce # empty shape, non-empty ar.R1 I4 - [Mo0.372μs vs. Mo0.465μs] -19.94% (±1.80%)
    benchCoerce # empty shape, non-empty it.R5 I4 - [Mo0.795μs vs. Mo0.968μs] -17.87% (±2.86%)
    benchCoerce # complex shape with option.R1 I2 - [Mo0.724μs vs. Mo0.862μs] -16.01% (±1.80%)
    benchCoerce # complex shape with option.R1 I3 - [Mo1.801μs vs. Mo4.719μs] -61.83% (±2.59%)
    benchCoerce # complex shape with option.R1 I0 - [Mo0.975μs vs. Mo1.385μs] -29.58% (±2.53%)
    benchCoerce # complex shape with option.R3 I4 - [Mo3.635μs vs. Mo6.848μs] -46.92% (±3.95%)
    benchAssert # empty shape, empty array .R1 I4 - [Mo0.125μs vs. Mo0.151μs] -16.80% (±3.80%)
    benchAssert # empty shape, non-empty ar.R1 I4 - [Mo0.230μs vs. Mo0.280μs] -17.85% (±1.72%)
    benchAssert # complex shape with option.R1 I4 - [Mo1.033μs vs. Mo3.626μs] -71.52% (±0.43%)
    benchAssert # complex shape with option.R1 I0 - [Mo2.090μs vs. Mo5.227μs] -60.01% (±1.37%)
    benchMatch # empty shape, empty array v.R1 I4 - [Mo0.158μs vs. Mo0.196μs] -19.21% (±2.35%)
    benchMatch # empty shape, non-empty arr.R1 I4 - [Mo0.255μs vs. Mo0.310μs] -17.78% (±0.78%)
    benchMatch # complex shape with optiona.R1 I4 - [Mo1.066μs vs. Mo3.678μs] -71.01% (±1.23%)
    benchMatch # complex shape with optiona.R2 I1 - [Mo2.194μs vs. Mo5.185μs] -57.68% (±1.19%)

Subjects: 23, Assertions: 0, Failures: 0, Errors: 0

Yeh, can be done later on too, to perhaps do the iteration in a dedicated way.

@azjezz WDYT about releasing 3.x with just this breaking change in? It's substantial enough, but allows moving forward easily, IMO :)

For Type\ I'm okay wtih that, but we need to finish #342 and #446 before we can release 3.x ( your review there would be appreciated :) )

your review there would be appreciated :)

Added to my bucket of things to do tomorrow :)

authors: Ocramius azjezz coveralls veewee

repo: azjezz/psl


text:
Azkaban solo server & H2 : The file is locked

Hi,
We recently update our Azkaban solo server instance with a embded H2 database from 3.0.0 release to 3.20.0.
We set the h2.path to a different one to recreate database from scratch to avoid version conflict.
After some time (between 2 to 12 hours) Azkaban crash due to the h2 database locked
org.h2.message.DbException: General error: "java.lang.IllegalStateException: The file is locked: nio:/opt/data/azkaban.mv.db [1.4.193/7]" [50000-193]
The database never unlock (so all sql queries from azkaban fail)  unless we restart azkaban instance
We have only one instance on the server and the h2 file is only used by Azkaban solo server.
With the previous release (3.0.0) we never had this error.
Is someone has insight about what happen ?
Thanks !

Have you tried enforcing H2 never locking a file and see what happened?
http://stackoverflow.com/a/39075506

Not solve the issue but we have a different error !
I delete all H2 files to restart from scratch and I configure azkaban with :
database.type=h2
h2.path=/var/lib/azkaban/azkaban;DB_CLOSE_ON_EXIT=TRUE;FILE_LOCK=NO
h2.create.tables=true

After ~24 hours of run I got a azkaban crash (webserver UI is up but any sql query fails) :
2017-05-03 10:30:17 jdbc[18]: exception
org.h2.jdbc.JdbcSQLException: General error: "java.lang.IllegalStateException: Reading from nio:/var/lib/azkaban/azkaban.mv.db failed; file length -1 read length 768 at 50986998 [1.4.193/1]" [50000-193]
        at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
        at org.h2.message.DbException.get(DbException.java:168)
        at org.h2.message.DbException.convert(DbException.java:295)
        at org.h2.message.DbException.toSQLException(DbException.java:268)
        at org.h2.message.TraceObject.logAndConvert(TraceObject.java:352)
        at org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:151)
        at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:98)
        at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:98)
        at org.apache.commons.dbutils.QueryRunner.update(QueryRunner.java:487)
        at org.apache.commons.dbutils.QueryRunner.update(QueryRunner.java:403)
        at azkaban.executor.JdbcExecutorLoader.updateExecutableFlow(JdbcExecutorLoader.java:154)
        at azkaban.executor.JdbcExecutorLoader.updateExecutableFlow(JdbcExecutorLoader.java:126)
        at azkaban.execapp.FlowRunner.updateFlow(FlowRunner.java:307)
        at azkaban.execapp.FlowRunner.updateFlow(FlowRunner.java:301)
        at azkaban.execapp.FlowRunner.progressGraph(FlowRunner.java:504)
        at azkaban.execapp.FlowRunner.runFlow(FlowRunner.java:395)
        at azkaban.execapp.FlowRunner.run(FlowRunner.java:223)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalStateException: Reading from nio:/var/lib/azkaban/azkaban/azkaban.mv.db failed; file length -1 read length 768 at 50986998 [1.4.193/1]
        at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:765)
        at org.h2.mvstore.DataUtils.readFully(DataUtils.java:435)
        at org.h2.mvstore.FileStore.readFully(FileStore.java:98)
		at org.h2.mvstore.Page.read(Page.java:190)
        at org.h2.mvstore.MVStore.readPage(MVStore.java:1954)
        at org.h2.mvstore.MVMap.readPage(MVMap.java:736)
        at org.h2.mvstore.Page.getChildPage(Page.java:217)
        at org.h2.mvstore.MVMap.binarySearch(MVMap.java:468)
        at org.h2.mvstore.MVMap.binarySearch(MVMap.java:469)
        at org.h2.mvstore.MVMap.get(MVMap.java:450)
        at org.h2.mvstore.MVStore.getMapName(MVStore.java:2469)
        at org.h2.mvstore.MVMap.getName(MVMap.java:945)
        at org.h2.mvstore.db.TransactionStore$1.fetchNext(TransactionStore.java:555)
        at org.h2.mvstore.db.TransactionStore$1.<init>(TransactionStore.java:530)
        at org.h2.mvstore.db.TransactionStore.getChanges(TransactionStore.java:524)
        at org.h2.mvstore.db.TransactionStore$Transaction.getChanges(TransactionStore.java:813)
        at org.h2.engine.Session.rollbackTo(Session.java:751)
        at org.h2.command.Command.executeUpdate(Command.java:282)
        at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:160)
        at org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:146)
        ... 16 more
Caused by: java.nio.channels.ClosedChannelException
        at sun.nio.ch.FileChannelImpl.ensureOpen(FileChannelImpl.java:110)
        at sun.nio.ch.FileChannelImpl.read(FileChannelImpl.java:721)
        at org.h2.store.fs.FileNio.read(FilePathNio.java:74)
        at org.h2.mvstore.DataUtils.readFully(DataUtils.java:421)
        ... 34 more
2017-05-03 10:30:17 jdbc[16]: exception
org.h2.jdbc.JdbcSQLException: The object is already closed; SQL statement:
INSERT INTO execution_jobs (exec_id, project_id, version, flow_id, job_id, start_time, end_time, status, input_params, attempt) VALUES (?,?,?,?,?,?,?,?,?,?) [90007-193]
 (...)

For test purpose I relaunch the 3.20 instance  with the h2 jar of the 3.0.0 release (h2-1.3.170.jar in place of h2-1.4.193.jar).
Server is booting, waiting to see if I arrive to reproduce the issue with this h2 version...

@hriviere
Were you able to solve the issue?

source: gharchive/issue

authors: hriviere kunkun-tang simrandeep11

repo: azkaban/azkaban

license_type: permissive

license_source: github-api


text:
Use ExecutableFlow member variables to track and control flow-level retry

Why we need this
Part of the flow-retry feature, and it's improving the implementation:

Remove modifying the user-input ExecutionOptions, keep them as is
clearer model to count & control how many times can an execution retry, respectively for non- / terminal originalStatus

What's done

remove isExecutionRetried from ExecutionOptions because it doesn't distinguish type of retry, and retry count should be execution level info.
use systemRetriedTimes to count retries on dispatch/preparing/ready status executions (by default should retry by the system)
use customRetriedTimes to count retries on finalized status failed/execution_stopped defined by users

Tests done

updated unit tests
tested in a cluster:

Launched the original execution 786575:

Delete the k8s pod to trigger EXECUTION_STOPPED, and a new execution got retried:

The new execution has customRetriedTimes=1

To consider in a subsequent PR.
Since we're modifying user input to maintain backward compatibility (see below code block), can we also set FLOW_PARAM_MAX_RETRIES to 1 if the user didn't do it and add a log to record what was done?
if (Boolean.parseBoolean(
        flowParameters.getOrDefault(
            FlowParameters.FLOW_PARAM_ALLOW_RESTART_ON_EXECUTION_STOPPED, "false"))
    ){
      flowParameters.put(
          FlowParameters.FLOW_PARAM_ALLOW_RESTART_ON_STATUS,
          Status.EXECUTION_STOPPED.name() + "," +
              flowParameters.getOrDefault(FlowParameters.FLOW_PARAM_ALLOW_RESTART_ON_STATUS, "")
      );
      flowParameters.remove(FlowParameters.FLOW_PARAM_ALLOW_RESTART_ON_EXECUTION_STOPPED);
}

Also, as an alternative to automatically attempting 1 retry if the user didn't define the property FLOW_PARAM_MAX_RETRIES which can lead to confusion, can we make it a required property if FLOW_PARAM_ALLOW_RESTART_ON_STATUS is defined. For example: if FLOW_PARAM_ALLOW_RESTART_ON_STATUS is defined but not FLOW_PARAM_MAX_RETRIES we should return 404 - Bad request and a message like "FLOW_PARAM_MAX_RETRIES property is required when defining FLOW_PARAM_ALLOW_RESTART_ON_STATUS". WDYT?

Please consider the suggestion above in a subsequent PR.

Good advice! let me note down this task

source: gharchive/pull-request


text:
Traffic manager modules

1050
PR Checklist

[x] I have added example(s) inside the [./examples/] folder
[ ] I have added the example(s) to the integration test list for normal (~30 minutes) or long runner >30 minutes
[ ] I have checked the coding conventions as per the wiki
[x] I have checked to ensure there aren't other open Pull Requests for the same update/change?

Description
Add support for :
azurerm_traffic_manager_azure_endpoint
azurerm_traffic_manager_endpoint
azurerm_traffic_manager_external_endpoint
azurerm_traffic_manager_nested_endpoint
azurerm_traffic_manager_profile

Does this introduce a breaking change

[ ] YES
[x] NO

Testing

hi @onlyillusion, thanks for the PR, looks good!
When running it with version 2.99 of the provider, I'm getting the following warning:
╷
│ Warning: Deprecated Resource
│
│   with module.example.module.traffic_manager_endpoint.azurerm_traffic_manager_endpoint.endpoint,
│   on ../modules/networking/traffic_manager/traffic_manager_endpoint/traffic_manager_endpoint.tf line 1, in resource "azurerm_traffic_manager_endpoint" "endpoint":
│    1: resource "azurerm_traffic_manager_endpoint" "endpoint" {
│
│ The resource 'azurerm_traffic_manager_endpoint' has been deprecated in favour of
│ 'azurerm_traffic_manager_azure_endpoint', 'azurerm_traffic_manager_external_endpoint', and
│ 'azurerm_traffic_manager_nested_endpoint' and will be removed in version 3.0 of the Azure Provider.
│
│ (and 2 more similar warnings elsewhere)
╵

Can you please have a look on the updates needed to make it more long term?
Thanks so much!

@arnaudlh based on terraform docs they removing azurerm_traffic_manager_endpoint in >~3.x.x versions
another modules will continue working.
But befor 3.x.x there are chance to using

authors: arnaudlh onlyillusion

repo: aztfmod/terraform-azurerm-caf

license: MIT


text:
Azk agent not running

I have a few running services inside azk vm and a few azk shells started, which I can access.
The http loadbalancer stopped working (connection reset by peer), and azk status says that agent is not running. However, the containers are open and running. Any ideas ? In the last few days I had a lot of problems with azk (last 2 versions, 0.14.4 and 0.15.0), the vm stopped completely on system sleep twice.
Before, on azk 0.12.1 everything was fine.
Are there any logs I can paste here ?
$ azk status
? The agent is not running, would you like to start it? No
azk: azk agent is required but is not running (try `azk agent status`)

Hi @teodor-pripoae ! Thanks for your feedback!
Sorry about this. The root cause should be a routine inside azk that verifies if Docker daemon is up and, otherwise, stops azk agent.
This was included in #479 and #493.
The goal of those PRs was exactly the opposite: once the agent components wasn't properly working, the agent should shutdown itself and give the user a chance to bring it up again instead of receiving weird error messages.
For now, we recommend you to use azk agent with the option --no-daemon in a separated terminal tab. This way, if the agent stops, you can notice and start it again.
We'll prioritize this for solving.

Hi,
Thanks for your fix !. How is the recommended way to do it ?
# Before I was doing:
$ azk agent start
$ azk start ....

# Now like this ?
$ azk agent --no-daemon # this will keep daemon in foreground ?
$ azk start ...

Is this related to the bug that was causing high cpu usage for the vm when monitoring docker ? It was fixed, since after upgrading my vm is using under 20% CPU with 31 services running, but it keeps stopping.
Can this issue be related to running a lot of services ? Does it hit some timeout when checking each services from docker ?

@fearenales in fact the current approach isn't the best. There are situations in which VirtualBox can suspend the VM for a while or Docker service can go down.
The flux should be modified to:

Check the current VM state if it's running or VirtualBox is hanging it;
Periodically check for Docker service's integrity and restart it if it's down;
If Docker service cannot be restarted, restart the VM;
If none of the actions above can be succesfully run, agent stops with a failure;

Important:

Currently, azk agent is a monolitic block. An improvement to restart components of the agent and making the agent itself a subsystems monitor (our idea for the future) would be needed;
Restarting Docker is specially complex, we have components of azk agent that run inside Docker and those components should also be restarted after Docker is restarted;
After Docker is restarted, all applications started with azk would be down. This is not a real problem, given Docker just has failed, but it's important for the user to know they're down due to this reason, not an internal error.

@nuxlli Are there any places where I can patch and remove this checks until a patch is released ?
I never restart docker service inside the vm, and I can wait a little after I wake the system from sleep.
I don't know if this checks were back in 0.12.1, but I never had problem with docker restarting suddenly. I guess this checks are needed for linux version of azk, but where can I remove them temporarily until next release ?

@teodor-pripoae Yes, --no-daemon will keep agent in foreground, so you'll need to use another terminal to run azk start.
Yes, we've fixed the high CPU usage in azk v0.14.5, but the main issue is the poor check strategy pointed by @nuxlli .

@teodor-pripoae you can do the following patch:

Add a new config (call it monitor) into https://github.com/azukiapp/azk/blob/master/src/config.js#L86-L99, related to a env var (call it AZK_DOCKER_MONITOR) which default value should be true if the current SO is Linux or false otherwise. To check the SO, import so (like this) in the config.js file and use os.platform() == 'linux' as the default value for that config;
Wrap this code with an ifstatement checking if config('docker:monitor') is true;

After doing this, you should be able to run a make and use the azk file placed in the bin file in the azk project dir (it's a good idea to create a new alias for this an use it instead of normal azk meanwhile).
This should work and would be awesome if you could sent your solution as a Pull Request!
Any issue or concern, please let me know!

Cool ! Thank you, I will try this in a few hours and submit a PR if it works :)

Hey @teodor-pripoae , just checked out your PR. Great job! Did that solve your problem?

Yes, azk didn't stopped the vm yet, so it seems to work. :)

I've just run my batch of tests and everything seems ok.

@fearenales
Btw, do you know why the test suite gives me this error ? Do I need linux ?
$ azk nvm npm test

> azk@0.15.0 test /Users/toni/code/gh/azk
> make test

task: test
/Users/toni/code/gh/azk/bin/azk nvm gulp test  ""
[16:48:30] Using gulpfile ~/code/gh/azk/gulpfile.js
make: *** [test] Error 1
npm ERR! Test failed.  See above for more details.

Use this to run te test suite:
azk nvm gulp test --slow

I'm sorry for not telling you before.

Thanks!
Everything green,except port binding (I already had agent service binding on that port), and file syncing. But I guess the problems are elsewhere. Will investigate later, the main bug didn't happen for 12 hours, so I guess it's ok.
  375 passing (2m)
  1 pending
  4 failing

  1) Azk docker module, run method @slow should support bind ports:
     Error: HTTP code is 500 which indicates error: server error - Cannot start container 9d1ebc5102895ccfdc2dbef55883b986b1e7ffdd19d67449baa3fdb4bf46de40: Error starting userland proxy: listen tcp 0.0.0.0:32777: bind: address already in use

      at _stream_readable.js:944:16

2) Azk sync, Worker module should not include content patterns files from except_from option:
     AssertionError: expected '/private/var/folders/f5/bdtz6z3n4ns8mpkp1npyhj6c0000gn/T/azk-test-54492228zn1s/bar/Fred.txt' not to match /bar\/Fred.txt/
      at Test.callee$1$1$ (/azk:0.15.0/spec/sync/worker_spec.js:216:27)

  3) Azk sync, Worker module should exclude the .gitignore content for default:
     AssertionError: expected '/private/var/folders/f5/bdtz6z3n4ns8mpkp1npyhj6c0000gn/T/azk-test-54492n1w3zrk/ignored/Fred.txt' not to match /ignored\/Fred.txt/
      at Test.callee$1$2$ (/azk:0.15.0/spec/sync/worker_spec.js:241:27)

  4) Azk sync, Worker module should exclude the .syncignore content for default in preference to .gitignore:
     AssertionError: expected '/private/var/folders/f5/bdtz6z3n4ns8mpkp1npyhj6c0000gn/T/azk-test-54492cqjv6qo/foo/Moe.txt' to match /ignored\/Fred.txt/
      at Test.callee$1$3$ (/azk:0.15.0/spec/sync/worker_spec.js:267:23)

hmm.. which version of rsync are you using? Those errors are odd.

Running on OSX. I didn't stop my services or vm when running tests, is this required ?
$ rsync --version
rsync  version 3.1.1  protocol version 31
Copyright (C) 1996-2014 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
    64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
    append, ACLs, xattrs, iconv, symtimes, no prealloc, file-flags

Same thing happened at our CI box. I'm going to dig it deeper and ping you back ASAP.

I ran it again and now only one error. It seems it is an intermittent error.
1) Azk sync, Worker module should not include content patterns files from except_from option:
     AssertionError: expected '/private/var/folders/f5/bdtz6z3n4ns8mpkp1npyhj6c0000gn/T/azk-test-562383t7d56o/ignored/Fred.txt' not to match /ignored\/Fred.txt/
      at Test.callee$1$1$ (/azk:0.15.0/spec/sync/worker_spec.js:215:27)

Yes, I've run it again in the CI box and everything passed... It's an intermittent error :/
Well, don't worry, I don't think your changes introduced that but I'll take a closer look on this when I have a chance.
Thank you very much for your PR, we do appreciate.

Thank you for your help, too :)

authors: fearenales nuxlli teodor-pripoae

repo: azukiapp/azk

license_source: bigquery


text:
SNMP getnext bug

If you fix up the order of the demo MIB,

SNMPWalk fails to continue on the following line:
{(UCHAR *) "1.3.6.1.2.1.3.1.1.2.0",   &atPhysAddress,             NX_NULL, nx_snmp_object_octet_string_get, nx_snmp_object_octet_string_set, 0},

mib2_getnext_processing is called repeatedly until the query times out.

Just need to handle the case in mib2_get_processing & mib2_getnext_processing.
	if (mib2_mib[i].object_get_callback) // Determine if the entry has a get function. 	{         	XXX 	} 	**else if(mib2_mib[i].object_get_octet_callback) // Determine if the entry has a get octet function. 	{ 		status = (mib2_mib[i].object_get_octet_callback)(mib2_mib[i].object_value_ptr, object_data); 	}** 	else 	{ 		status = NX_SNMP_ERROR_NOACCESS; 	} 	return(status);

repo: azure-rtos/netxduo


text:
Merge Application Gateway Deployment to Main Networking Deployment

Merge Application Gateway Deployment to Main Networking Deployment

Added to branch #189 . Closed.

repo: azuredemoenvironment/ade


text:
Explicitly state compile errors

Brief
Some contracts may have compile errors, however compile errors are stated by Compiling the Solidity code did not return any bytecode error message, which sometimes may be misleading. This PR proposes to make compile errors more explicit to end user.
Status
Stable.
Changes

Introduced getCompileErrors() function to extract only error messages from compiler messages combined array. https://github.com/b-mueller/sabre/blob/b8339d89ad7c909bfb3793843038c8f8ce87f491/lib/compiler.js#L200-L217
Introduced getByteCodeString() function to safely extract bytecode from compiled contract data, as previous approach was way too strict, wasn't applied in necessary places and caused problems. https://github.com/b-mueller/sabre/blob/b8339d89ad7c909bfb3793843038c8f8ce87f491/lib/compiler.js#L219-L233
Improved getCompiledContracts():

Made compile errors to be explicitly stated: https://github.com/b-mueller/sabre/blob/b8339d89ad7c909bfb3793843038c8f8ce87f491/lib/compiler.js#L242-L248
Fixed several places where bytecode lookup was triggering errors due to unsafe property access logic:

https://github.com/b-mueller/sabre/blob/b8339d89ad7c909bfb3793843038c8f8ce87f491/lib/compiler.js#L275-L283
https://github.com/b-mueller/sabre/blob/b8339d89ad7c909bfb3793843038c8f8ce87f491/lib/compiler.js#L292-L301

Improved compile test to verify that compile error is whitelisted. https://github.com/b-mueller/sabre/blob/b8339d89ad7c909bfb3793843038c8f8ce87f491/test/compile.test.js#L71-L78
Added test source code samples:

Sample containing intentional error to cause compile failure: https://github.com/b-mueller/sabre/blob/b8339d89ad7c909bfb3793843038c8f8ce87f491/contracts/error.sol
Sample with no contracts at all: https://github.com/b-mueller/sabre/blob/b8339d89ad7c909bfb3793843038c8f8ce87f491/contracts/no-contracts.sol

Other minor changes.

Regards, @blitz-1306.

The output I get for error.sol still looks kind of messed up:
$ $SABRE contracts/error.sol
[    ] Detecting solidity versionmismatched input '(' expecting {'from', 'calldata', 'constant', 'internal', 'private', 'public', Identifier}
extraneous input '}' expecting {<EOF>, 'pragma', 'import', 'contract', 'interface', 'library'}
✖ Loading solc vundefined
Error: Request failed with status code 404

It looks like this errors during version detection? In that case should we abort gracefully instead of attempting to download solc vundefined?

@b-mueller As we now have proper downstream error handling, we may easily throw upstream errors. Fixed via rethrowing ANTLR error: https://github.com/b-mueller/sabre/blob/0bd227e1418eec0729dd74030dcb796043624c25/lib/compiler.js#L158-L166

repo: b-mueller/sabre


text:
Add FreeCAD config

In the .FreeCAD directory a lot of cached stuff is also present, shown selected here, do these need to be mentioned too?

First of all, thanks for you contribution.

In the .FreeCAD directory a lot of cached stuff is also present, shown selected here, do these need to be mentioned too?

Yes, everything that is present in the home directory should be mentioned. Feel free to open another PR adding these files.


text:
184 custom events

Fixes #184

@mtabacman  aparently WebInteractionInterpreterTest >> configureScriptWith: interpreter has lost its coverage with the latest changes. Can you take a look?

@mtabacman  aparently WebInteractionInterpreterTest >> configureScriptWith: interpreter has lost its coverage with the latest changes. Can you take a look?

authors: gcotelli mtabacman

repo: ba-st/Willow

license: mit


text:
Remove obsolete or otherwise unnecessary code

Some stuff should be in Brightway, not here

OK, this can be changed. But eventually we can remove this, I think we can have a normal decorator for tests, bw2data will continue to have the bw2tests decorator but we shouldn't use it here as we don't want a dependency on bw2data.

Thank you Chris for the PR :pray:

authors: baali cmutel


text:
多小程序支持

Hi，
可否增加对多小程序的支持？

可以，我抽空补一下。
code2session小程序登录接口支持多个小程序
wechat.mp.code2Session('wx/login/code', 'wx/appid', 'wx/secret')；

wechat service封装的方法可传入appid和secret，支持多公众号多小程序情景
commit: d91d1f045628734202ef85f829463c34a1968ff9

good job！


text:
Improvements in handling of Babelfish specific GUC after commit a1a00b3bd00cf3f07d382ecb1219e1799b037676

Description
[Describe what this change achieves - Guidelines below (please delete the guidelines after writing the PR description)]

What is the change? This is best described in terms of “Currently, Babelfish does X. With this change it now does Y.” Think of “What did it used to do?” and “What does it do now?”

Why was the change made? What drove our desire to put effort into the change?
How was the code changed should only appear for large commits. This can serve as a rough roadmap to what’s contained in the commit. It should be very high level; if it’s directly referencing code it’s probably too detailed. It’s also critical that this section of a commit message does not try to replace proper code documentation (ie, block comments or README files). Generally, this section should only appear if the commit itself is large enough that it’s helpful to provide a roadmap to someone looking at the commit.
The last descriptive piece is the “title” for the commit: the very first line of the commit message, which should typically be less than 80 characters. A good title is critical, because it’s the only thing that shows up in places like the Github commit listing. No one’s got time to read through full commit messages when trying to find a single commit out of dozens.

Issues Resolved
[List any issues this PR will resolve]
Test Scenarios Covered

Use case based -

Boundary conditions -

Arbitrary inputs -

Negative test cases -

Minor version upgrade tests -

Major version upgrade tests -

Performance tests -

Tooling impact -

Client tests -

Check List

[ ] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is under the terms of the Apache 2.0 and PostgreSQL licenses, and grant any person obtaining a copy of the contribution permission to relicense all or a portion of my contribution to the PostgreSQL License solely to contribute all or a portion of my contribution to the PostgreSQL open source project.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Pull Request Test Coverage Report for Build 7485221237

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.002%) to 71.702%

Totals

Change from base Build 7472197412:
0.002%

Covered Lines:
39365

Relevant Lines:
54901

💛  - Coveralls


text:
🛑 SM Service is down

In d36048a, SM Service (http://smservice.de) was down:

HTTP code: 0
Response time: 0 ms

Resolved: SM Service is back up in 0a67594.

repo: bachmannschumacher/upptime


text:
🛑 Sushi Bar is down

In 475b6a6, Sushi Bar (https://api.thegraph.com/subgraphs/name/sushiswap/sushi-bar) was down:

HTTP code: 502
Response time: 124 ms

Resolved: Sushi Bar is back up in 2658322.

repo: backbonecabal/service-status


text:
[Feature Request] Storybook controls

Feature Suggestion

It would be valuable to add Storybook controls to components within the component library so developers/designers can explore the different variations available for use.
https://storybook.js.org/docs/react/essentials/controls

@leschaller1 Agreed! 👍
Perhaps also aggregate some of the very similar stories as well, using a control to select the styles, like all the header stories. Either way we should ofc start with enabling the controls addon as the first step.
Is this something you would like to contribe? Otherwise I think we could open this up as a good first issue

Awesome! Yeah I think that's a great idea re: aggregating similar stories. I could definitely help out and start by enabling the controls addon

I've made the changes locally - how do I go about getting write access to create a PR?

PR here :) https://github.com/backstage/backstage/pull/11344

Done!

repo: backstage/backstage


text:
🐛 Bug Report: Icon for New Relic Dashboard plugin broken on plugins page

📜 Description
Noticed on the plugins page, the icon for the New Relic Dashboard is broken.
https://backstage.io/plugins
👍 Expected behavior
Icon should display.
👎 Actual Behavior with Screenshots

👟 Reproduction steps
Click https://backstage.io/plugins, scroll down to New Relic Dashboard plugin, see broken image! :x
📃 Provide the context for the Bug.
It seems to link to an image on the New Relic site which isn't there anymore:
https://newrelic.com/themes/custom/curio/assets/mediakit/NR_logo_Horizontal_Rev.svg
🖥 Your Environment
Safari, latest backstage.io URL
👀 Have you spent some time to check if this bug has been raised before?

[X] I checked and didn't find similar issue

🏢 Have you read the Code of Conduct?

[X] I have read the Code of Conduct

Are you willing to submit PR?
No, I don't have time to work on this right now

This plugin was added via https://github.com/backstage/backstage/pull/8615; might you have any insight or a new icon, @mufaddal7 ? If so, thanks!

Create a pull request : https://github.com/backstage/backstage/pull/16345

Hello,
Has this bug been fixed? If not, I'll work on that.

Closing as the image isn't broken on the plugins page anymore; thx!


text:
Semaphore CI Plugin

Summary

Create a plugin to view Semaphore builds to start with and add other functionality for interfacing with Semaphore directly through Backstage.
Project website (if applicable)

https://semaphoreci.com/
Context

We've noticed quite a few CI/CD plugins exist in Backstage so this plugin will help Semaphore users take advantage of a Backstage integration with Semaphore.

Apologies, I can't seem to change assignees. Our team at Simply Business would like to create this open source plugin.
Would it be possible for someone with access to add @addersuk and @punitcse as assignees?

Add you, can't add the other ones as they haven't participated on the issue yet.


text:
permissions: more granular Permission types

Hey, I just made a Pull Request!
Introduces the BasicPermission and ResourcePermission types and update permission creation to create one or the other based on whether the resourceType field is present.
Differentiating between BasicPermission and ResourcePermission will allow us to be more granular about what the return type of a given call to PermissionClient#authorize should be - in particular, it will allow us to guarantee that clients won't get a CONDITIONAL reply unless they're expecting one.
:heavy_check_mark: Checklist

[x] A changeset describing the change and affected packages. (more info)
[ ] Added or updated documentation
[ ] Tests for new functionality and regression tests for bug fixes
[ ] Screenshots attached (for UI changes)
[x] All your commits have a Signed-off-by line in the message. (more info)

looooove this

Closing in favour of #9974 - this PR uses a branch in my fork as the source branch, which means I can't chain more PRs off it.

authors: mtlewis vinzscam


text:
certificate errors

Hi,
The API has started returning certificate errors:
curl -i -v 'https://covidapi.info/api/v1/country/FRA/timeseries/2020-01-01/2020-12-19' \
  -H 'Accept: application/json'

returns
*   Trying 134.209.147.6...
* TCP_NODELAY set
* Connected to covidapi.info (134.209.147.6) port 443 (#0)
* ALPN, offering http/1.1
* SSL certificate problem: Invalid certificate chain
* Closing connection 0
curl: (60) SSL certificate problem: Invalid certificate chain
More details here: https://curl.haxx.se/docs/sslcerts.html

Thanks for pointing it out @dagda1. Renewed the certificates

repo: backtrackbaba/covid-api


text:
Item pick up multiplier make blueprint broken

when turn it on then blueprint cant save and load machines.

Can confirm this. Even after disabling the cheat and using the „reset“ code, the issue persists. Save is f‘ed now.

Update: Loaded an older save I had backed up. Tried it again and it didn't f up immediately. Could it be linked to picking up/getting new blueprints while having it activated? I noticed that my history was up to 60-70 when it was corrupted, as opposed to the regular 30 you have. Might be worth to add a warning. Will update if it corrupts again, but for now I leave it disabled.

At what point(s) do you come into the blueprints first for us to keep an eye out?

Underground. Whenever you are at a Yiga spot or in a Abandoned Mine.

Please send save file and description of how to duplicate error/bug.

I use the Yuzu emulator, and I have encountered the same issue. I changed the picking multiplier to 50, and when I use the blueprint, it generates a history record and 50 blank slots. However, when I disable the cheat, remove all favorites in the blueprints, and rebuild a device, the blueprint returns to normal.

Guys, currently I didn't go underground and get blueprint yet but have used this cheat (item multipier) before, will this cheat break down my save?
Also is there a workaround to use item multiplier cheat and blueprint without this problem? I see that item multiplier cheats are removed in the latest commit.

Is there a way to fix the save file? I have the blank space in favourites too, next to another build that I cannot remove from favourites. - Also, thanks for the cheats they work amazing other than this little issue!

Only thing I know you can do is roll back a few saves and turn the cheat off. I always ensure the cheat is off while using ultrahand. Hopefully this is helpful. Cheers.

I'm unsure what you guys are talking about -- could you take screenshots?

No one's sent me any save file for this issue, with description/comments about how to replicate/show issue.

Only thing I know you can do is roll back a few saves and turn the cheat off. I always ensure the cheat is off while using ultrahand. Hopefully this is helpful. Cheers.

Ah shame, it was a while ago before I noticed it. Don't have a save before then - thanks anwyays!

I'm unsure what you guys are talking about -- could you take screenshots?
Here you go man, just a screenshot though - can I just upload my save here?

I'm unsure what you guys are talking about -- could you take screenshots?

@bad1dea
This is my saved file after picking up items 50 times. It was created using the Yuzu emulator. Please try using this saved file. Whether cheats are enabled or not, when loading this saved file, the blueprint will show 50 blank space. Disable cheating, then clear the favorites, and then recreate any object. The blueprint will be restored.
0000000000000000.zip
These are some screenshots.

Guys, currently I didn't go underground and get blueprint yet but have used this cheat (item multipier) before, will this cheat break down my save?
Also is there a workaround to use item multiplier cheat and blueprint without this problem? I see that item multiplier cheats are removed in the latest commit.

@wswslzp If you follow what I'm saying and cancel cheating, clear favorites, remake an object, the blueprint  will return to normal, and your save file will not be corrupted.

@wswslzp If you follow what I'm saying and cancel cheating, clear favorites, remake an object, the blueprint will return to normal, and your save file will not be corrupted.

Does removing the favourites work for you then? When I try it just does nothing

Thanks -- where do you pick up the.. blueprints?
(I don't play this game -- so it's hard for me to find things on my own)

Ah right - well they are collectibles that different NPCs give around the map, they aren't in just one place.
Also, it's amazing you were able to do all this without even playing the game - thanks again!

I changed the code, should work.. let me know.. (you must grab latest codes.. not pick and choose, as a lot of the code cave addresses are reused/redone)

@wswslzp If you follow what I'm saying and cancel cheating, clear favorites, remake an object, the blueprint will return to normal, and your save file will not be corrupted.

Does removing the favourites work for you then? When I try it just does nothing

Yes, disable cheating, remove all favourites , especially from historys, and then rebuild an object，and the blank spaces in the blueprint will disappear. This is work for me.


text:
Add static examples for [Node]

Ref #1961

Warnings

:warning:
This PR modified service code for node but not its test code. That's okay so long as it's refactoring existing code.

Messages

:book:
:sparkles: Thanks for your contribution to Shields, @paulmelnikow!

  Generated by :no_entry_sign: dangerJS

authors: paulmelnikow shields-ci

repo: badges/shields


text:
Refactor [SymfonyInsight] to new service model and rename

Based on some discussion/feedback here, this PR now contains several changes:

Renames the Sensiolabs badge/service content to SymfonyInsight to reflect the rebranding of that product/service
Refactors the original service to the new service model (using BaseXmlService)
Updates the color scheme of the original/initial badge type (SymfonyInsight Grade) to more closely mirror the colors used by the vendor/service provider
Adds a new badge type (violation counts/summary)
Adds both mocked and live tests (there were none before) for both the grade & violation badges using the new path symfony/i as well as a couple tests for the old path sensiolabs/i to check for backwards compatibility

Refs #1358

Messages

:book:
:sparkles: Thanks for your contribution to Shields, @calebcartwright!

  Generated by :no_entry_sign: dangerJS against 6bfb70b4bc78735ff704a0fad43614a37c029c96

Thanks for picking this up :) As far as testing strategy, Wheelmap is a similar case that @PyvesB recently did some work on in #2486. It's a combination of mocked tests and live tests, with live tests that run when a token is available. We created accounts with tokens for prod, CI, and staging.
I forgot that document existed; just opened a PR to bring a couple things up to date.

They are not, though we probably should add one. All the CI tokens are referenced in the CircleCI config. Probably we should also collect these secrets somewhere.

Nice I like that! I'm traveling most of the next couple days but will definitely add those changes

From: Paul Melnikowmailto:notifications@github.com
Sent: 12/21/2018 12:54 PM
To: badges/shieldsmailto:shields@noreply.github.com
Cc: Caleb Cartwrightmailto:caleb.cartwright@outlook.com; Mentionmailto:mention@noreply.github.com
Subject: Re: [badges/shields] [WIP] Migrate [Sensiolabs] to new service model (#2572)
@paulmelnikow commented on this pull request.

In services/sensiolabs/sensiolabs.service.jshttps://github.com/badges/shields/pull/2572#discussion_r243663918:

 status: Joi.string()

   .regex(statusRegex)

   .required(),

 grade: Joi.string()

   .regex(/platinum|gold|silver|bronze|none/)

   .allow('', null),

}),
}).required(),
+}).required()

+module.exports = class Sensiolabs extends BaseXmlService {

static render({ status, grade }) {
if (status !== 'finished') {

 return {

   message: 'pending',

   color: 'grey',

https://insight.symfony.com/what-we-analyse
[screen shot 2018-12-21 at 1 46 11 pm]https://user-images.githubusercontent.com/1487036/50358334-ecb9b380-0526-11e9-8a97-2922467b61a3.png
For the grade badge, I'd probably go with the flow of the design, and assign a color scheme that matches the words. (Their colors aren't bad except the platinum which is pretty green.)
If we can get the raw counts, I'd suggest we offer a second format, which is a bit more in shields-style, showing how many failed critical, major, minor, and info checks there are. In that case, we can use these colors:
[screen shot 2018-12-21 at 1 49 44 pm]https://user-images.githubusercontent.com/1487036/50358435-4b7f2d00-0527-11e9-8ddb-ce0a24ddad43.png
One or more failed critical is red, one or more failed major is orange, minor yellow, info yellowgreen or green, and all good in bright green.
Something like:

[https://camo.githubusercontent.com/f6c6039205e03993b0820c1575b449edf207b943/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636865636b732d31253230637269746963616c2d7265642e737667] https://camo.githubusercontent.com/f6c6039205e03993b0820c1575b449edf207b943/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636865636b732d31253230637269746963616c2d7265642e737667
[https://camo.githubusercontent.com/78e5a70451b7237365648bd01ad6ce0b095a0173/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636865636b732d312532306d616a6f722c25323031253230696e666f2d6f72616e67652e737667] https://camo.githubusercontent.com/78e5a70451b7237365648bd01ad6ce0b095a0173/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636865636b732d312532306d616a6f722c25323031253230696e666f2d6f72616e67652e737667
[https://camo.githubusercontent.com/d6a6dfa0c9bfde4d0c1947a2104bbb36c6631a2b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636865636b732d737563636573732d627269676874677265656e2e737667] https://camo.githubusercontent.com/d6a6dfa0c9bfde4d0c1947a2104bbb36c6631a2b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636865636b732d737563636573732d627269676874677265656e2e737667

It looks like this product is called SymfonyInsight; maybe we should update our badge name.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/badges/shields/pull/2572#discussion_r243663918, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AMcDOGzsuooQ_rgtzMJ8cHpT3bVIGaiLks5u7S58gaJpZM4Zddro.

From the review app:

Are these previews wrong? I feel like the LHS on the first one probably should be grade.
Colors look good!
These example links are both showing not authorized to access project:

https://shields-staging-pr-2572.herokuapp.com/symfony/i/grade/45afb680-d4e6-4e66-93ea-bcfa79eb8a87.svg
https://shields-staging-pr-2572.herokuapp.com/symfony/i/violations/45afb680-d4e6-4e66-93ea-bcfa79eb8a87.svg

Are these previews wrong?

Good catch, the violations example was using the wrong render function

I feel like the LHS on the first one probably should be grade.

Agreed. I seriously considered changing the label to grade or medal but ended up leaving checks as that was the label used in original. grade certainly seems like a more meaningful message to me so I'm all for changing it. Does the label need to be conditional based on the path? I.e. should symfony/i/violations/projectid use grade for the label but badges on the legacy path sensiolabs/i/projectId keep checks? (i'd vote for changing it across the board)

These example links are both showing not authorized to access project:

https://shields-staging-pr-2572.herokuapp.com/symfony/i/grade/45afb680-d4e6-4e66-93ea-bcfa79eb8a87.svg
https://shields-staging-pr-2572.herokuapp.com/symfony/i/violations/45afb680-d4e6-4e66-93ea-bcfa79eb8a87.svg

Do the staging apps have the SI API and User token secrets set?

(i'd vote for changing it across the board)

Agreed!

Do the staging apps have the SI API and User token secrets set?

They don't. Though I wouldn't want to expose the production token there. We could sign up for a separate account though, to get a token to use in staging + tests.

Do you think we should change the error message when a token is not configured?

Interesting idea. What exactly were you envisioning? Throwing some kind of error when the tokens are missing, or making the request anyway and adding a new/different error messages?
I could see that being helpful for us when looking at staging/prod, and also for any potential self-hosting Shields users that are trying to create badges from their private SymfonyInsight analyses. I definitely think it is worth making a distinction between "oops, you have no tokens" vs. "well you have a token but that token isn't authorized to access project foo"

Yea, I'm thinking throwing an error when there are no tokens, perhaps a new subclass ImproperlyConfigured.

I really like that idea. Are you good with updating this PR with a throw, and doing the subclass work in a separate stream?

Alright the service will now throw an error (I chose Inaccessible as it seemed the best fit with current error options) when the tokens are missing. This had an interesting impact on the tests. There's one test that validates the error is thrown when the tokens are missing, but all the other tests need to have auth present.
I've added a review comment on the relevant portions of the test file on that topic

authors: calebcartwright paulmelnikow shields-ci


text:
Fetch store data in parallel

Status quo: Store data is fetched one store after another.
This PR improve resilience of data fetching and makes fixing #15 obsolete

Pending merge of #13

Thanks for fixing my laziness :D

authors: badlogic iantsch

repo: badlogic/heissepreise


text:
chore(main): release base 0.0.18

:robot: I have created a release beep boop
0.0.18 (2024-10-19)
Bug Fixes

🐛 release to special branch (#133) (f9b2130)

This PR was generated with Release Please. See documentation.

:robot: Created releases:

base-v0.0.18
:sunflower:

repo: bagermen/rnd-images


text:
Getting exception on creating category.

Framework Version: 0.1.6

run 'php artisan migrate' then check.

Working fine

authors: jyoti-webkul rahulshukla-webkul

repo: bagisto/bagisto


text:
Product filter [Shop By]

Bug report
We want to display only those attributes who belong to at least one or more products
Issue Description

As shown in screenshot - this particular attribute does not belong to any products.

Important things to remember

I did not select attributes in combination.
Only one attribute is selected.

Expected result
Display only those attributes who belong to at least one or more products
This will directly affect user experience
Nowadays major e-commerce platform follows this pattern - You can check on Flipkart

Hi @AkashWeybee,
Please refer to this issue,
https://github.com/bagisto/bagisto/issues/3950

Hi @AkashWeybee,
Please refer to this issue,
#3950

Not working in demo.
kindly check demo

Hi @AkashWeybee,
The demo is not updated with the master. Please refer to the above issue.

Hi @AkashWeybee,
The demo is not updated with the master. Please refer to the above issue.

Hi @AkashWeybee,
The demo is not updated with the master. Please refer to the above issue.

we cannot replace our entire code with master branch,
can you tell me - what was the change?

Hi @AkashWeybee,
Please  refer to this PR i.e.,
https://github.com/bagisto/bagisto/pull/4017

A high level of dedication.
Thank you.

Hi @AkashWeybee,
Please refer to this PR i.e.,
#4017

A high level of dedication.
Thank you.

@ghermans @devansh-webkul
The issue is resolved now but - it is not optimized at all.
Because currently, we have 10k products and the one category has approximate 3.5k to 4.5k products. Each attribute may have 1k+ values. [Electrical products]
we are targeting for 80k to 1 lakh products. [Electrical]
Each category will have approximate 10k products. Each attribute may have 2k+ values.
And you've used brute force approach to scan all products in the respective category.
Think innovative sir.
We are working on our side, I think, Together we will solve this issue.

@AkashWeybee thanks for the feedback, i will reopen this issue so we can further investigate this.

Link: https://github.com/bagisto/bagisto/pull/4315

As the optimization thing is a different case that can be enhanced with time.

Hi @AkashWeybee,
One more thing you can remove this line from the view i.e. https://github.com/bagisto/bagisto/blob/b6a30fc015c7468792eafcf0181e844cb358a1a2/packages/Webkul/Velocity/src/Resources/views/shop/products/list/layered-navigation.blade.php#L10 and same for shop.
As this is the main source of duplicacy, I have removed it in the above mentioned PR.

I am closing this issue, as the main issue is fixed. If you want you can raise another PR for optimization.

Tested myself on 3000 plus products, page taking more time to load on category filter. So this needs to be optimized to some extent as well. Really apology for closing this.

authors: AkashWeybee devansh-webkul ghermans


text:
修正trace部分异常捕获

修正trace部分异常捕获

LGTM

repo: baidubce/app-builder


text:
auto update pkgver

这样就不用每次手动改版本号了。构建时会自动升级。

@wuyudi  大年三十还在撸代码 佩服佩服

@wuyudi 大年三十还在撸代码 佩服佩服

authors: baiy wuyudi

repo: baiy/Ctool


text:
Another Option to Consider

Amazing work, thank you!
Another fantastic option is FolderSync, definitely worth having on the list I think it's pretty great. Earlier this year they said that they would stop supporting the desktop version, but now it seems like they're back to fully continue finishing and supporting the desktop products for Windows iOS and Linux, in addition to  iPhone and Android.  Lots of good syncing capabilities and works across a bunch of different cloud storage providers as well as local file systems and local or custom FTP SMB etc
https://foldersync.io/

I get the impression that this is primarily targeted at Android and iPhone users. Seems fairly expensive. With a licence price of €25 per device it can stack up pretty quickly, and you need to renew these after two years if you want to get updates.
It makes sense if you have a mobile phone and want to have a way to back data up on a NAS or a cloud service. Perhaps not so much if you have five Linux installations that you want to keep in sync.
As far as I can tell they don't do any form of hosting; they just piggy-back on other file hosting services and/or local hosting. Functionality wise it looks very capable with many options.
I wasn't able to get the linux client running, but I presume that one may have better luck on Ubuntu which this is made for.

Thanks for the response, and just want to say again how awesome your work
is and how much I appreciate it.
I definitely agree that it is more targeted at mobile users, at one point
they didn't even have a desktop version, and for having a bunch of devices
and keeping the most updated version it is pretty expensive, but there may
be some use cases that fit well. Definitely goes in a different category as
like you mentioned it does not host its own files it's more of a tool for
managing multiple cloud accounts plus more control and capability for file
sync on mobile devices for people who already have cloud storage accounts
from Google Dropbox etc.
I found it useful and at one point it was the only thing I personally could
find to do what I needed in that specific instance, and after coming across
your GitHub page I thought others might find a use for it as well so I
wanted to share with you just in case :)
I'm an Android user and that's how I originally found it, at that time
there was no desktop version only the mobile app, and the reason I liked it
so much was its ability to sync between different cloud accounts, while
having decent configurability and such. I had a bunch of files on Google
drive, OneDrive, and Dropbox and I was trying to get things straightened
out and had a hard time finding a solution.
I first started using it I think early last year and, at least at that
time, there were no good options for syncing between different cloud
accounts (for free) (that I could find) other than some random Chrome
extensions or unknown websites that were all questionable security-wise and
that's why it stood out to me.
You can freely use the mobile app including syncing local device files, as
well as files already in the cloud from other providers, between different
cloud accounts. As far as I can tell only the desktop version is paid.
Actually I think I might have gotten the pro version of the Android app for
just a few dollars one time purchase, but if I remember correctly it wasn't
because the features I needed were behind a paywall I just wanted to show
appreciation to the devs, but I may be wrong.
I was able to get the desktop version running on Linux yesterday, I'm on an
arch derivative called EndeavorOS and I just extracted the .deb from their
download page and ran the executable and it seemed to work just fine. I
have not used the desktop version extensively yet, I'm also setting up
syncthing and still figuring out what I want my solution to be there.
It's not for everyone, and there are many other great solutions, but I do
really like the mobile app for managing mobile device files and managing
multiple cloud accounts from other providers that you're already paying for
but are isolated from each other. That's where it shines and, in my
opinion, the fact that they now have desktop app is nice (ignoring the
pricing), but since there are already apps from the normal cloud providers
for desktop I think it's more of a bonus feature for mobile focused users
to have another desktop tool if desired.
Anyways, I just wanted to share with you because your amazing research is
so thorough and extensive and I thought it was worth considering this
missing option, it might not fit the criteria for your list, and I may be
getting some things incorrect that I've shared with you because I'm not an
expert, but I just wanted to Let you know it exists even if it doesn't end
up on your list, and really just wanted to let you know I appreciate your
hard work and efforts to help other figure out their options.
Have a great day, and a wonderful new year!
Brandon
On Mon, Dec 30, 2024, 1:27 PM Stein Gunnar Bakkeby @.***>
wrote:

I get the impression that this is primarily targeted at Android and iPhone
users. Seems fairly expensive. With a licence price of €25 per device
it can stack up pretty quickly, and you need to renew these after two years
if you want to get updates.
It makes sense if you have a mobile phone and want to have a way to back
data up on a NAS or a cloud service. Perhaps not so much if you have five
Linux installations that you want to keep in sync.
As far as I can tell they don't do any form of hosting; they just
piggy-back on other file hosting services and/or local hosting.
Functionality wise it looks very capable with many options.
I wasn't able to get the linux client running, but I presume that one may
have better luck on Ubuntu which this is made for.
—
Reply to this email directly, view it on GitHub
https://github.com/bakkeby/choosing-a-sync-service-under-linux/issues/2#issuecomment-2565933292,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AN3JACSSNOKJVOBXMZOGPH32IG3C7AVCNFSM6AAAAABUKKZMW6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKNRVHEZTGMRZGI
.
You are receiving this because you authored the thread.Message ID:
@.***
com>

I very much appreciate it Brandon. Always interesting to learn about new solutions that I may have missed.
I suppose a lot has changed as well since I looked into this five years ago :) I had a similar struggle trying to find a note taking application that fits my needs. Mind map applications are also fairly limited.
I added FolderSync to the list - in the context of what I was originally looking for. The list is not ordered in a particular way.
I'll just mark this issue as closed, but feel free to share if you have anything more to add.


text:
Obtain USB Blaster Programmer for FPGA

Hours for ECE Stores (E2-3350) are normally 11:00-11:30am and 1:00-1:30pm Monday to Friday.

No longer needed with the new FPGA.

authors: aadavids kurtmh

repo: bakkerthehacker/serqet


text:
Add 108 token to eth mainnet balancer whitelist

@zekraken-bot Just one more addition, we would also like to add the 108 mainnet token address to the balancer ethereum token whitelist as well.
The 108 project

@zekraken-bot contract verified below
https://etherscan.io/address/0x2D7fA140eC620Db445CdE5A25C44Ae6FbeE96CF9#code

repo: balancer/tokenlists


text:
support Transactions in mongo db

Waterline version:
Node version:9.11
NPM version:5
Operating system:Ubuntu 16.04

How can i support mongo db 4 transaction in sails waterline. i did not find any documentation for this.

@Sandeeprao69 Are there specific methods of Mongo 4 that you are looking for, or is it not working all together?

Hi @streleck I am looking for mongo db ACID Transaction which is introduced in version4.
https://docs.mongodb.com/manual/core/transactions/

@Sandeeprao69 As in writing to multiple tables in a single transaction?

@streleck yup. That's what I want to achieve. I am sails 1.0

I can review a PR that adds this to sails-mongo, as long as it uses the same approach that we use in the relational adapters

cc @luislobo

@mikermcneil @sandeeprao691 To support transactions, sails-mongo needs to be upgraded to at least 3.1.0 (https://docs.mongodb.com/manual/core/transactions/#transactions-and-mongodb-drivers). It would incur some changes internally (as sails-mongo right now uses  "mongodb": "2.2.25")
It will include some probably incompatibility configuration changes (that could be handled by printing messages about it, auto migrating the configuration for the user).
During the update, https://github.com/mongodb/node-mongodb-native/blob/master/CHANGES_3.0.0.md should be checked to make sure that everything still works. and that we can start supporting sessions, transactions, etc.
I could start a new version supporting all of this. @mikermcneil as usual I might need your help/support on some topics.

@luislobo You bet- feel free to loop me in early on to talk through it.  Would be good for me to get caught up anyway

@luislobo @mikermcneil Any idea when this might be released?

@luislobo @mikermcneil  Guys, can you please tell me when this might be released. If not soon can you guys please suggest a way to achieve transactions in mongo db using waterline.

authors: Sandeeprao69 luislobo mikermcneil nagarjun sandeeprao691 streleck

repo: balderdashy/waterline


text:
Monospaced font

Is there way to turn on monospaced font everywhere?

Closing as this was implemented for v0.24, re-open if there's anything else

authors: baldurk bkaradzic

repo: baldurk/renderdoc


text:
billing: Add removeBillingInfo method for removing billing info

billing: Add removeBillingInfo method for removing billing info
Connects-to: https://github.com/balena-io/balena-ui/pull/6042
Change-type: minor

Contributor checklist

[ ] Includes tests
[ ] Includes typings
[ ] Includes updated documentation
[ ] Includes updated build output

LGTM

repo: balena-io/balena-sdk


text:
BBB: leviathan: Waiting for supervisor to be reachable before local push

leviathan-v2-template2-client-1  | [2022-05-28T02:56:08.075Z][74103ce-os]         not ok 1 - Condition async () => {       console.log('Waiting for supervisor to be reachable before local push...')       return (         (await rp({           method: 'GET',           uri: `[http://${ip}:48484/ping`](http://%24%7Bip%7D:48484/ping%60),           timeout: 5000         })) === 'OK'       );     } timed out
leviathan-v2-template2-client-1  | [2022-05-28T02:56:08.075Z][74103ce-os]           ---
leviathan-v2-template2-client-1  | [2022-05-28T02:56:08.075Z][74103ce-os]           stack: |
leviathan-v2-template2-client-1  | [2022-05-28T02:56:08.076Z][74103ce-os]             		} timed out
leviathan-v2-template2-client-1  | [2022-05-28T02:56:08.076Z][74103ce-os]                 _waitUntil (lib/common/utils.js:97:11)
leviathan-v2-template2-client-1  |                 _waitUntil (lib/common/utils.js:112:11)
leviathan-v2-template2-client-1  |                 Object.waitUntil (lib/common/utils.js:115:3)
leviathan-v2-template2-client-1  |                 Worker.pushContainerToDUT (lib/common/worker.js:477:3)
leviathan-v2-template2-client-1  |                 Proxy.run (/data/suite/tests/variables/index.js:23:3)
leviathan-v2-template2-client-1  |           test: Container exposed variables test
leviathan-v2-template2-client-1  |           ...

Relates to https://github.com/balena-os/balena-raspberrypi/issues/853

repo: balena-os/balena-beaglebone


text:
Test Flowzone PR 488

Auto-generated by https://github.com/product-os/flowzone/pull/488
Will be closed automatically once the PR is merged.

Auto-closing pull request

repo: balena-os/fatrw


text:
Update apache-jena-libs to 4.8.0

About this PR
📦 Updates org.apache.jena:apache-jena-libs from 3.17.0 to 4.8.0 ⚠
Usage
✅ Please merge!
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

⚙ Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.apache.jena", artifactId = "apache-jena-libs" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "30 days" },
  dependency = { groupId = "org.apache.jena", artifactId = "apache-jena-libs" }
}]

labels: library-update, early-semver-major, semver-spec-major, commit-count:1

Superseded by #150.

repo: balhoff/arachne


text:
Research and Design Email Connector

Description:
Research about existing email connectors and develop a design for developing a new Email Connector.

Please refer to Design Doc[1]

https://docs.google.com/document/d/1XXlxp8p7QPto1pdW2Gr9NZ5ofYBV4lCifujFzEcZOOE/edit?usp=sharing

authors: Maninda daneshk

repo: ballerina-platform/ballerina-lang


text:
FunctionDefinitionNode.returnTypeDesc() is Empty when there's a return

Description:
FunctionDefinitionNode.returnTypeDesc() is Empty when there's a return type.
Steps to reproduce:
This code works fine,
import ballerina/io;

public function main(string... args) {
    io:println(getName());
}

function getName() returns string {
    return "rasika";
}

But checkout this return type with braces(which is a valid program)
import ballerina/io;

public function main(string... args) {
    io:println(getName());
}

function getName() returns (string) {
    return "rasika";
}

Affected Versions:
1.3.0-SNAPSHOT

Fixed in preview1

authors: SupunS rasika


text:
Exception when calling node.lineRange()

Description:
I'm currently implementing the new formatter for ballerina. For that I'm using a treeModifier visitor. To format child nodes inside a block node(Function block), I want to get the parent indentation. For that I'm using these methods.
    // to get the parent node
    private <T extends Node> Node getParent(T node) {
        if (node.kind() == SyntaxKind.FUNCTION_DEFINITION) {
            if (node.parent().kind() == SyntaxKind.FUNCTION_BODY_BLOCK) {
                return node.parent().parent();
            } else {
                return node.parent();
            }
        }
        return node;
    }

    // to get the node position
    private DiagnosticPos getPosition(Node node) {
        if (node == null) {
            return null;
        }
        LineRange lineRange = node.lineRange();
        LinePosition startPos = lineRange.startLine();
        LinePosition endPos = lineRange.endLine();
        return new DiagnosticPos(null, startPos.line() + 1, endPos.line() + 1,
                startPos.offset() + 1, endPos.offset() + 1);
    }

When it calls the node.lineRange(); method to get the node position, it gives me a "SyntaxTree instance cannot be null" exception.
Steps to reproduce:
Code I've tested
    import ballerina  /  log   ;
            service          hello       on      new         http   :   Listener    (   9090    )    {
     resource   function    sayHello    (   http    :   Caller   caller ,  http : Request  req )  {
         var  result  =  caller    ->    respond (   "Hello, World!"    )     ;
  if    (   result   is   error   )   {
              log  :  printError   (   "Error sending response"   ,  result    )    ;
          }
       }
    }

Suggested Labels (optional):
Priority/Blocker
Suggested Assignees (optional):
@sameerajayasoma @SupunS

This issue is fixed with the following PR
https://github.com/ballerina-platform/ballerina-lang/pull/23975

authors: gigara sameerajayasoma


text:
Parser throws exception for the incomplete function definition

Description:
Consider the following source snippet,
function testFunction()
Parser throws the 'Unsupported SyntaxKind: NONE' exception when try to parse.

@rdulmina is woking on this

authors: manuranga nadeeshaan


text:
NullPointerException in SymbolResolver

nBallerina nightly failing with  following error
java.lang.NullPointerException
    at org.wso2.ballerinalang.compiler.semantics.analyzer.SymbolResolver.populateConfigurableVars(SymbolResolver.java:2550)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.SymbolResolver.getConfigVarSymbolsIncludingImportedModules(SymbolResolver.java:2542)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.analyzeModuleConfigurableAmbiguity(SemanticAnalyzer.java:1082)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.visit(SemanticAnalyzer.java:330)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.visit(SemanticAnalyzer.java:235)
    at org.wso2.ballerinalang.compiler.tree.BLangPackage.accept(BLangPackage.java:172)
    at org.wso2.ballerinalang.compiler.tree.SimpleBLangNodeAnalyzer.visitNode(SimpleBLangNodeAnalyzer.java:201)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.analyze(SemanticAnalyzer.java:282)
    at io.ballerina.projects.internal.CompilerPhaseRunner.typeCheck(CompilerPhaseRunner.java:188)
    at io.ballerina.projects.internal.CompilerPhaseRunner.performTypeCheckPhases(CompilerPhaseRunner.java:114)
    at io.ballerina.projects.ModuleContext.compileInternal(ModuleContext.java:438)
    at io.ballerina.projects.ModuleCompilationState$1.compile(ModuleCompilationState.java:45)
    at io.ballerina.projects.ModuleContext.compile(ModuleContext.java:387)
    at io.ballerina.projects.PackageCompilation.compileModulesInternal(PackageCompilation.java:213)
    at io.ballerina.projects.PackageCompilation.compileModules(PackageCompilation.java:198)
    at io.ballerina.projects.PackageCompilation.compile(PackageCompilation.java:114)
    at io.ballerina.projects.PackageCompilation.from(PackageCompilation.java:109)
    at io.ballerina.projects.PackageContext.getPackageCompilation(PackageContext.java:233)
    at io.ballerina.projects.Package.getCompilation(Package.java:147)
    at io.ballerina.projects.Package.runCodeGenAndModifyPlugins(Package.java:254)
    at io.ballerina.cli.task.CompileTask.execute(CompileTask.java:95)
    at io.ballerina.cli.TaskExecutor.executeTasks(TaskExecutor.java:40)
    at io.ballerina.cli.cmd.BuildCommand.execute(BuildCommand.java:248)
    at java.base/java.util.Optional.ifPresent(Optional.java:183)
    at io.ballerina.cli.launcher.Main.main(Main.java:51)

https://github.com/ballerina-platform/nballerina/runs/6203970625?check_suite_focus=true

Relates to https://github.com/ballerina-platform/ballerina-lang/issues/35385

Closing this as the NPE is handled and diagnostics are added for unresolved dependencies. The original issue of distribution not having related dependencies in-house will be handled through https://github.com/ballerina-platform/ballerina-lang/issues/36047

authors: manuranga pcnfernando


text:
[Bug]: Parser goes fail safe for invalid code

Description
public function main() {
  .post;
}

stacktrace  (click to expand)

Exception in thread "main" java.lang.AssertionError: fail safe reached
	at io.ballerina.compiler.internal.parser.AbstractParserErrorHandler.recover(AbstractParserErrorHandler.java:126)
	at io.ballerina.compiler.internal.parser.AbstractParser.recover(AbstractParser.java:111)
	at io.ballerina.compiler.internal.parser.BallerinaParser.recover(BallerinaParser.java:19409)
	at io.ballerina.compiler.internal.parser.BallerinaParser.parseSemicolon(BallerinaParser.java:3286)
	at io.ballerina.compiler.internal.parser.BallerinaParser.parseActionStatement(BallerinaParser.java:8904)
	at io.ballerina.compiler.internal.parser.BallerinaParser.getExpressionAsStatement(BallerinaParser.java:8812)
	at io.ballerina.compiler.internal.parser.BallerinaParser.parseExpressionStatement(BallerinaParser.java:8720)
	at io.ballerina.compiler.internal.parser.BallerinaParser.parseStatement(BallerinaParser.java:4458)
	at io.ballerina.compiler.internal.parser.BallerinaParser.parseStatement(BallerinaParser.java:4366)
	at io.ballerina.compiler.internal.parser.BallerinaParser.parseStatement(BallerinaParser.java:4328)
	at io.ballerina.compiler.internal.parser.BallerinaParser.parseStatement(BallerinaParser.java:4325)
	at io.ballerina.compiler.internal.parser.BallerinaParser.parseFunctionBodyBlock(BallerinaParser.java:3003)

This is a blocker for #40381. A test case is failing due to this.

Also, we have the following diff for client_resource_access_action_source_06.bal

Also, we have the following diff for client_resource_access_action_source_06.bal
Reason seem to be error handler sees (a->function).post(arg1, arg2); to be a valid grammar while at parser we return after a->function as it is an action.


text:
Enable Request/Response native function test cases

Purpose

$Title

Check List

[x] Read the Contributing Guide
[ ] Required Balo version update
[ ] Updated Change Log
[ ] Checked Tooling Support (#)
[ ] Added necessary tests

[x] Unit Tests
[ ] Spec Conformance Tests
[ ] Integration Tests
[ ] Ballerina By Example Tests

[ ] Increased Test Coverage
[ ] Added necessary documentation

[ ] API documentation
[ ] Module documentation in Module.md files
[ ] Ballerina By Examples

Codecov Report

Merging #17287 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master   #17287   +/-   ##
=======================================
  Coverage   68.85%   68.85%
=======================================
  Files           5        5
  Lines         122      122
  Branches       21       21
=======================================
  Hits           84       84
  Misses         38       38

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 f566a88...b9abeee. Read the comment docs.


text:
[Language Server] Add "create undefined function" code action support to language server

Purpose
Add "create undefined function" code action support for basic scenarios.
Fixes #27424
Approach
Works for

Simple function calls:

   addTwoIntegers(a, c, true);

Function calls in var declarations:

   int d = addTwoIntegers2(a, b);

Function calls with parameters of different modules:

    module1:Student student = createStudent(name, age);
    addStudent(student);
    module1:Student converted = convertStudent(student);

Doesn't work for assignment statements, let expressions, assignments within record types, etc yet.
Samples

addTwoIntegers(a, c, true); will result:

function addTwoIntegers(int a, float b, boolean c) {

}

module1:Student student = createStudent(name, age); will result in a function like:

function createStudent(string a, any b) returns module1:Student {

    return {};
}

int d = addTwoIntegers2(a, b); will result in:

function addTwoIntegers2(int a, int b) returns int {

    return 0;
}

and etc.
Remarks

List any other known issues, related PRs, TODO items, or any other notes related to the PR.

Check List

[x] Read the Contributing Guide
[ ] Updated Change Log
[ ] Checked Tooling Support (#)
[x] Added necessary tests

[x] Unit Tests
[ ] Spec Conformance Tests
[ ] Integration Tests
[ ] Ballerina By Example Tests

[x] Increased Test Coverage
[ ] Added necessary documentation

[ ] API documentation
[ ] Module documentation in Module.md files
[ ] Ballerina By Examples

@nadeeshaan It doesn't honor module aliases as of now. Working on it.

@nadeeshaan I have added support for module aliases. And this works with pre-declared lang libs. I have added tests for both scenarios.
Overall, this implementation works for simple name references, assignment statements and variable declarations. Complex scenarios like let expressions, function calls when creating records, methods inside classes/services are not supported yet.
Furthermore, in the following scenario, the typeSymbol.signature() returns { string recField; anydata...; } while the expected value is {| string recField; anydata...; |}. Need to address that in a separate issue.
record {
      string recField = "";
    } testRec = {};
    record {
      int recField = 1;
    } testRec2 = thisIsANewFunction(testRec);


text:
Getting NumberFormatException when specifying maxAge as decimal

Description:
When the maxAge is set to a decimal value, the resource invocation fails with NumberFormatException.
Steps to reproduce:
This can be reproduced with the following sample:
import ballerina/http;

type Album readonly & record {|
    string title;
    string artist;
|};

table<Album> key(title) albums = table [
    {title: "Blue Train", artist: "John Coltrane"},
    {title: "Jeru", artist: "Gerry Mulligan"}
];

service / on new http:Listener(9090) {

    resource function get albums/[string title]() returns @http:Cache {maxAge: 23.45} Album|http:NotFound {
        return albums[title] ?: http:NOT_FOUND;
    }
}

Make a request to the resource with cURL:
$ curl -v http://localhost:9090/albums/Jeru

Affected Versions:
Ballerina SwanLake Update 8 and higher

This error is coming from this parser block: https://github.com/ballerina-platform/module-ballerina-http/blob/883eb410c1536141f36e67b4f0c4d0cca90cd6ef/native/src/main/java/io/ballerina/stdlib/http/api/client/caching/ResponseCacheControlObj.java#L206 where the value is "23.45"

repo: ballerina-platform/ballerina-library


text:
Native error and TypeCaseError has two different text formats

Is there any reason for "error" to be all simple and "TypeCaseError" has a different format. The question arose because both are supported by Ballerina as native and shouldn't keywords all be in the same template?

@erandidesilva. This issue was discussed multiple times, and the conclusion was to go with the current design.
The rule we followed:
the 'error' is a built-in type hence it is worded as other types. (int, xml, json etc). TypeCaseError is a struct and it has multiple words. As a convention, we use CamelCase to represent such structs.

authors: erandidesilva hasithaa

repo: ballerinalang/ballerina


text:
adds a coloourful log output

Hi,
just a small eye candy that I added in my fork as I am trying to add support for Netio devices:
http://www.netio-products.com/en/product/netio4-all/ (in a separated PR).
Br.

:+1:

authors: balloob eagleamon

repo: balloob/home-assistant


text:
Nest can't resolve dependencies of the ExplorerService (?, Reflector).

Getting this error when importing like so:
import { SlackModule } from 'nestjs-slack-bolt';
@Module({
  imports: [SlackModule],
  providers: [ReportingService],
  exports: [ReportingService],
})

Error
Nest can't resolve dependencies of the ExplorerService (?, Reflector). Please make sure that the argument ModulesContainer at index [0] is available in the SlackModule context.

Potential solutions:
- Is SlackModule a valid NestJS module?
- If ModulesContainer is a provider, is it part of the current SlackModule?
- If ModulesContainer is exported from a separate @Module, is that module imported within SlackModule?
  @Module({
    imports: [ /* the Module containing ModulesContainer */ ]
  })

Error: Nest can't resolve dependencies of the ExplorerService (?, Reflector). Please make sure that the argument ModulesContainer at index [0] is available in the SlackModule context.

Potential solutions:
- Is SlackModule a valid NestJS module?
- If ModulesContainer is a provider, is it part of the current SlackModule?
- If ModulesContainer is exported from a separate @Module, is that module imported within SlackModule?
  @Module({
    imports: [ /* the Module containing ModulesContainer */ ]
  })

same issue here

Hi,
I'm going to look into this problem

Hello, @simplenotezy  which version of NestJs are you using?

Hello, @simplenotezy  which version of NestJs are you using?

Hey! Version 9

The last version 0.2.0 is only compatible with Nestjs10.
You should use an old version

authors: bamada choigawoon simplenotezy

repo: bamada/nest-slack-bolt


text:
missing "using ApplicationRegistries" in generated cs files.

There is not 'using ApplicationRegistries' in generated cs files.

fixed in v1.0.2


text:
导航栏不见了，一片空白，底部布局混乱

当present模态弹出 TZImagePickerController 的时候，导航栏不见了，而且TZImagePickerController 底部布局混乱，请问导航栏怎么设置出现呢？

发个最小可复现demo出来，我来看一下，或者把我的demo复现上

可以参考下这些问题：
Q：设置导航栏颜色无效？导航栏颜色总是白色？
A：是否有集成WRNavigationBar？如有，参考其readme调一下它的wr_setBlackList，把TZImagePickerController相关的控制器放到黑名单里，使得不受WRNavigationBar的影响。如果没有集成，可在issues列表里搜一下看看类似的issue参考下，如实在没头绪，可加群提供个能复现该问题的demo，0~2天给你解决。最近发现WRNavigationBar的黑名单会有不生效的情况，临时解决方案大家可参考：https://github.com/wangrui460/WRNavigationBar/issues/145
Q：导航栏没了？
A：是否有集成GKNavigationBarViewController？需要升级到2.0.4及以上版本，详见issue：https://github.com/QuintGao/GKNavigationBarViewController/issues/7。

authors: MichaelSSY banchichen

repo: banchichen/TZImagePickerController


text:
[E2E] Remove isE2E flag

Playwright v1.41 allows to set custom styles when taking screenshots, so the isE2E flag can be removed - to reduce the influence of the E2E tests on the implementation.

[ ] Change datepicker testing implementation so that datePicker doesn't need to use the e2e debug flag

By changing the mocked data and the simulator testcases

Check current date and receive from testcase the duration from today that we want to test (e.g. duration="30 days")
Select the date ranges from Date.now() - duration to Date.now()
Mocked data creates the pricing data and simulator data using the correct timestamps

By using style

[ ] Update playwright to at least version 1.41 to support screenshots with custom styles
[ ] Use style when taking a screenshot so that it is not necessary to set the font in the main wallet button to mono
[ ] Remove isE2E flag

Related #1032 and #1004

repo: bancorprotocol/carbon-app


text:
withdraw protected position - missing fully protected value

fully protected value in the withdraw popup is missing and shows 0.

@ashachaf is this still a problem? Just failed to replicate on staging.

cannot reproduce.

authors: Velua ashachaf

repo: bancorprotocol/webapp


text:
Rendering editor insider editor

We should create a new package which will allow us to embed an editor inside of an editor.

@kepta what is the use case of such a feature?

I’m thinking of implementing something like this  https://www.slatejs.org/examples/editable-voids.


text:
集成 PaginationInnerInterceptor后报错

当前使用版本
3.5.6
当前环境信息
例如: Java8 + Mysql5.7
描述bug现象
当加入PaginationInnerInterceptor拦截器后，应用启动报错。当去掉这个拦截器后，应用正常启动。
提供问题复现步骤
添加拦截器的代码如下：
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
configuration.addInterceptor(interceptor);
提供完整堆栈日志(可选)
ERROR SpringApplication Application run failed
java.lang.InstantiationError: net.sf.jsqlparser.statement.select.SelectItem
at com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor.(PaginationInnerInterceptor.java:69)
at cn.cncc.cjdp5.AfterIocInitialConfig.run(AfterIocInitialConfig.java:31)
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:782)
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:766)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:314)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1317)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306)
at cn.IaicsApplication.main(IaicsApplication.java:20)
五月 28, 2024 8:57:01 下午 org.apache.coyote.AbstractProtocol pause
提供问题复现工程(可选)
请尽量提供复现工程,减少大家排错的时间.

检查你jsqlparser依赖冲突

检查下你的PageHelper代入的jsqlparder的版本是否低于4.9，建议exclude掉，直接用mybatis-plus3.5.6引入的4.9版本，我这样修改完后启动正常

但是jsqlparser包没有其他包引进去了，只有在mybatis-plus3.5.7引入了4.9版本，也会编译报错。在基础包编译，还没有加其他插件。

authors: CrazyBuug a386572631 chaobingliu miemieYaho

repo: baomidou/mybatis-plus


text:
Enable -d option on assign

URLs and clients should be able to be unassigned from lists. Currently the only way to remove a URL from a list is to delete the URL which removes it from all lists. Clients are attached to the list until either the client or the list is deleted.

Closed as a part of #12. You can just assign it to the Default list.

Never mind, this is a little different. You can have a URL in multiple lists so this does need to be a thing.

authors: BrandonDusseau JohnMaguire

repo: barracudanetworks/wbd


text:
Include back & forward buttons support

Implies that you should be able to bookmark to a certain section of the presentation by #anchor as well!

Closing as this is a duplicate of issue #9.
When anchors support will be added it will make back/forward buttons to work.

authors: bartaz kenotron


text:
Cleanup and generalization

Code simplification; ability to call parser on a string.

See the comment for #4, thanks.

authors: Vagabond eriksoe


text:
Incorporate "What's This?" Content Spreadsheet

Share language:
"Woah! Check out this microscopic creature I found on Life Under The Ice: [link]"
Spreadsheet:
https://docs.google.com/spreadsheets/d/1yr5rf4fJsf9ZW-7HyZTHFIctIRy7AFQdCShkN3mU77o/edit?usp=sharing

Share language:
"Woah! Check out this microscopic creature I found on Life Under The Ice: [link]"

repo: basilleaf/luti