Fixed MA-2375, downloaded videos not appearing in my videos

Addresses: https://openedx.atlassian.net/browse/MA-2375
Cleaned up some warnings as well
@BenjiLee @miankhalid Can you review?

File ...storage/Storage.java was modified. more

Misses +2
Partials 0
Hits -3

@@             master       #707   diff @@
==========================================
  Files           477        479     +2
  Lines         20909      20936    +27
  Methods           0          0
  Messages          0          0
  Branches       2942       2949     +7
==========================================
+ Hits           6232       6236     +4
- Misses        14677      14700    +23
  Partials          0          0

Review [#707][cc-pull] on Codecov

Powered by Codecov. Last updated by [dfd8828...3ad0865][cc-compare]
[cc-base-branch]: https://codecov.io/gh/edx/edx-app-android/branch/master?src=pr
[cc-compare]: https://codecov.io/gh/edx/edx-app-android/compare/dfd8828f8605e787e997356224076a3894aca959...3ad08650d1cfdc1bf2e2088235acd5ab5634e038
[cc-pull]: https://codecov.io/gh/edx/edx-app-android/pull/707?src=pr

Here's a case in which this solution fails (because it requires a network call initially):

Login using an existing user which has enrolled in some courses already.
Download a video.
After the video is downloaded, turn off internet.
Go to My Videos screen.

The screen will say "You haven't downloaded any videos.".
Ideally we should cache the enrolled courses response on My Courses screen, cuz thats the screen that would always be opened and the call will made each time we open the app.

@1zaman Sounds like you might have some input on this as well.

@miankhalid, @BenjiLee Can you re-review?
I addressed the offline use case that @miankhalid mentioned, and well as removing the generic try block.

Looks okay on the surface, I'm getting an exception every time I load the My Videos screen. Unsure if this is a regression or not but take a look.

05-17 01:45:20.514 4446-4446/org.edx.mobile E/org.edx.mobile.view.MyAllVideosFragment$2: java.lang.InterruptedException
at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:972)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1278)
at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:203)
at roboguice.util.AndroidCallableWrapper.beforeCall(AndroidCallableWrapper.java:77)
at roboguice.util.AndroidCallableWrapper.run(AndroidCallableWrapper.java:39)
at roboguice.util.AndroidCallable.run(AndroidCallable.java:20)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
at dalvik.system.VMStack.getThreadStackTrace(Native Method)
at java.lang.Thread.getStackTrace(Thread.java:580)
at roboguice.util.AndroidCallable.(AndroidCallable.java:12)
at roboguice.util.SafeAsyncTask$SafeAsyncTaskAndroidCallable.(SafeAsyncTask.java:160)
at roboguice.util.SafeAsyncTask.newTask(SafeAsyncTask.java:156)
at roboguice.util.SafeAsyncTask.future(SafeAsyncTask.java:66)
at roboguice.util.SafeAsyncTask.execute(SafeAsyncTask.java:94)
at roboguice.util.SafeAsyncTask.execute(SafeAsyncTask.java:90)
at org.edx.mobile.view.MyAllVideosFragment.addMyAllVideosData(MyAllVideosFragment.java:110)
at org.edx.mobile.view.MyAllVideosFragment.onCreateView(MyAllVideosFragment.java:57)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:742)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617)
at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:570)
at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1177)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1025)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1545)
at android.view.View.measure(View.java:18788)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)
at android.view.View.measure(View.java:18788)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:18788)
at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:1075)
at android.view.View.measure(View.java:18788)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)
at android.view.View.measure(View.java:18788)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at android.support.v7.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:391)
at android.view.View.measure(View.java:18788)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:18788)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
at android

Was this just in the log or did you see it in the app? I didn’t see it when
I tested. But I’ll look into it.
On Wed, May 18, 2016 at 10:45 AM, Christopher Lee<EMAIL_ADDRESS>wrote:

Looks okay on the surface, I'm getting an exception every time I load the
My Videos screen. Unsure if this is a regression or not but take a look.
05-17 01:45:20.514 4446-4446/org.edx.mobile
E/org.edx.mobile.view.MyAllVideosFragment$2: java.lang.InterruptedException
at
java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:972)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1278)
at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:203)
at
roboguice.util.AndroidCallableWrapper.beforeCall(AndroidCallableWrapper.java:77)
at
roboguice.util.AndroidCallableWrapper.run(AndroidCallableWrapper.java:39)
at roboguice.util.AndroidCallable.run(AndroidCallable.java:20)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
at dalvik.system.VMStack.getThreadStackTrace(Native Method)
at java.lang.Thread.getStackTrace(Thread.java:580)
at roboguice.util.AndroidCallable.(AndroidCallable.java:12)
at
roboguice.util.SafeAsyncTask$SafeAsyncTaskAndroidCallable.(SafeAsyncTask.java:160)
at roboguice.util.SafeAsyncTask.newTask(SafeAsyncTask.java:156)
at roboguice.util.SafeAsyncTask.future(SafeAsyncTask.java:66)
at roboguice.util.SafeAsyncTask.execute(SafeAsyncTask.java:94)
at roboguice.util.SafeAsyncTask.execute(SafeAsyncTask.java:90)
at
org.edx.mobile.view.MyAllVideosFragment.addMyAllVideosData(MyAllVideosFragment.java:110)
at
org.edx.mobile.view.MyAllVideosFragment.onCreateView(MyAllVideosFragment.java:57)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974)
at
android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
at
android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:742)
at
android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617)
at
android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:570)
at
android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1177)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1025)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1545)
at android.view.View.measure(View.java:18788)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at
android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)
at android.view.View.measure(View.java:18788)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:18788)
at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:1075)
at android.view.View.measure(View.java:18788)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at
android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)
at android.view.View.measure(View.java:18788)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at
android.support.v7.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:391)
at android.view.View.measure(View.java:18788)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:18788)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at
android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
at android
—
You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub
https://github.com/edx/edx-app-android/pull/707#issuecomment-220049025

--
Regards,
Marc DiNino
Android Engineer
EDX

I saw it in the log

@BenjiLee Another pass please?

Still crashing on expired oauth token

How do you get into that use case?
On Mon, May 23, 2016 at 10:50 AM, Christopher Lee<EMAIL_ADDRESS>wrote:

Still crashing on expired oauth token
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/edx/edx-app-android/pull/707#issuecomment-221002600

--
Regards,
Marc DiNino
Android Engineer
EDX

Done with pass. Same comment as first pass, we want to be using the already implemented UserAPI.getEnrolledCourses task instead of falling back to the deprecated API.

@BenjiLee Another (hopefully final) pass?

Just so I'm following correctly, we are depending on the Singleton property of the UserAPI for the enrolled courses cache? Does that mean when the app is killed, the user will have to fetch the enrolled courses again?

Yes, the single dependency is that the user is connected to the Internet on
that the courses screen. This was suggested by Khalid. If they aren’t
connected then, then the downloaded courses will not appear. AFAIK, we
don’t write the caches to disk at all.
I’ll fix the crash in that use case.
On Mon, May 23, 2016 at 5:31 PM, Christopher Lee<EMAIL_ADDRESS>wrote:

Just so I'm following correctly, we are depending on the Singleton
property of the UserAPI for the enrolled courses cache? Does that mean when
the app is killed, the user will have to fetch the enrolled courses again?
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/edx/edx-app-android/pull/707#issuecomment-221102488

--
Regards,
Marc DiNino
Android Engineer
EDX

Something is definitely being written to disk from the course enrollments data if we are able to get the course enrollments when starting in offline mode.

Currently, in the Master if we perform the following tests the app crashes:

Turn WiFi on
Log in
Close app (swipe away from current tasks)
Turn WiFi off
Start app

Note that this does not happen in the version on Google Play Store. I will
figure out what the difference is.
On Tue, May 24, 2016 at 10:17 AM, Christopher Lee<EMAIL_ADDRESS>wrote:

Something is definitely being written to disk from the course enrollments
data if we are able to get the course enrollments when starting in offline
mode.
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/edx/edx-app-android/pull/707#issuecomment-221285312

--
Regards,
Marc DiNino
Android Engineer
EDX

https://github.com/edx/edx-app-android/blob/master/VideoLocker/src/main/java/org/edx/mobile/view/MyCourseListTabFragment.java#L90
Looks like another issue from the oauth rework. This should be a simple fix, should make this defensive.

Not every networking error includes a response status code. I think we should use separate exception types. Easy fix, I'll make a PR

Ran the following tests (each used a fresh install).

(With WiFi on) Started app, and refreshed course page (no crashes). Downloaded a video. Navigate to my videos and confirm that video is in All Videos and Recent Videos
(With WiFi on). Started app. Downloaded a video. Turned WiFi off. Navigate to my videos and confirm that video is in All Videos and Recent Videos.
(With WiFi on). Started app. Downloaded a video. Turned WiFi off. Close app (swipe from task manager). Start app again (confirm no crash). Navigate to Navigate to my videos and confirm that video is in All Videos and Recent Videos.

The AndroidMonitor did not show any issues in any test.
@BenjiLee Brian fixed the retrofit crash in PR 719 and it is merged. Can you review?

@mdinino I still can't see MyVideo in offline mode.

@BenjiLee Hold off. That last test does not success every time.

Yeah, I that last test didn’t pass every time. I think I might need your
help in 10 minutes or so.
On Tue, May 24, 2016 at 3:47 PM, Christopher Lee<EMAIL_ADDRESS>wrote:

@mdinino https://github.com/mdinino I still can't see MyVideo in
offline mode.
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/edx/edx-app-android/pull/707#issuecomment-221374796

--
Regards,
Marc DiNino
Android Engineer
EDX

OK @BenjiLee @brianguertin and @miankhalid I'm stuck.
If you look at getRecentDownloadedVideosList() and getDownloadedCoursesWithVideoCountAndSize() they seem to query a lot of information from api.getEnrolledCourses(). It seems odd to me that it needs so much but it does.
Anyway, in order to fully fix this, I need to write this information to the disk somehow. This is the only way to cover the case where a video is downloaded, WiFi is turned off, the app is restarted and the user navigates to my videos.
I was looking in Storage.java and it seems like it is storing info about videos in a DB. I don't know the best way to rearrange the DB to store the info that we need.
Like I said, I need direction.

@bguertin I need you help a bit.
I got a handle of the JSON string from the Retrofit client. The I tried to convert it to an object instance using
gson.fromJson(ret, new TypeToken<ArrayList>(){}.getType());
I also gort help from @aleffert to figure out the correct syntax.
I am getting a NoClassDefFoundError and can't figure out how to get past it at the moment. Any thoughts?

@BenjiLee Another pass please?

👍  Squash commits
Wait for @bguertin's 👍

Done with first pass :)

@brianguertin I'm ready for another pass

@bguertin OK. I moved the definition of the cache key to UserAPI. Can you do another pass?


Update

update elements. Closes #15 #16 - makes this package a bit more wieldy.
cc/ @emmak would this API work well for you?

updated
On Wed, Nov 30, 2016 at 8:22 PM Martin Lundberg<EMAIL_ADDRESS>wrote:

@marlun commented on this pull request.
In README.md
https://github.com/yoshuawuyts/cache-element/pull/18#pullrequestreview-10828386
:

-let el = renderEl('Tubi') // creates new element
-let el = renderEl('Tubi', 'Tubi') // returns cached element (proxy)
-let el = renderEl('Babs', 'Tubi') // creates new element

-function createEl (name, age) {

return html`

The person's name is ${name}

`
+var cache = require('cache-element')
+var html = require('bel')

+var element = Element()
+
+let el = element('Tubi') // creates new element
+let el = element('Tubi') // returns cached element (proxy)
+let el = element('Babs') // creates new element
Are you missing age parameter in these?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/yoshuawuyts/cache-element/pull/18#pullrequestreview-10828386,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACWleu3lZbY2FSGhqy5hGnM52NDOmgJVks5rDcz5gaJpZM4LAY6b
.

+1 on making the API a bit easier to use.

The times I've used widget, I've always had to store references outside my onupdate function (example). Now that onupdate and render are separate, will it still be possible to do that? (quite necessary for most things I think)

This is a breaking change to the API so I assume this will be a major version update, right?

With a major change like this, my thought goes to whether it will still work with things like leaflet, d3, codemirror, etc. -- I wonder if there's a way to verify that via tests?

v2.0.0
On Thu, Dec 1, 2016 at 3:01 PM Yoshua Wuyts<EMAIL_ADDRESS>wrote:

Merged #18 https://github.com/yoshuawuyts/cache-element/pull/18.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/yoshuawuyts/cache-element/pull/18#event-878494079,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACWleiJsBIcJv6icZ8lerBb-JZnnqJDBks5rDtMqgaJpZM4LAY6b
.


Scale, Normalize or Standardize ?

At the moment the features are standardized before the evaluation loops (mean removal and dividing by variance) with the following:
data_features = (data_features - data_features.mean()) / data_features.std() in master.py
And they are also normalized (mean removal and dividing by l2-norm) in each cross-validation fold with the following:
model = Ridge(normalize=True) in modeller.py
This is not optimal because:

Normalization cancels out Standardization in the Ridge regression
All data transformations should be done independantly in the cross-validation folds
Normalization is done for Ridge and not for the other models (this is not necessarly an issue)

Strangely for some configs (2000 for example) removing the normalization in the Ridge Regression impacts a lot the results (R2 from 20% to 0%)!
A possibility to implement more complexed transformations in cross-validation fold is to use the Pipeline class of sklearn. For example to perform scaling (between 0 and 1) and Ridge, we would do:
model = Ridge()
minmax_scaler = MinMaxScaler()
pipeline = make_pipeline(minmax_scaler, model)
scores = cross_val_score(pipeline, X, y)

However, my attempts to combine Normalization and Ridge in a piepline have led to very different results compared to using the normalize=True argument of the Ridge regression...

@lorenzori I changed the standardization (dividing by std) of the features to a max normalization (dividing by the max) to fix the problem of outliers in the features. The impact on R2 in Mali was minimum but this does not solve the problem of applying a different re-scaling between the evaluation and the scoring set.


Feature request : expose an API "is_enabled"

Dear the most awesome in-phone developer of all time,
could you expose an API like
require("markview").commands.is_enabled(buf)

Opps, wrong repo, posted on the markview


Common interface to cuBLAS

For a variant of my set of BLAS wrappers I had to incorporate support for NVIDIA's cuBLAS as well at some point, which requires usage of OpenACC to perform the copyin/copyout to the device. While cuBLAS mostly shares the BLAS API it is still a vendor extension to it.
Are you planning to support vendor specific extension to the BLAS/LAPACK API in this interface as well?

I believe it's in scope of this project as well, it would be nice to have hardware acceleration sharing the same interface or something really close to it. I've never tried myself but it seems doable.

I have a working implementation in one of my projects (https://github.com/grimme-lab/xtb/blob/master/src/mctc/blas/level3.F90) which I could contribute.

By the way it looks it can be definitely integrated! This OpenACC solves the non-thunking vs thunking performance thing? If so, the modification will be as simple as bellow:
#:def gemm(MFI_NAME,F77_NAME,TYPE,KIND)
pure subroutine ${MFI_NAME}$(a, b, c, transa, transb, alpha, beta)
@:parameter(integer, wp=${KIND}$)
@:args(${TYPE}$, in, a(:,:), b(:,:))
@:args(${TYPE}$, inout, c(:,:))
@:optional(character, in, transa, transb)
@:optional(${TYPE}$,  in, alpha, beta)
@:localvars(integer, m, n, k, lda, ldb, ldc)
@:defaults(transa='N', transb='N', alpha=1, beta=0)
    lda = max(1,size(a,1))
    ldb = max(1,size(b,1))
    ldc = max(1,size(c,1))
    m = size(c,1)
    n = size(c,2)
    if (transa_ == 'N' .or. transa_ == 'n') then
        k = size(a,2)
    else
        k = size(a,1)
    end if
#:ifdef USE_CUBLAS
   !$acc enter data copyin(a, b, c)
   !$acc host_data use_device(a, b, c)
   call ${CU_NAME}$(transa_, transb_, m, n, k, alpha_, a, lda, b, ldb, beta_, c, ldc)
   !$acc end host_data
   !$acc exit data copyout(c) delete(a, b)
#:else
    call ${F77_NAME}$(transa_,transb_,m,n,k,alpha_,a,lda,b,ldb,beta_,c,ldc)
#:endif
end subroutine
#:enddef

Of course, we need to adapt some of the macros, but it seems really feasible.

I've created a small POC to start addressing this issue. I've tried to use OpenACC, installed HPC SDK from Nvidia (PGI compilers) but it seems slower than using the C functions provided. I don't think those interfaces are good enough either, because I had to add a -fallow-argument-mismatch flag and drop the pure keyword in order to compile and run. There's also the issue of recompiling the library to have GPU support, I think that maybe relying on a environment variables (let's say MFI_USE_GPU=1 or MFI_USE_CUDA=1) could be better.
Possible next experiments

Write my own pure Fortran C bindings to cuBLAS
Environment Variables to switch between CPU and GPU
Use OpenACC with GCC

OpenACC raw results
pgfortran -fast -O2 -acc=gpu -ta=tesla:keepgpu -Minfo=accel -cudalib=cublas -o cublas-openacc cublas-openacc.f90
cublas_openacc:
     28, Generating enter data copyin(b(:,:),a(:,:))
         Generating enter data create(c(:,:))
     34, Generating exit data delete(a(:,:),b(:,:))
         Generating exit data copyout(c(:,:))
/sbin/ld: aviso: /opt/nvidia/Linux_x86_64/21.1/compilers/lib/nvhpc.ld contém seções de saída; você se esqueceu de -T?
gcc -O2 -I/opt/cuda/include -c -DCUBLAS_GFORTRAN /opt/cuda/src/fortran.c
gfortran -O2 -L/opt/cuda/lib64 -fno-second-underscore cublas-pointers.f90 fortran.o -o cublas-pointers -lcublas
./cublas-openacc
 Matrix A          2048 x         2048
 Matrix B          2048 x         2048
Elapsed time (CPU): 1.1448 secs, 15.007 Gflops
Elapsed time (GPU): 0.28931 secs, 59.382 Gflops
 L2   0.6339598     is almost equal?   T GFlops ratio:    3.956804
./cublas-pointers
 Matrix A         2048 x        2048
 Matrix B         2048 x        2048
Elapsed time (CPU): 0.57143 secs, 30.065 Gflops
Elapsed time (GPU): 0.12286 secs, 139.83 Gflops
 L2  0.628926039     is almost equal?  T GFlops ratio:   4.65096664

It seems the CPU time of the PGI compiler is 2x slower than the GCC one, so it's not OpenACC's fault
POC test results

matrix size 4096 x 4096, double precision

Method
Time in seconds

matmul
8.80964279

mfi_gemm CPU
9.53729057

mfi_gemm GPU
5.86877346

matmul and transpose
42.8804779

mfi_gemm, with transa='T' CPU
9.44127655

mfi_gemm, with transa='T' GPU
5.88764954

My Specs

prop
value

OS
Arch Linux x86_64

kernel
5.11.16-arch1-1

CPU
Intel i5-7200U (4) @ 2.500GHz

GPU
NVIDIA GeForce 940MX


Error!! when build package

I cannot build package. What should i do?

ubuntu 22.04LTS
ros2 humble
and ryzen 5 + rtx 3060

┆Issue is synchronized with this Jira Task by Unito

Hmmm. sm_multi_stage_1 is a very large state machine, makes me think that there is sometime of timeout set on the compiler.
Options...

Run colcon again - sometimes this works.
Fork and remove sm_multi_stage_1 from the reference library
Check the log files and post here. Should be somewhere like: log/latest/sm_multi_stage_1/stout.log

That is a memory limit issue.
Use:
colcon build --parallel-workers 1
Also close other unnecessary processes

@PoommipatWat did the colcon build --parallel-workers 1 on a quiet system end up working?


[bug] New Account "You don't have access to Omni Web"

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior
Authorization error when logging in for new trial:

Expected Behavior
Access to the trial
Steps To Reproduce

Sign up for the trial
Wait for email link
Click link
Sign in using Google or GitHub (I tried both)

What browsers are you seeing the problem on?
Firefox, Chrome
Anything else?
No response

Hi @mthird . Does this go away with a page refresh?

Hi @mthird . Does this go away with a page refresh?

No, it doesn't.

Hi @mthird, in the logs I can see your initial login attempt and it failed due to a key expiry.
Can you ensure your system clock is synced and not off by more than a few minutes?

Also, if you need to update your system clock, then you will need to clear the browser cache for Omni before attempting to log in again.

My system clock is synced correctly.   I tried clearing cookies/session storage and logging in again but to no avail.

Hi @mthird. We are looking into this now. Are you on our Slack?

on it now ...


fix: increasing sqlite db cursor and size limit

@jansegre tested this solution in his Android, and it worked fine.


Calico-node segmentation fault due to unable to read directory /etc/service/

calico-node daemonsets have been in crashing after upgrade from older calico version (v<IP_ADDRESS> -> v3.21.4). Notably this is going from without tigera-operator based install to with it.
calico-node logs:
...
/etc/rc.local: line 37: 28 Segmentation fault (core dumped) cp -a /etc/service/available/felix /etc/service/enabled/
/etc/rc.local: line 40: 34 Segmentation fault (core dumped) cp -a /etc/service/available/monitor-addresses /etc/service/enabled/
/etc/rc.local: line 43: 42 Segmentation fault (core dumped) cp -a /etc/service/available/allocate-tunnel-addrs /etc/service/enabled/
/etc/rc.local: line 46: 43 Segmentation fault (core dumped) cp -a /etc/service/available/node-status-reporter /etc/service/enabled/
CALICO_NETWORKING_BACKEND is none - no BGP daemon running
/etc/rc.local: line 76: 44 Segmentation fault (core dumped) cp -a /etc/service/available/cni /etc/service/enabled/
Calico node started successfully
runsvdir /etc/service/enabled: warning: unable to read directory /etc/service/enabled: file does not exist
runsv monitor-addresses: fatal: unable to start ./run: file does not exist
runsv allocate-tunnel-addrs: fatal: unable to start ./run: file does not exist
runsv node-status-reporter: fatal: unable to start ./run: file does not exist
runsv cni: fatal: unable to start ./run: file does not exist
runsv felix: fatal: unable to start ./run: file does not exist
runsv monitor-addresses: fatal: unable to start ./run: file does not exist
runsv allocate-tunnel-addrs: fatal: unable to start ./run: file does not exist
runsv node-status-reporter: fatal: unable to start ./run: file does not exist

Expected Behavior
No problems with calico-node running, not crashing at least :)
Current Behavior
Logs above, main problem is it seems to be looking for directory /etc/service which does not exist.
Also possibly related, calico-kube-controller was crashing until it was moved to a new node.
Possible Solution
Re-imaging nodes after upgrade mitigated this.
Steps to Reproduce (for bugs)
Upgrade from Calico v<IP_ADDRESS> -> v3.21.4.
Your Environment

Calico version: v<IP_ADDRESS> -> v3.21.4
Orchestrator version (e.g. kubernetes, mesos, rkt): Kubernetes
Operating System and version: Linux, AKS
Link to your project (optional):

Full logs here:
[INFO][8] startup/startup.go 397: Early log level set to info
[INFO][8] startup/utils.go 126: Using NODENAME environment for node name aks-system-15539781-vmss000000
[INFO][8] startup/utils.go 138: Determined node name: aks-system-15539781-vmss000000
[INFO][8] startup/startup.go 99: Starting node aks-system-15539781-vmss000000 with version v3.21.4
[INFO][8] startup/startup.go 402: Checking datastore connection
[INFO][8] startup/startup.go 426: Datastore connection verified
[INFO][8] startup/startup.go 109: Datastore is ready
[INFO][8] startup/startup.go 714: Using autodetected IPv4 address on interface eth0: <IP_ADDRESS>/26
[INFO][8] startup/startup.go 646: FELIX_IPV6SUPPORT is false through environment variable
[INFO][8] startup/startup.go 209: Using node name: aks-system-15539781-vmss000000
[INFO][8] startup/utils.go 94: removed shutdown timestamp timestamp="2022-02-25T00:12:43Z"
/etc/rc.local: line 37:    28 Segmentation fault      (core dumped) cp -a /etc/service/available/felix /etc/service/enabled/
/etc/rc.local: line 40:    29 Segmentation fault      (core dumped) cp -a /etc/service/available/monitor-addresses /etc/service/enabled/
/etc/rc.local: line 43:    30 Segmentation fault      (core dumped) cp -a /etc/service/available/allocate-tunnel-addrs /etc/service/enabled/
/etc/rc.local: line 46:    43 Segmentation fault      (core dumped) cp -a /etc/service/available/node-status-reporter /etc/service/enabled/
CALICO_NETWORKING_BACKEND is none - no BGP daemon running
/etc/rc.local: line 76:    44 Segmentation fault      (core dumped) cp -a /etc/service/available/cni /etc/service/enabled/
Calico node started successfully
runsvdir /etc/service/enabled: warning: unable to read directory /etc/service/enabled: file does not exist
runsv cni: fatal: unable to start ./run: file does not exist
runsv node-status-reporter: fatal: unable to start ./run: file does not exist
runsv monitor-addresses: fatal: unable to start ./run: file does not exist
runsv felix: fatal: unable to start ./run: file does not exist
runsv allocate-tunnel-addrs: fatal: unable to start ./run: file does not exist
runsv cni: fatal: unable to start ./run: file does not exist
runsv node-status-reporter: fatal: unable to start ./run: file does not exist
runsv monitor-addresses: fatal: unable to start ./run: file does not exist
runsv felix: fatal: unable to start ./run: file does not exist
runsv allocate-tunnel-addrs: fatal: unable to start ./run: file does not exist
runsv cni: fatal: unable to start ./run: file does not exist
runsv node-status-reporter: fatal: unable to start ./run: file does not exist
runsv monitor-addresses: fatal: unable to start ./run: file does not exist
runsv felix: fatal: unable to start ./run: file does not exist
runsv allocate-tunnel-addrs: fatal: unable to start ./run: file does not exist
runsv cni: fatal: unable to start ./run: file does not exist
runsv node-status-reporter: fatal: unable to start ./run: file does not exist
runsv monitor-addresses: fatal: unable to start ./run: file does not exist
runsv felix: fatal: unable to start ./run: file does not exist
runsv allocate-tunnel-addrs: fatal: unable to start ./run: file does not exist
runsv cni: fatal: unable to start ./run: file does not exist
runsv node-status-reporter: fatal: unable to start ./run: file does not exist
runsv monitor-addresses: fatal: unable to start ./run: file does not exist
runsv felix: fatal: unable to start ./run: file does not exist
runsv allocate-tunnel-addrs: fatal: unable to start ./run: file does not exist
runsv cni: fatal: unable to start ./run: file does not exist
runsv node-status-reporter: fatal: unable to start ./run: file does not exist
runsv monitor-addresses: fatal: unable to start ./run: file does not exist
runsv felix: fatal: unable to start ./run: file does not exist
runsv allocate-tunnel-addrs: fatal: unable to start ./run: file does not exist
runsv cni: fatal: unable to start ./run: file does not exist
runsv node-status-reporter: fatal: unable to start ./run: file does not exist
runsv monitor-addresses: fatal: unable to start ./run: file does not exist
runsv felix: fatal: unable to start ./run: file does not exist
runsv allocate-tunnel-addrs: fatal: unable to start ./run: file does not exist
runsv cni: fatal: unable to start ./run: file does not exist
runsv monitor-addresses: fatal: unable to start ./run: file does not exist
runsv felix: fatal: unable to start ./run: file does not exist
runsv node-status-reporter: fatal: unable to start ./run: file does not exist
runsv allocate-tunnel-addrs: fatal: unable to start ./run: file does not exist
runsv monitor-addresses: fatal: unable to start ./run: file does not exist
runsv cni: fatal: unable to start ./run: file does not exist
runsv felix: fatal: unable to start ./run: file does not exist
runsv node-status-reporter: fatal: unable to start ./run: file does not exist
runsv allocate-tunnel-addrs: fatal: unable to start ./run: file does not exist
runsv monitor-addresses: fatal: unable to start ./run: file does not exist
runsv cni: fatal: unable to start ./run: file does not exist
runsv felix: fatal: unable to start ./run: file does not exist
runsv node-status-reporter: fatal: unable to start ./run: file does not exist
runsv allocate-tunnel-addrs: fatal: unable to start ./run: file does not exist
runsv monitor-addresses: fatal: unable to start ./run: file does not exist
runsv cni: fatal: unable to start ./run: file does not exist
runsv felix: fatal: unable to start ./run: file does not exist
runsv node-status-reporter: fatal: unable to start ./run: file does not exist
runsv allocate-tunnel-addrs: fatal: unable to start ./run: file does not exist
runsv monitor-addresses: fatal: unable to start ./run: file does not exist
runsv cni: fatal: unable to start ./run: file does not exist
runsv felix: fatal: unable to start ./run: file does not exist
runsv node-status-reporter: fatal: unable to start ./run: file does not exist
runsv allocate-tunnel-addrs: fatal: unable to start ./run: file does not exist
runsv monitor-addresses: fatal: unable to start ./run: file does not exist
runsv cni: fatal: unable to start ./run: file does not exist
runsv felix: fatal: unable to start ./run: file does not exist
runsv node-status-reporter: fatal: unable to start ./run: file does not exist
runsv allocate-tunnel-addrs: fatal: unable to start ./run: file does not exist
runsv monitor-addresses: fatal: unable to start ./run: file does not exist
runsv cni: fatal: unable to start ./run: file does not exist
runsv felix: fatal: unable to start ./run: file does not exist
runsv node-status-reporter: fatal: unable to start ./run: file does not exist
runsv allocate-tunnel-addrs: fatal: unable to start ./run: file does not exist
runsv monitor-addresses: fatal: unable to start ./run: file does not exist
runsv cni: fatal: unable to start ./run: file does not exist
runsv felix: fatal: unable to start ./run: file does not exist
runsv node-status-reporter: fatal: unable to start ./run: file does not exist
runsv allocate-tunnel-addrs: fatal: unable to start ./run: file does not exist
runsv monitor-addresses: fatal: unable to start ./run: file does not exist
runsv cni: fatal: unable to start ./run: file does not exist
runsv node-status-reporter: fatal: unable to start ./run: file does not exist
runsv felix: fatal: unable to start ./run: file does not exist
runsv allocate-tunnel-addrs: fatal: unable to start ./run: file does not exist
runsv monitor-addresses: fatal: unable to start ./run: file does not exist
runsv felix: fatal: unable to start ./run: file does not exist
runsv cni: fatal: unable to start ./run: file does not exist
runsv node-status-reporter: fatal: unable to start ./run: file does not exist
runsv allocate-tunnel-addrs: fatal: unable to start ./run: file does not exist
runsv monitor-addresses: fatal: unable to start ./run: file does not exist
runsv felix: fatal: unable to start ./run: file does not exist
runsv cni: fatal: unable to start ./run: file does not exist
runsv node-status-reporter: fatal: unable to start ./run: file does not exist
runsv allocate-tunnel-addrs: fatal: unable to start ./run: file does not exist
runsv monitor-addresses: fatal: unable to start ./run: file does not exist
runsv felix: fatal: unable to start ./run: file does not exist
runsv cni: fatal: unable to start ./run: file does not exist
runsv node-status-reporter: fatal: unable to start ./run: file does not exist
runsv allocate-tunnel-addrs: fatal: unable to start ./run: file does not exist

/etc/rc.local: line 76: 44 Segmentation fault (core dumped) cp -a /etc/service/available/cni /etc/service/enabled/

This is pretty strange - it seems like the cp tool is segfaulting.
I'm curious, do you see this on clusters that are installed fresh rather than upgraded from a (very) old version?
May also be worth sharing a bit more detail on how Calico is installed and what exact steps you took to upgrade.

Have not seen this happen on new clusters, and even new nodes in this upgraded cluster did not hit this.
Upgrade process was essentially just applying the most recent operator manifest with manage-crds mode. So nothing out of the ordinary there (this is upgrade process always used in AKS).
Assuming the node was in a some unexpected state from previous processed, though it is years old node so a lot could've happen there. Might be impossible to figure out exactly what went wrong, but if you could shed some context about what might be going on, that would be helpful. Cause right now we are pretty stumped (never seen cp segfault 😄)

One last note on this for @caseydavenport. We were able to reprouce the cp failure on same node/image different pod that just slept while we exec'd in. The cp of /etc/service/available/felix would crash with -a but not with -R. So there may have been a corrupted symlink or attribute in that image? We've lost or repro for now but may see it again as customer that got this has one more cluster.

Yeah perhaps something was corrupted in that particular image on that node, but not sure how that would have happened.
I'm going to close this one for now since I don't really see signs of this being a Calico bug, but if you end up reproducing again and find some new info please shout and we can re-open it.

We had another customer hit something vaguely similiar on another calico patch upgrade (1.28.0 -> 1.28.13 ) except this time it was mkdir cannot create direct /etc/service/enabled and then nunvsdir not being able to stat it until failure.
We're pretty sure the /etc/service directory is not shared with the host filesystem in someway?


DPU IP debug performance counters

I am currently working with the DPUCZDX8G IP, v3.4 and v4.0. I noticed that there are 9 registers per DPU core not documented in PG338 (up to
latest version v4.0).
These are perfomance counters and have debug purposed for the IP engineers as discussed in a mail exchange with the source maintainer, Ye Yang. Who also pointed me here.
All the documentation I could find is in the source code of the header file of dpu.ko kernel module, available in the linux-xlnx GitHub repo
(https://github.com/Xilinx/linux-xlnx/blob/master/drivers/misc/xlnx_dpu.h). In particular, this file contains:

the offset mapping macros: DPU_P_END_C, DPU_C_END_C, ..., DPU_CYCLE_H;
a brief description of "struct ioc_kernel_run_t", for the fields: counter, cend_cnt, send_cnt, ..., lstart_cnt.

Is it possible find some more detailed documentation of these registers?
In particular, I am interested in:

primarly, semantics of "misc", "conv", "load" and "save" registers, namely the operations they count;
difference between "start" and "end" values;
consistency properties (e.g., when are these registers updated w.r.t the corresponding operations).

Thanks for the support.

Hi @MaistoV
So far as I know, there is no document described these registers.

Closing since no activity for more than 1 month, please reopen if you still have any questions, thanks


newlines in  tags shouldn't get removed

Just noticed when reading https://aaronparecki.com/2018/02/07/7/indieauth in my feedreader (@aaronpk uses granary to provide an Atom feed) that the contents of
 tags also get their newlines stripped and thus the code examples are missing them.
Given that granary doesn't seem to need to parse the HTML anywhere I totally get if this is WON'T FIX. Given that the microformats parser returns the newlines as they are it also seems to be the wrong place to handle this(?)
(Ref #80 for why newlines are stripped)

After further reading it seems like if at the end of the process the feed generation could know if the source text is HTML or plain text this could be solved by keeping HTML unmodified, but the Activitystreams 1 format does not support keeping that distinction? Changing this seems more realistic, but still quite a bit of effort.
https://github.com/snarfed/granary/blob/0fb9d68dc7459a307a725f111c70d3b884601525/granary/microformats2.py#L385

Just want to point out that I may have some problems with my own HTML/newline handling right now. Right now my HTML has newlines but no
 tags, and I use css to get the whitespace to show up right. That means any consumers treating it as HTML will not see the newlines, since literal newlines in HTML are not significant. I think I'm going to need to update how my site handles newlines in general.

thanks for filing @sknebel, and for the in depth sleuthing! whee, whitespace handling. always entertaining. i'll take a look soon.

for my own notes: @aaronpk may be right above about his HTML in general, but for this specific case, the offending content is indeed inside
s, which granary could still theoretically detect and preserve.

Some more thoughts, both assuming keeping AS1 as the central format:

Since AS1 generally assumes HTML for content, plain text properties could be turned to HTML on the input conversion in a way that transparently converts back on text-only outputs.

Several Python templating libraries have a concept of special string interface for HTML (e.g. available as Jinja.Markup or in MarkupSafe which does not get escaped on output, so the object could know if it contains HTML or not.

i don't regret tackling this just yet...but i'm sure i will eventually. 🤣

thanks again for the ideas @sknebel. i handled this by adding a custom content_is_html property to AS1 when we generate it from HTML, and then use that to determine whether to strip newlines. we'll see what else breaks.


[Request] Fully opaque item pages option

The item pages are very slightly transparent. This slightly changes the color of any pictures i have in stuff like features for race pages and such depending on the scene that's open.
Is there any way there could be an option for fully opaque item pages aswell as anything similar like journals?

Implemented with: 1.6.1

Thank you so much for both!


Update of .deb file

How frequently is .deb file updated on website? Present .deb file lacks many basic features present in Github repo. Can the file be updated with the new version?

Doing so now.


trace for issue 1040

For issue https://github.com/OpenEnroth/OpenEnroth/issues/1040
in this trace a default party speaks to Gary Zimm.

Unfortunately the trace do not catches the bug


HTTP Proxy with prepared request (honouring env. var.)

Running the following it looks like the proxy env. var. is not honoured:
>>> # requests version 2.2.1 / python 3.4.0
>>> import requests
>>> import os
>>> os.environ['HTTP_PROXY'] = 'http://some.wrong.dns.example.org'
>>> req = requests.Request('GET', 'http://httpbin.org/get')
>>> r = req.prepare()
>>> s = requests.Session()
>>> s.send(r)
<Response [200]>

Is it the expected behaviour with the lower level interface ?
I was actually expecting request to transparently use HTTP_PROXY as it does with the main interface requests.get() or requests.request('GET',...).
Cheers

It's certainly the coded behaviour: if you don't use something that goes through Session.request then you never get the environment variables.
However, I think this is unexpected. It doesn't seem like there's any reason we couldn't move the call to Session.merge_environment into Session.send, so I'm inclined to say we should do that. Unfortunately, it's a bit backward-incompatible IMO, so I'd want to sit on this until 2.9.0 or, more likely, 3.0.0. Thoughts @sigmavirus24?

OTOH such isolation from the environment could be desirable and the reason someone uses prepared requests in the first place.

So we explicitly made merge_environment_settings a public method which could be used by people taking advantage of the PreparedRequest flow. Perhaps we never quite documented it very well when we added it, but I'm not really for moving most of the logic into send because then someone's going to want something that does far less than send does and we will be wanting to move things back into Session.request. I think the existing behaviour is fine. We probably just need to document merge_environment_settings as a potential part of the Prepared Request flow.

Sounds reasonable to me.

Alright, thanks for the clarification.
Then how should I use merge_environment_setting in order to merge only HTTP proxies var ?
Is this correct ?
>>> import requests
>>> import os
>>> os.environ['HTTP_PROXY'] = 'http://some.wrong.dns.example.org'
>>> req = requests.Request('GET', 'http://httpbin.org/get')
>>> r = req.prepare()
>>> s = requests.Session()
>>> settings = s.merge_environment_settings(req.url, {}, None, False, None)
>>> s.send(r, **settings)
# => should raise a gaierror because of wrong proxy in os.environ

@sigmavirus24 : I agree, the existing behavior is fine, It just lacks some precision in the documentation though.

@mxjeff right, that's why I said we probably need to document it better.
Also your code sample is correct.


SASL external with TLS client certs

New user of this great lib. I've read the issues and docs and am pretty sure this is not supported, but wanted to check anyway.
I need to use LDAP (as a client) over ldaps:// where the tlsOptions contain a key and cert for TLS client authentication. I.e. the LDAP server (the peer) will verify my LDAP client via TLS client authentication.
But I want this TLS client auth to be used with the "SASL EXTERNAL mechanism" (page 29 in https://docs.ldap.com/specs/rfc4422.txt).
As far as I can understand, this is something I can currently achieve with ldapsearch by supplying the -Y EXTERNAL.
So with all that in mind, since ldapjs already supports TLS using client cert/key, is it possible for it to use -Y EXTERNAL so that they are also used as the SASL mechanism "EXTERNAL"?

We use the standards TLS socket from Node core. If that doesn't support what you are asking for, then we do not support it.

Is there a plan to support the above scenario?

If you'd like to send a pull request to implement such a feature, sure. Remember to add unit tests.

I could possibly do it, or some other hero who steps in. Could you give a pointer on where I would add that feature?
In ldapsearch it is quite simple with the -Y EXTERNAL flag but I assume it is not as straight-forward here.

That would be part of implementing the feature -- determining how to implement it.

👋
On February 22, 2023, we released version 3 of this library. As a result, we are closing this issue/pull request.
Please see issue #839 for more information, including how to proceed if you feel this closure is in error.


verify {input} is used by target_env or target_options in coverage task

See also: #925. I think we'd prefer to validate this at the service layer, though, when creating the task.

@ranweiler, this was more specifically to check for the local fuzzing mode.  I agree the service should handle this on task creation which is why I left #925 open.


Mixpanel tracking improvements

Closes #2698

Other improvements in this PR:

Confirmation Dialog result was previously not tracked properly (only in TokenFunctionActivity and SwapActivity). Moved the implementation to CreateTransactionInteract to track every sign and send transaction. Partially closes items in #3028, as some properties require more tinkering to track.
Created UserProperties object under Analytics to consolidate items

Moved to #3186


Missing Texture(2) error

I am getting "Missing Texture(2)" errors for "bee_nest" and "end_brick_stairs" and I can find no documentation for fixing these errors.
I got the latest vanilla texture pack, I put the textures/blocks folder and the the two json files. textures/terrain_texture.json and textures/item_texture.json into the papyrus/textures folder, but this doesn't seem to help.

@qole Not sure about end_brick_stairs but the bee textures are working in the latest release from master. I can't find the end brick stairs textures in the Vanilla resource pack.

assembled a quick test on my realm, and validated it with the self-compiled version of commit #cc32985.
Screenshot attached. (end blocks included, slabs, blocks, stairs and the end blocks themselves.
Everything seems good to go, as this all seems resolved.

Installed 0.5.1 update on my linux server.
This is all working correctly.
This @bennydiamond I believe this can be closed as "resolved".

I agree, this is resolved under the latest Linux version. Also the new nether blocks are all there.


Search > Distance between Search field and toolbar/keyboard

Like already mentioned in https://github.com/alialbaali/Noto/issues/73#issuecomment-1577578891, there's currently a gap between the search input field and Noto's toolbar/the keyboard, respectively. This is wasted space on smaller devices, regretfully, but also lets whole lines of text flicker through these elements while scrolling or editing the text, which is distracting from writing.
Additionally, the search field makes it hard to differentiate it from the background when the theme is set to dark or black, as there's no shadow possible like in the light theme nor is there a border to indicate the search box's dimensions.
In the writing/searching-situation depicted in the screenshot below you have four stripes of text elements that have to be interpreted and told apart:

the main text
the search term (ein)
the -superfluous- line of text blinking through (Obgleich ihn […])
the text proposals on the keyboard's top bar (einer | eine | einem)

Solutions: See below image

The changes that would save space and make it easier to keep track of what is what and not get distracted by flickering text would comprise of

eliminating the gap between the search field and Noto's toolbar/the keyboard
lighting up the search bar's background colour cautiously in order to make it distinguishable from the page's background
making the search bar full width in order to style it more appealing, now the gap is closed.

Thank you for creating the issue!
I've been trying to find a good way to redesign the search by relying on the pain points you have mentioned. However, I couldn't find an elegant way to do so. Meaning, I tried to remove the elevation, keep the elevation, change the background, combine the bottom toolbar with the search, but none of them worked well, or looked great.
So, I decided to move the search bar to the top, specifically, below the toolbar. Now, the only issue I see is that, it might be harder to reach, opposed to having the search bar at the bottom. On the positive side, moving the search bar to the top would result in having all the filtering "criteria" to be at the top along with labels. Also, most Android apps have the search bar at the top, which might be a good decision to move in this direction.
Here's a screenshot on how it might look (feedback is appreciated):

All good and valid points to move the search field up. Plus: The search button is still within thumb's reach and the keyboard opens without moving hands, the cursor sitting in the necessary position. And the page is looking tidy. Would be interesting to see how an opened note is looking now.

Great to hear that! I'll go ahead an implement it.

Here's how Find in Note is going to look like:

Hope it resolves all the concerns you have addressed.

From the looks: Really nice! I would have to try scrolling and see whether the gap is opaque now or not. One grain of complaint though: there's still quite some  non usable screen real estate between the search field and the label buttons, and it looks as if it's still around a line of text high.

The gap is actually necessary since the search bar remains visible when scrolling, and it needs to be elevated along with the top bar. If I remove the gap, it wouldn't look right.

Ah, all right, I hadn't thought about the labels being taken to the top when scrolling, as I see now in your screenshot.

Any thoughts?

Looks good and organic, and - best of all - no more distracting text flickering through. Thanks!


Add link to scoring guide in search jsdoc

Thanks for taking the time to do this, more documentation is always good.


Fixes for balance rounding bugs

Make it so that send function subtracts gas from amount sent

Round balance down to nearest cent

If balance is less than one cent but more than zero, display four decimal places. i.e. $0.002431919 -> $0.0024

Just want to write down what we spoke about yesterday:
We are going to subtract the transaction cost from the display value. basically assuming that the transaction cost is never part of the balance of the user.


Use win32security package to set new file permission on Windows

Currently this module uses the oschmod module to set permissions of new files, but I believe that module might not be robust enough, so some users are experiencing unexpected behavior: https://github.com/Azure/azure-cli-extensions/issues/6613
I'm hoping that the win32security package will avoid future issues

This checklist is used to make sure that common guidelines for a pull request are followed.
Related command

General Guidelines

[ ] Have you run azdev style <YOUR_EXT> locally? (pip install azdev required)
[ ] Have you run python scripts/ci/test_index.py -q locally? (pip install wheel==0.30.0 required)

For new extensions:

[x] My extension description/summary conforms to the Extension Summary Guidelines.

About Extension Publish
There is a pipeline to automatically build, upload and publish extension wheels.
Once your pull request is merged into main branch, a new pull request will be created to update src/index.json automatically.
You only need to update the version information in file setup.py and historical information in file HISTORY.rst in your PR but do not modify src/index.json.

Thank you for your contribution! We will review the pull request and get back to you soon.


Adding metadata/labels to a route?

One question that occasionally arises at work is "how do we attach telemetry labels to a cowboy route?". We'd like to be able to attach arbitrary metadata to a route, and have it available in the cowboy_metrics_h callback.
Ideally, it would be an extra element in the route tuple, something like this:
    Dispatch = cowboy_router:compile([
        {'_', [
            {"/", cowboy_static, {priv_file, ?APPLICATION, "index.html"}},
            {"/users/:id", [{id, int}], the_user_h, [], #{labels => #{route => "/users"}}}
        ]}
    ]),

...and would be picked up by the cowboy_router middleware and put in the env along with handler and handler_opts.
(to avoid ambiguity, if you wanted this, you'd have to explicitly specify constraints, possibly empty -- or maybe {Handler, Opts} would need to be a tuple in this case).
Does this seem like a good idea? Is there another way to do it right now?

I've been wracking my brains for ways to wrap cowboy_router:compile or the cowboy_router middleware, or to wrap the individual handlers, but I can't come up with anything that doesn't feel like a hack.

After some thought, I've come up with the following, which doesn't require any cowboy changes:

Replace the current Handler with a tuple, {Handler, HandlerOpts}
Replace the current HandlerOpts with HandlerMetadata.

Add a middleware that goes in between cowboy_router and cowboy_handler that does this:
execute(Req, Env = #{handler := {Handler, HandlerOpts}, handler_opts := Metadata}) ->
    Env2 = Env#{handler => Handler, handler_opts => HandlerOpts, handler_metadata => Metadata},
    {ok, Req, Env2}.

Getting handler_metadata into user_data where the metrics callback can see it is left as an exercise for the reader.


Clearing a terminal doesn't work if there's a scrollbar

Quick summary:

Clearing a terminal from within the terminal works inconsistently: only clears the last n lines where n is the terminal height. It should ideally work like the command "Terminal: Clear" (workbench.action.terminal.clearSelection).

Does this issue occur when all extensions are disabled?: Yes

VS Code Version: 1.75.0 (user setup)
OS Version: Windows_NT x64 10.0.19045

Steps to Reproduce:

Open the terminal (UNIX-like and Windows CMD both have the problem)
Use the command pallette and run "Terminal: Clear" (workbench.action.terminal.clearSelection) to remove the scrollbar
Type in any command (not filling up the vertical space completely) echo hi
Observe that there is still no scrollbar
Using the terminal, clear it (clear or "Control-L" on UNIX-like, cls for Windows CMD)
Observe that there is still no scrollbar
Type in any commands to fill up the terminal beyond its height printf '%s\n' {1..100}
Observe that there is now a scrollbar, and the previous output is still there
Using the terminal, clear it (clear or "Control-L" on UNIX-like, cls for Windows CMD)
Observe that there is still a scrollbar, and some of the previous output is still there

Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.75.0. Please try upgrading to the latest version and checking whether this issue remains.
Happy Coding!

The issue still remains. I've updated my comment.

/duplicate #134448


Add pastebin tip to create and edit thread pages

resolves #890

Thanks @faissaloux! Can you share some screenshots?

@driesvints sure

Thanks. Just made a few small changes.
Naming the pastebin route isn't necessary as that's a fallback that gets redirected. It's better to direct to the actual url.


Enforce length limit on validator info fields

User @what's_next?#1511 discovered that there is no length limit imposed on validator names, and uploaded the following validator definition to testnet 047-lysithea:
https://gist.github.com/plaidfinch/67b043b9569dbefcdc4db26adb80f070
As you can see, both the name and website fields contain a 29kB base64-encoded GIF, specifically this one:

We should enforce a reasonable maximum length limit for all fields in validator definitions, in consensus. We should also take this opportunity to check that any other freeform String fields that are user-controlled also have length maximums imposed.

Length limits are a good idea. In addition, once we implement fees, we should also have a per-byte fee for blockspace usage.

Let's bound the name, website, etc fields at 140 characters and the description at 280 characters.
Let's also scope this issue just to fixing the validator definitions to have bounds. We can do a general survey of other messages at a later point.


"Find all references" returns 3 identical results for an attribute

Repro'd on my machine as well.  Good catch!

FCS returns three FSharpSymbolUse which have different ItemOccurrences (Use, UseInAttribute, UseInType). We don't care about the occurrence type here, so we can distinct by symbol use range.

Fixed in https://github.com/Microsoft/visualfsharp/pull/2396


Add support for logs in sdk-node

Is your feature request related to a problem? Please describe.
With the recent implementation of logs, the purpose of sdk-node (of being the only single import) is no longer effective.
Describe the solution you'd like
Add support for logs in sdk-node library.
Describe alternatives you've considered
Additional context

@pichlermarc Can I please know whether this is in the plan or not? Is there any chat room where I can ask questions about this repo?

Hi @pichlermarc , as this issue is up for grabs , can I start working on it?

@psk001 sure, go ahead :slightly_smiling_face:  - it's yours :tada:

Great , I have set it up locally and running it . Could you please guide me a bit on how to proceed further ?

Great , I have set it up locally and running it . Could you please guide me a bit on how to proceed further ?

Sure. :slightly_smiling_face: First, you'll need to add @opentelemetry/api-logs and @opentelemetry/sdk-logs as dependencies in @opentelemetry/sdk-node (make sure to use the latest version 0.40.0 so that lerna links the package from the monorepo). You'd need to add a way to set a logRecordProcessor to NodeSDKConfiguration. Then in the SDKNode class, you can keep track of it and use that LogRecordProcessor to instantiate a LogRecordProvider in the SDKNode.start(). Then register it with the logs API (@opentelemetry/api-logs) and that should be it. :slightly_smiling_face: Metrics is already there and adding logs would be a similar approach, so you can look at how we instantiate metrics in @opentelemetry/sdk-node and use that as a way to guide you through the process. If you do that, you can ignore everything related to Views as that concept does not exist for logs.
Once that is done, you can add tests, and then you should be ready to open a PR. Once you open the PR, you'll have to sign the Contributor License Agreement (a bot will ask you for it), and then the approvers will review the PR. :slightly_smiling_face:

Got it, I'll proceed with it as suggested.

Sure. slightly_smiling_face First, you'll need to add @opentelemetry/api-logs and @opentelemetry/sdk-logs as dependencies in @opentelemetry/sdk-node (make sure to use the latest version 0.40.0 so that lerna links the package from the monorepo). You'd need to add a way to set a logRecordProcessor to NodeSDKConfiguration

This is added.
I'm using metric implementation as reference to implement logs as you said.
Metric uses MetricReader as shown below
`export type MeterProviderConfig = {
/**

Reference to the MetricReader instance by the NodeSDK
/
reader?: MetricReader;
/*
List of {@link View}s that should be passed to the MeterProvider
*/
views?: View[];
};`

Is logger in sdk-logs the right equivalent for MetricReader  in sdk-metrics ?
`export type LoggerProviderConfig = {
/**

Reference to the Logger instance by the NodeSDK
*/
logger?: Logger;
}`

is it correct?

Sure. slightly_smiling_face First, you'll need to add @opentelemetry/api-logs and @opentelemetry/sdk-logs as dependencies in @opentelemetry/sdk-node (make sure to use the latest version 0.40.0 so that lerna links the package from the monorepo). You'd need to add a way to set a logRecordProcessor to NodeSDKConfiguration

This is added. I'm using metric implementation as reference to implement logs as you said. Metric uses MetricReader as shown below
export type MeterProviderConfig = { reader?: MetricReader; views?: View[]; };
Is logger in sdk-logs the right equivalent for MetricReader in sdk-metrics ?
export type LoggerProviderConfig = { logger?: Logger; }
is it correct?

It would be the LogRecordProcessor actually (and that one has an exporter attached to it :slightly_smiling_face:)
export type LoggerProviderConfig = { logRecordProcessor?: LogRecordProcessor; }

OK got it, I missed that part.


4.4.0->4.5.0 include non backward compatible changes

Changing send to public_send is not backward compatible.
It is rather major change. Shouldn't it be reverted and released in major update (e.g. 5.0.0)?

Let's rather revert it back. A factory girl should know how stuff is build within the factory.

Given the revert complexity, I don't think it makes sense to do so now. I'd stick with 4.4, make whatever methods public (or remove the dependency on calling private methods), and upgrade when it makes sense.


Increase default MachineDeployment replicas to 2 for all non-AWS configs

What type of PR is this?
/kind cleanup
What this PR does / why we need it:
This PR increases default MachineDeployment replicas to 2 for all non-AWS Terraform configs. AWS configs are not changed because we create 3 MachineDeployments, one in each AZ.
The reason for this change is that some Kubernetes conformance tests are requiring 2 untainted nodes (i.e. worker nodes). Otherwise, the following test will fail:
[
    {
        "name": "[sig-architecture] Conformance Tests should have at least two untainted nodes [Conformance]",
        "status": "failed",
        "details": {}
    }
]

Does this PR introduce a user-facing change?:
Increases default MachineDeployment replicas to 2 for all non-AWS Terraform configs

/assign @kron4eg

/lgtm
/approve


"Default Activation Duration" should have more options / free input

It would be great if the "Default Activation Duration" had more options, like:

8 hours
10  hours

Or, even better, the possibility to enter a desired number of hours manually.

Absolutely! It really makes sense to have a fully customizable list for the durations. This could be integrated into the Preferences window.
Thanks for the suggestion 👍 I will consider this for the next feature release.

It would be great if the "Default Activation Duration" had more options, like:

8 hours
10  hours

Or, even better, the possibility to enter a desired number of hours manually.

As a real use case, those hours would be perfect because it matches up roughly with a regular work day.

Get in to the office
Wake up computer
Click cup icon
Do work all day
Don't have to re-wake computer and have all the windows and monitors get jumbled up
Go home at end of day
Have computer go to sleep

I can now confirm that a fully customizable menu of activation durations will be part of the next release. Thanks again for the suggestion and your patience 😸


Autoexpand all rows.

Is there an auto expand per grouped item?
I know there is an expandAllRows but it doesn't work seem to work right after loading data to the grid.

Potentially this is because you're calling expandAllRows before the grid has ingested them.

Ideally there would be an autoexpand option at creation.

I'm having this issue as well.
If I try to call gridApi.grouping.expandAllRows() after setting the data nothing happens.
I have also tried calling refresh and queueGridRefresh but neither seems to help, I have even tried placing expandAllRows plus refresh inside a timeout for a second after setting the data and it doesn't help.
I have also tried calling expandAllRows from inside a method on a button where I first change the grouping using gridApi.grouping.setGrouping() and then call gridApi.grouping.expandAllRows() and refreshing. That doesn't work the first time it is called, but interestingly if I hit the button a second time to change the grouping back to the first grouping or to clear the grouping it works and everything shows up expanded from then on.

Are you using a $timeout?  The selection tutorial gives an example of this - we load the data, do a $timeout or $interval, then we select the first row.  Expanding would be the same in terms of timing.

I think calling gridApi.core.clearAllFilters() right beforehand may have
been causing an issue too. When I had a $timeout with both clearAllFilters
and expandAllRows, the expandAllRows didn't have an effect. However calling
clearAllFilters and then putting expandAllRows inside of a $timeout
resolves the issue.
This is an unrelated issue, but I am calling clearAllFilters first because
the drop down filters I have created on three columns all have an empty
option selected by default when the grid loads, preventing any data from
showing up in the grid.
On Thu, May 21, 2015 at 5:48 PM, Paul<EMAIL_ADDRESS>wrote:

Are you using a $timeout? The selection tutorial gives an example of this

we load the data, do a $timeout or $interval, then we select the first
row. Expanding would be the same in terms of timing.

—
Reply to this email directly or view it on GitHub
https://github.com/angular-ui/ng-grid/issues/3466#issuecomment-104431644
.

OK, sure. so sounds like we can close?

I have put timeout to expandAllRows but still would prefer an auto-expand option. Also when I use tabs with ng-show the grid looses its expanded state and have to call expandAllRows each time I show the grid.

You can use saveState to manage the expanded state of the grid.

Thanks. I am still using RC21 but will check into that once I upgrade.

did you find solution because i have the same problem i want to expand all auto

@fatifleu "I think calling gridApi.core.clearAllFilters() right beforehand may have
been causing an issue too. When I had a $timeout with both clearAllFilters
and expandAllRows, the expandAllRows didn't have an effect. However calling
clearAllFilters and then putting expandAllRows inside of a $timeout
resolves the issue."


readme: minor typo fix

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.Nathan Dautenhahn seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

@pgoodman I hope such a PR is okay

Lol I just accepted a typo fix PR, but this one I am going to reject, not because it's not OK, but because I'm going to be merging a branch with a lot of dependency / bootstrap updates in not too long, and so I'll manually throw it in there because I'm clumsy with git.


ObsidiumSoftware.MonkeyMote4Foobar version <IP_ADDRESS>

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?
[x] This PR only modifies one (1) manifest
[x] Have you validated your manifest locally with winget validate --manifest <path>?

[x] Does your manifest conform to the 1.4 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

Hi @MysticCereal,
The application installed normally, but didn't install any executables, only these 2 files:
C:\Users\User\AppData\Roaming\foobar2000\user-components\foo_monkeymote\foo_monkeymote.dll
C:\Users\User\AppData\Roaming\foobar2000\user-components\foo_monkeymote\foo_monkeymote_uninstall.exe

Hi @stephengillie,
This is expected. The program is a "component installer" rather than a "program installer". The user installing this program should already know this beforehand.
It installs the component/plugin needed into the component folder of foobar2000, a media player, which is located by default at C:\Program Files\foobar2000\components. If foobar2000 isn't installed on the computer, it then falls back to installing them at %appdata%\foobar2000\user-components\.
This behavior is already noted in the manifest InstallationNotes: The component will by default be installed in either foobar2000\user-components in your application data folder or C:\Program Files\foobar2000\components. to remind users.

Hi @stephengillie,
This is expected. The program is a "component installer" rather than a "program installer". The user installing this program should already know this beforehand.
It installs the component/plugin into the component folder of foobar2000, a media player, which is located by default at %appdata%\foobar2000\user-components\.
This behavior is already noted in the manifest InstallationNotes: The component will by default be installed in either foobar2000\user-components in your application data folder or C:\Program Files\foobar2000\components. to remind users.

@wingetbot waivers Add Validation-No-Executables


Add .gni containing lists of files needed by GN

Currently we have to maintain lists of Emboss files for use in GN build targets in Pigweed, including the compiler python files and the cpp_utils headers. It would be much more maintainable if there was a .gni file in upstream Emboss containing these file lists.

I totally get why you want this, I'm just not sure how the emboss project will keep it up to date. We're currently only setup for bazel builds. Maybe adding a tool that can generate these files as part of the bazel build is what we want?

For concrete examples we have:

Pigweed's build_defs.gni
Fuchsia's build_defs.gni
An unlanded but being prototyped version for Android:

python_library_host {
    name: "emboss_compiler",
    srcs: [
        "compiler/back_end/cpp/*.py",
        "compiler/back_end/util/*.py",
        "compiler/front_end/*.py",
        "compiler/util/*.py",
    ],
    data: [
        "compiler/back_end/cpp/generated_code_templates",
        "compiler/front_end/error_examples",
        "compiler/front_end/prelude.emb",
        "compiler/front_end/reserved_words",
    ],
}

Additionally each of those has some sort of target for the C++ header library as well, something along the lines of:
pw_source_set("cpp_utils") {
  # emboss depends on a separate checkout not included in pigweed, so
  # ignore gn check for this module.
  check_includes = false
  public = [
    "$dir_pw_third_party_emboss/runtime/cpp/emboss_arithmetic.h",
    "$dir_pw_third_party_emboss/runtime/cpp/emboss_arithmetic_all_known_generated.h",
    "$dir_pw_third_party_emboss/runtime/cpp/emboss_arithmetic_maximum_operation_generated.h",
    "$dir_pw_third_party_emboss/runtime/cpp/emboss_array_view.h",
    "$dir_pw_third_party_emboss/runtime/cpp/emboss_bit_util.h",
    "$dir_pw_third_party_emboss/runtime/cpp/emboss_constant_view.h",
    "$dir_pw_third_party_emboss/runtime/cpp/emboss_cpp_types.h",
    "$dir_pw_third_party_emboss/runtime/cpp/emboss_cpp_util.h",
    "$dir_pw_third_party_emboss/runtime/cpp/emboss_defines.h",
    "$dir_pw_third_party_emboss/runtime/cpp/emboss_enum_view.h",
    "$dir_pw_third_party_emboss/runtime/cpp/emboss_maybe.h",
    "$dir_pw_third_party_emboss/runtime/cpp/emboss_memory_util.h",
    "$dir_pw_third_party_emboss/runtime/cpp/emboss_prelude.h",
    "$dir_pw_third_party_emboss/runtime/cpp/emboss_text_util.h",
    "$dir_pw_third_party_emboss/runtime/cpp/emboss_view_parameters.h",
  ]
  public_configs = [ ":disable_warnings" ]
  public_deps = [ pw_third_party_emboss_CONFIG ]
  visibility = [ "*" ]
}

So it'd be nice to cover that case too.

358665524 is an example of the kinds of bugs we run into. This is because Fuchsia builds require all inputs to listed - https://fuchsia.dev/fuchsia-src/development/build/hermetic_actions.

I created Pigweed issue Update emboss build rules to pull their file list from emboss repo [359386289] - Pigweed for the work that will need to happen in Pigweed alongside changes here in Emboss.

https://github.com/google/emboss/pull/171 provides a json file that handles this feature request.
I also filed https://github.com/google/emboss/issues/172 as a follow-up issue to keep bazel and the new build_info.json in sync.


Add external css workflow to test for changes

Task/Issue URL: https://app.asana.com/0/0/1204439154734750/f
Description
Steps to test this PR
Feature 1

[ ]
[ ]

UI changes

Before
After

!(Upload before screenshot)
(Upload after screenshot)

Current dependencies on/for this PR:

develop

PR #3084   👈

This comment was auto-generated by Graphite.


Temporary LOB segment in TEMP tablespace keep increasing

Environment
HikariCP version: 2.5.1
JDK version     : 1.8.0_111
Database        : Oracle
Driver version  : <IP_ADDRESS>

⚠ Please verify that your issue still occurs on the latest version of HikariCP before reporting.

Unfortunately we have a transitive dependency: akka-persistence-jdbc/3.5.0 -> slick-hikaricp_2.11/3.2.3 -> HikariCP/2.5.1

Have you searched the CLOSED issues already?

Found nothing.

How about checking stackoverflow?

Found nothing.
Problem
When using HikariCP we encountered a problem with Oracle TEMP tablespace - it keeps on increasing at a rapid rate without any significant pattern. TEMP tablespace only reduced after restarting our application.
That problem is well-known, an example from Oracle documentation:
SYMPTOMS
 The customer has recently started using the connection pool
and then the size of TEMP tablepsace keep increasing.
When we investigated v$tempseg_usage, the segment of the type of LOB_DATA increased.
...
The analysis of the issue is as follows
A Temp LOB was created when any SQL statement (or PLSQL statement) was executed on a Session.
After that, the corresponding session is returned to the connection pool after completion of the execution of the corresponding SQL statement.
However, because the session exit has not occurred, the Temp LOB used by the session still remains and is not released.
If the session is reassigned and new SQL statements that generate Temp LOBs are executed, the existing Temp LOB is not reused and new Temp LOB segments are created and used.
The temp LOB grows as the same cycle repeats over several sessions.
In this situation, Temp LOBs used in a specific session must be freed explicitly at the application level in order for the same session to reuse it.
Event 60025 was introduced to release Temp LOB segments used by one session for use by other sessions.
However, this is only possible if both the CACHE TEMP LOB and NOCACHE TEMP LOB counts are ZERO for the Temp LOB used.
Currently, although the event 60025 is set, the corresponding space is not released because the CACHE TEMP LOB count exists.
As a result, the solution of the issue is to perform the step of releasing Temp LOB explicitly after creating Temp LOB at the application level as long as the connection pool is used.
That will cause CACHE TEMP LOB not to exist.

SOLUTION
 If the session exit does not occur using the connection pool, the generated temp lob must be explicitly cleaned up by calling FREETEMPORARY on DBMS_LOB or OCIDurationEnd on OCI on the application of the session that created the segment.
Oracle Document "Database PL/SQL Packages and Types Reference" is described as follow
http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_lob.htm#ARPLS66616
A temporary LOB instance can only be destroyed by using OCI or the DBMS_LOB package by using the appropriate FREETEMPORARY or OCIDurationEnd statement.

Some examples of issues that we found:

Oracle TEMP Tablespace keeps on increasing on Oracle 11g and 12c
TEMP tablespace not cleared for sessions in Web Logic connection pool

It looks like problem is not Hikari specific, but common for connection pools. Can you give me some advice how to deal with this problem in HikariCP? Maybe some parameters to tune, common recommendations for using pool, etc.

@pavetok I would suggest setting a very low maxLifetime value.  The default value is 1800000ms (30 minutes).  The maxLifetime property can be set as low as 30 seconds (300000ms), but you may not need to set it so low.  It all depends on the rate of temp LOB creation in your application.
Basically, at least according to the Oracle documentations, temporary storage will not be released until "session exit" has occurred.  "Session exit" will only occur when the connection is retired from the pool.  Setting a maxLifetime to, for example, one minute (600000ms) will cause connections to be retired after one minute of residence in the pool.
Of course there is some overhead related to short lifetimes, as new connections must be established.  However, connection replacements occur in the background on a separate thread, so as long as your pool is not running with all connections constantly in-use, you may not experience any delays at all in connection acquisition from the pool.


Re-enable react/no-deprecated rule after its been adjusted

Right now react/no-deprecated warns multiple times over on deprecated lifecycle methods.
This behavior isn't very optimal -- we should file an issue with ESLint and ask them to remove it once a formal warning is added to React.

To be more precise, I don't think eslint-plugin-react would remove it (and the rule itself is useful) but I'd prefer to activate after React itself starts considering them deprecated (and the users have run the codemod).

Sure, that makes sense.

@gaearon @Timer Should this be enabled now?


Calendar show ends only with duration

I added a showEndsOnlyWithDuration calendar option to show only end times with a duration.

More details: https://forum.magicmirror.builders/topic/17380/calendar-event-same-start-and-enddate-wrong-google-calendar

@kleinmantara can you make the requested changes? Otherwise we will close this PR.

@rejas can you push it in another (temp) branch ?
Author seams not respond
I will see what can i do with this for v2.26
I can't make cross repo from it

@bugsounet
you can do git fetch origin pull/2968/head:local_branch which will fetch the PR in a local branch local_branch

sure but not in my fork ;)
I have found it's ok :)

sorry, this was an attempt to merge this on develop and do the changes on the original branch ...
So I will close this and present a new PR for this.


AFJ wallet interoperability

Aries Framework Javascript currently does not work with every mobile wallet. Contact wallet manufacturers for potential fix.

https://hackmd.io/GhRFUY2VTky4HeLQaqDkRw


Write test around Algolia page numbers being 0 indexed

For reference:
https://github.com/Rebuild-Black-Business/RBB-Website/pull/207

@racedale since we're no longer leveraging Algolia do we want to close this out? I believe the zero based indexing on pagination should no longer be an issue!

Yeah I think so


⚠ Samsung has degraded performance

In 40a38d2, Samsung (https://samsung.com) experienced degraded performance:

HTTP code: 200
Response time: 2609 ms

Resolved: Samsung performance has improved in 224947f.


acceptance test failing

I'm not quite sure how to go about acceptance testing using the JWT authorizer, maybe you could advise?
My acceptance test is set up thusly:
import Ember from 'ember';
import { module, test } from 'qunit';
import moduleForAcceptance from 'myapp/tests/helpers/module-for-acceptance';
import startApp from 'myapp/tests/helpers/start-app';

import { currentSession, authenticateSession, invalidateSession } from 'myapp/tests/helpers/ember-simple-auth';

moduleForAcceptance('Acceptance | login', {
  beforeEach: function() {
    this.application = startApp();
  },

  afterEach: function() {
    Ember.run(this.application, 'destroy');
  }
});

test('validate the session', function (assert) {

    authenticateSession(this.application);

    visit('/clients');

    andThen(function () {
        assert.equal(currentURL(), '/clients');
    });

});

However, the assertion fails, and in the browser dev tools I see that I get a 401 Response on the client route ('bad credentials'). I was simply following this gist: https://gist.github.com/ryanlabouve/c86bcfd1956a04d6d4f0c226528ce44b
Ember 2.5.0, ember-cli 1.13.8, ESA 1.0.1, ember-simple-auth-token 1.1.1
Thanks!

I'm having more or less the same problem, always getting the 401.
For the docs, we need to pass additional info for the token in the authenticateSession:
authenticateSession(app, sessionData): authenticates the session; the optional sessionData argument can be used to mock an authenticator response - e.g. a token.
But I'm adding the token response (sure I'm doing it wrong) with no success ...
thanks

This might be fixed in master.